You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by dk...@apache.org on 2016/01/05 18:14:30 UTC
[1/4] incubator-tinkerpop git commit: first prototype for
EdgeCopyVertexProgram
Repository: incubator-tinkerpop
Updated Branches:
refs/heads/TINKERPOP3-432 [created] 201b05af3
first prototype for EdgeCopyVertexProgram
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/4be5db12
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/4be5db12
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/4be5db12
Branch: refs/heads/TINKERPOP3-432
Commit: 4be5db12f943ae5e4d00d9bcb9259880cf445540
Parents: c4fcae6
Author: Daniel Kuppitz <da...@hotmail.com>
Authored: Mon Nov 9 11:12:15 2015 +0100
Committer: Daniel Kuppitz <da...@hotmail.com>
Committed: Mon Nov 9 11:12:15 2015 +0100
----------------------------------------------------------------------
.../edgecopy/EdgeCopyVertexProgram.java | 168 +++++++++++++++++++
1 file changed, 168 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/4be5db12/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/edgecopy/EdgeCopyVertexProgram.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/edgecopy/EdgeCopyVertexProgram.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/edgecopy/EdgeCopyVertexProgram.java
new file mode 100644
index 0000000..9d72997
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/edgecopy/EdgeCopyVertexProgram.java
@@ -0,0 +1,168 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.process.computer.edgecopy;
+
+import org.apache.commons.configuration.BaseConfiguration;
+import org.apache.commons.configuration.Configuration;
+import org.apache.commons.configuration.ConfigurationUtils;
+import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
+import org.apache.tinkerpop.gremlin.process.computer.Memory;
+import org.apache.tinkerpop.gremlin.process.computer.MessageScope;
+import org.apache.tinkerpop.gremlin.process.computer.Messenger;
+import org.apache.tinkerpop.gremlin.process.computer.VertexProgram;
+import org.apache.tinkerpop.gremlin.process.computer.util.AbstractVertexProgramBuilder;
+import org.apache.tinkerpop.gremlin.process.computer.util.StaticVertexProgram;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
+import org.apache.tinkerpop.gremlin.structure.Direction;
+import org.apache.tinkerpop.gremlin.structure.Edge;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.apache.tinkerpop.gremlin.structure.T;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
+import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedFactory;
+import org.apache.tinkerpop.gremlin.structure.util.wrapped.WrappedElement;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.Set;
+
+/**
+ * @author Daniel Kuppitz (http://gremlin.guru)
+ */
+public class EdgeCopyVertexProgram extends StaticVertexProgram<Edge> {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(EdgeCopyVertexProgram.class);
+
+ public static final String EDGE_COPY_VERTEX_PROGRAM_CFG_PREFIX = "gremlin.edgeCopyVertexProgram";
+
+ private final Direction direction;
+ private Configuration configuration;
+
+ private EdgeCopyVertexProgram() {
+ this.direction = Direction.OUT;
+ }
+
+ @Override
+ public void setup(final Memory memory) {
+ }
+
+ @Override
+ public void loadState(final Graph graph, final Configuration config) {
+ configuration = new BaseConfiguration();
+ if (config != null) {
+ ConfigurationUtils.copy(config, configuration);
+ }
+ }
+
+ @Override
+ public void storeState(final Configuration config) {
+ if (configuration != null) {
+ ConfigurationUtils.copy(configuration, config);
+ }
+ }
+
+ @Override
+ public void execute(final Vertex sourceVertex, final Messenger<Edge> messenger, final Memory memory) {
+ if (memory.isInitialIteration()) {
+ sourceVertex.edges(direction).forEachRemaining(edge -> {
+ final Object inVId = edge.inVertex().id();
+ LOGGER.info("send edge from " + sourceVertex.id() + " to " + edge.inVertex().id());
+ MessageScope messageScope = MessageScope.Local.of(() -> __.<Vertex>start().outE().filter(__.inV().hasId(inVId)));
+ messenger.sendMessage(messageScope, DetachedFactory.detach(edge, true));
+ });
+ } else if (memory.getIteration() == 1) {
+ final Iterator<Edge> ei = messenger.receiveMessages();
+ final Vertex inV = sourceVertex instanceof WrappedElement
+ ? (Vertex) ((WrappedElement) sourceVertex).getBaseElement() : sourceVertex;
+ final Graph sg = inV.graph();
+ while (ei.hasNext()) {
+ final Edge edge = ei.next();
+ if (sourceVertex.id().equals(edge.inVertex().id())) {
+ LOGGER.info("create edge from " + edge.outVertex().id() + " to " + sourceVertex.id());
+ final Object outVId = edge.outVertex().id();
+ final Iterator<Vertex> vi = sg.vertices(outVId);
+ final Vertex outV = vi.hasNext() ? vi.next() : sg.addVertex(T.id, outVId);
+ final Edge clonedEdge = outV.addEdge(edge.label(), inV);
+ edge.properties().forEachRemaining(p -> clonedEdge.property(p.key(), p.value()));
+ }
+ }
+ }
+ }
+
+ @Override
+ public boolean terminate(final Memory memory) {
+ return memory.getIteration() == 1;
+ }
+
+ @Override
+ public Set<String> getElementComputeKeys() {
+ return Collections.emptySet();
+ }
+
+ @Override
+ public Set<MessageScope> getMessageScopes(final Memory memory) {
+ return Collections.emptySet();
+ }
+
+ @Override
+ public GraphComputer.ResultGraph getPreferredResultGraph() {
+ return GraphComputer.ResultGraph.NEW;
+ }
+
+ @Override
+ public GraphComputer.Persist getPreferredPersist() {
+ return GraphComputer.Persist.EDGES;
+ }
+
+ @Override
+ public String toString() {
+ return StringFactory.vertexProgramString(this, "direction=" + direction);
+ }
+
+
+ public static Builder build() {
+ return new Builder();
+ }
+
+ public static class Builder extends AbstractVertexProgramBuilder<Builder> {
+
+ private Builder() {
+ super(EdgeCopyVertexProgram.class);
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public EdgeCopyVertexProgram create(final Graph graph) {
+ ConfigurationUtils.append(graph.configuration().subset(EDGE_COPY_VERTEX_PROGRAM_CFG_PREFIX), configuration);
+ return (EdgeCopyVertexProgram) VertexProgram.createVertexProgram(graph, configuration);
+ }
+ }
+
+ @Override
+ public Features getFeatures() {
+ return new Features() {
+ @Override
+ public boolean requiresLocalMessageScopes() {
+ return true;
+ }
+ };
+ }
+}
[3/4] incubator-tinkerpop git commit: Merge branch 'master' of
https://git-wip-us.apache.org/repos/asf/incubator-tinkerpop into
TINKERPOP3-432
Posted by dk...@apache.org.
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/incubator-tinkerpop into TINKERPOP3-432
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/eb50570f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/eb50570f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/eb50570f
Branch: refs/heads/TINKERPOP3-432
Commit: eb50570f9512b4621ecd9cf32e9ad655a42f9d80
Parents: caebf26 46c7189
Author: Daniel Kuppitz <da...@hotmail.com>
Authored: Tue Jan 5 15:20:51 2016 +0100
Committer: Daniel Kuppitz <da...@hotmail.com>
Committed: Tue Jan 5 15:20:51 2016 +0100
----------------------------------------------------------------------
.travis.yml | 5 +-
CHANGELOG.asciidoc | 254 +++++-----
README.asciidoc | 12 +-
bin/validate-distribution.sh | 4 +-
docs/src/dev/developer/contributing.asciidoc | 54 ++-
docs/src/dev/developer/meetings.asciidoc | 194 ++++----
docs/src/dev/developer/release.asciidoc | 5 +-
.../src/reference/gremlin-applications.asciidoc | 139 +++++-
docs/src/reference/implementations.asciidoc | 37 +-
docs/src/reference/intro.asciidoc | 23 +-
docs/src/reference/the-graph.asciidoc | 68 +--
docs/src/reference/the-graphcomputer.asciidoc | 11 +-
docs/src/reference/the-traversal.asciidoc | 38 +-
.../tutorials/getting-started/index.asciidoc | 52 +-
.../upgrade/release-3.0.x-incubating.asciidoc | 28 +-
.../upgrade/release-3.1.x-incubating.asciidoc | 149 ++++--
docs/static/images/business-gremlin.png | Bin 0 -> 412520 bytes
.../images/modern-edge-1-to-3-1-gremlin.png | Bin 11607 -> 12720 bytes
docs/static/images/modern-edge-1-to-3-1.png | Bin 3210 -> 3887 bytes
.../images/modern-edge-1-to-3-2-gremlin.png | Bin 17029 -> 18052 bytes
docs/static/images/modern-edge-1-to-3-2.png | Bin 4420 -> 3784 bytes
.../images/modern-edge-1-to-3-3-gremlin.png | Bin 20948 -> 22258 bytes
docs/static/images/modern-edge-1-to-3-3.png | Bin 7372 -> 5800 bytes
docs/static/images/quantum-gremlin-full.png | Bin 0 -> 1877990 bytes
giraph-gremlin/pom.xml | 18 +-
.../groovy/plugin/GiraphGremlinPlugin.java | 1 -
.../process/computer/GiraphGraphComputer.java | 11 +-
.../src/test/resources/log4j-silent.properties | 23 +
.../src/test/resources/log4j-test.properties | 23 +
gremlin-console/conf/log4j-console.properties | 15 +-
gremlin-console/pom.xml | 6 +
.../tinkerpop/gremlin/console/Console.groovy | 20 +-
.../src/test/resources/log4j-silent.properties | 23 +
.../src/test/resources/log4j-test.properties | 21 +
gremlin-core/pom.xml | 6 +
.../computer/bulkloading/BulkLoader.java | 8 +-
.../bulkloading/BulkLoaderVertexProgram.java | 11 +-
.../bulkloading/IncrementalBulkLoader.java | 8 +-
.../computer/bulkloading/OneTimeBulkLoader.java | 109 +++++
.../peerpressure/PeerPressureVertexProgram.java | 5 +-
.../gremlin/process/traversal/Order.java | 28 +-
.../gremlin/process/traversal/Traverser.java | 9 +
.../traversal/dsl/graph/GraphTraversal.java | 20 +-
.../process/traversal/step/map/MatchStep.java | 56 ++-
.../traversal/step/map/SelectColumnStep.java | 68 ---
.../traversal/step/util/ComputerAwareStep.java | 2 +-
.../traversal/step/util/FunctionComparator.java | 56 +++
.../IncidentToAdjacentStrategy.java | 8 +-
.../traversal/traverser/O_Traverser.java | 37 ++
.../traverser/util/EmptyTraverser.java | 6 +
.../tinkerpop/gremlin/structure/Column.java | 42 +-
.../tinkerpop/gremlin/structure/Element.java | 2 +-
.../structure/io/gryo/GryoClassResolver.java | 2 +-
.../gremlin/structure/io/gryo/GryoMapper.java | 25 +-
.../apache/tinkerpop/gremlin/TestHelper.java | 76 ++-
.../traversal/step/map/MatchStepTest.java | 15 +-
.../sideEffect/LambdaSideEffectStepTest.java | 7 +-
.../tinkerpop/gremlin/structure/io/IoX.java | 5 +
.../gremlin/structure/io/IoXIoRegistry.java | 57 +++
.../tinkerpop/gremlin/structure/io/IoY.java | 5 +
.../gremlin/structure/io/IoYIoRegistry.java | 39 ++
.../structure/io/gryo/GryoMapperTest.java | 113 +++++
.../src/test/resources/log4j-silent.properties | 23 +
.../src/test/resources/log4j-test.properties | 21 +
.../tinkerpop/gremlin/driver/Cluster.java | 24 +
.../tinkerpop/gremlin/driver/Settings.java | 17 +-
.../AbstractGraphSONMessageSerializerV1d0.java | 5 +-
.../driver/ser/AbstractMessageSerializer.java | 82 ++++
.../driver/ser/GryoMessageSerializerV1d0.java | 49 +-
...raphSONMessageSerializerGremlinV1d0Test.java | 5 +-
.../ser/GraphSONMessageSerializerV1d0Test.java | 60 +++
.../ser/GryoMessageSerializerV1d0Test.java | 115 ++++-
.../src/test/resources/log4j-silent.properties | 23 +
.../src/test/resources/log4j-test.properties | 21 +
.../step/branch/GroovyLocalTest.groovy | 2 +-
.../traversal/step/map/GroovyOrderTest.groovy | 8 +-
.../traversal/step/map/GroovySelectTest.groovy | 2 +-
.../gremlin/groovy/GroovyEnvironmentSuite.java | 2 +
...remlinGroovyScriptEngineFileSandboxTest.java | 117 +++++
.../GremlinGroovyScriptEngineIntegrateTest.java | 11 +-
.../GremlinGroovyScriptEngineOverGraphTest.java | 7 +-
.../process/GroovyProcessComputerSuite.java | 6 +-
.../process/GroovyProcessStandardSuite.java | 2 +
.../gremlin/groovy/jsr223/sandbox.yaml | 58 +++
.../customizer/AbstractSandboxExtension.groovy | 90 ++++
.../customizer/FileSandboxExtension.groovy | 107 ++++
.../PropertyExpressionEvaluator.groovy | 66 +++
.../jsr223/customizer/SandboxExtension.groovy | 3 +
.../jsr223/customizer/SandboxHelper.groovy | 57 +++
.../customizer/SimpleSandboxExtension.groovy | 30 +-
.../customizer/TinkerPopSandboxExtension.groovy | 44 +-
.../gremlin/groovy/engine/GremlinExecutor.java | 4 +-
.../gremlin/groovy/engine/ScriptEngines.java | 24 +-
.../jsr223/GremlinGroovyScriptEngine.java | 19 +-
.../jsr223/ScriptEnginePluginAcceptor.java | 26 +-
.../groovy/engine/GremlinExecutorTest.java | 8 +-
.../groovy/engine/ScriptEnginesTest.java | 99 ++++
.../jsr223/GremlinGroovyScriptEngineTest.java | 93 ++--
.../groovy/util/DependencyGrabberTest.java | 3 +-
.../src/test/resources/log4j-silent.properties | 23 +
.../src/test/resources/log4j-test.properties | 21 +
gremlin-server/conf/gremlin-server-classic.yaml | 1 +
gremlin-server/conf/gremlin-server-min.yaml | 1 +
.../conf/gremlin-server-modern-readonly.yaml | 1 +
gremlin-server/conf/gremlin-server-modern.yaml | 1 +
gremlin-server/conf/gremlin-server-neo4j.yaml | 1 +
.../conf/gremlin-server-rest-modern.yaml | 1 +
.../conf/gremlin-server-rest-secure.yaml | 1 +
gremlin-server/conf/gremlin-server-secure.yaml | 1 +
gremlin-server/conf/gremlin-server-spark.yaml | 1 +
gremlin-server/conf/gremlin-server.yaml | 1 +
gremlin-server/conf/log4j-server.properties | 17 +-
.../scripts/empty-sample-secure.groovy | 4 +-
.../tinkerpop/gremlin/server/GraphManager.java | 46 ++
.../tinkerpop/gremlin/server/GremlinServer.java | 8 +-
.../tinkerpop/gremlin/server/Settings.java | 9 +
.../server/auth/AllowAllAuthenticator.java | 10 +
.../gremlin/server/auth/Authenticator.java | 27 +-
.../server/auth/SimpleAuthenticator.java | 11 +-
.../gremlin/server/channel/HttpChannelizer.java | 2 +-
.../handler/HttpGremlinEndpointHandler.java | 37 +-
.../server/handler/OpSelectorHandler.java | 2 +-
.../handler/SaslAuthenticationHandler.java | 22 +-
.../server/op/AbstractEvalOpProcessor.java | 92 +++-
.../server/op/control/ControlOpProcessor.java | 18 +-
.../gremlin/server/op/session/Session.java | 1 -
.../server/op/session/SessionOpProcessor.java | 7 +-
.../server/op/standard/StandardOpProcessor.java | 31 +-
.../AbstractGremlinServerIntegrationTest.java | 7 +-
.../server/GremlinAdditionPerformanceTest.java | 5 +-
.../server/GremlinDriverIntegrateTest.java | 117 ++++-
.../GremlinServerAuthIntegrateOldTest.java | 235 ---------
.../GremlinServerAuthOldIntegrateTest.java | 235 +++++++++
.../server/GremlinServerHttpIntegrateTest.java | 36 ++
.../server/GremlinServerIntegrateTest.java | 90 ++--
.../src/test/resources/log4j-silent.properties | 23 +
.../src/test/resources/log4j-test.properties | 21 +
.../server/gremlin-server-integration.yaml | 1 +
.../server/gremlin-server-performance.yaml | 1 +
gremlin-test/pom.xml | 6 +
.../gremlin/AbstractGraphProvider.java | 14 +-
.../tinkerpop/gremlin/AbstractGremlinSuite.java | 32 +-
.../tinkerpop/gremlin/AbstractGremlinTest.java | 26 +-
.../apache/tinkerpop/gremlin/GraphManager.java | 115 ++++-
.../apache/tinkerpop/gremlin/GraphProvider.java | 10 +
.../apache/tinkerpop/gremlin/TestHelper.java | 51 +-
.../generator/CommunityGeneratorTest.java | 5 +-
.../process/AbstractGremlinProcessTest.java | 7 +-
.../gremlin/process/GremlinProcessRunner.java | 6 +-
.../gremlin/process/ProcessComputerSuite.java | 4 +-
.../BulkLoaderVertexProgramTest.java | 49 +-
.../PeerPressureVertexProgramTest.java | 63 +++
.../ranking/PageRankVertexProgramTest.java | 78 ---
.../pagerank/PageRankVertexProgramTest.java | 83 ++++
.../process/traversal/step/filter/TailTest.java | 2 +-
.../process/traversal/step/map/FlatMapTest.java | 2 +-
.../process/traversal/step/map/MapTest.java | 2 +-
.../process/traversal/step/map/OrderTest.java | 11 +-
.../process/traversal/step/map/SelectTest.java | 6 +-
.../ElementIdStrategyProcessTest.java | 7 +-
.../gremlin/structure/FeatureSupportTest.java | 7 +-
.../tinkerpop/gremlin/structure/GraphTest.java | 16 +-
.../gremlin/structure/PropertyTest.java | 4 +-
.../gremlin/structure/TransactionTest.java | 3 +
.../tinkerpop/gremlin/structure/VertexTest.java | 18 +-
.../gremlin/structure/io/IoGraphTest.java | 4 +-
.../gremlin/structure/io/IoIntegrateTest.java | 10 +-
.../tinkerpop/gremlin/structure/io/IoTest.java | 87 ++--
.../structure/ExceptionCoverageTest.java | 5 +-
.../src/test/resources/log4j-silent.properties | 26 +
.../src/test/resources/log4j-test.properties | 24 +
hadoop-gremlin/conf/hadoop-gryo.properties | 3 +
hadoop-gremlin/pom.xml | 18 +-
.../groovy/plugin/HadoopGremlinPlugin.java | 8 -
.../computer/util/ComputerSubmissionHelper.java | 80 +++
.../structure/hdfs/HadoopEdgeIterator.java | 4 -
.../structure/hdfs/HadoopElementIterator.java | 35 +-
.../structure/hdfs/HadoopVertexIterator.java | 4 -
.../structure/io/script/ScriptRecordReader.java | 3 +-
.../structure/io/script/ScriptRecordWriter.java | 3 +-
.../gremlin/hadoop/HadoopGraphProvider.java | 2 +-
.../groovy/plugin/HadoopGremlinPluginCheck.java | 181 +++++++
.../groovy/plugin/HadoopGremlinPluginTest.java | 173 -------
.../hadoop/groovy/plugin/HadoopPluginSuite.java | 2 +-
.../HadoopGraphStructureStandardTest.java | 35 ++
.../io/HadoopGraphStructureStandardTest.java | 35 --
.../structure/io/RecordReaderWriterTest.java | 7 +-
.../src/test/resources/log4j-silent.properties | 23 +
.../src/test/resources/log4j-test.properties | 21 +
neo4j-gremlin/pom.xml | 6 +
.../gremlin/neo4j/NativeNeo4jSuite.java | 18 +-
.../neo4j/process/NativeNeo4jCypherCheck.java | 214 ++++++++
.../neo4j/process/NativeNeo4jCypherTest.java | 211 --------
.../neo4j/structure/NativeNeo4jIndexCheck.java | 371 ++++++++++++++
.../neo4j/structure/NativeNeo4jIndexTest.java | 368 --------------
.../structure/NativeNeo4jStructureCheck.java | 483 +++++++++++++++++++
.../structure/NativeNeo4jStructureTest.java | 483 -------------------
.../src/test/resources/log4j-silent.properties | 23 +
.../src/test/resources/log4j-test.properties | 21 +
pom.xml | 54 +--
spark-gremlin/pom.xml | 18 +-
.../spark/groovy/plugin/SparkLoader.groovy | 68 +++
.../spark/groovy/plugin/SparkGremlinPlugin.java | 9 +-
.../spark/process/computer/SparkExecutor.java | 37 +-
.../process/computer/SparkGraphComputer.java | 59 ++-
.../computer/payload/MessagePayload.java | 5 +-
.../computer/payload/ViewIncomingPayload.java | 8 +-
.../computer/payload/ViewOutgoingPayload.java | 12 +-
.../gremlin/spark/structure/Spark.java | 114 +++++
.../spark/structure/io/InputFormatRDD.java | 3 +-
.../spark/structure/io/InputOutputHelper.java | 2 +
.../spark/structure/io/InputRDDFormat.java | 137 ++++++
.../spark/structure/io/PersistedInputRDD.java | 23 +-
.../spark/structure/io/PersistedOutputRDD.java | 13 +
.../spark/structure/io/gryo/GryoSerializer.java | 6 +
.../io/gryo/WrappedArraySerializer.java | 46 ++
.../gremlin/spark/AbstractSparkTest.java | 49 ++
.../process/computer/LocalPropertyTest.java | 14 +-
.../computer/SparkHadoopGraphProvider.java | 16 +-
.../groovy/SparkHadoopGremlinPluginTest.java | 33 --
.../groovy/plugin/SparkGremlinPluginTest.java | 126 +++++
.../plugin/SparkHadoopGremlinPluginTest.java | 33 ++
.../gremlin/spark/structure/SparkTest.java | 108 +++++
.../spark/structure/io/InputOutputRDDTest.java | 11 +-
.../spark/structure/io/InputRDDTest.java | 31 +-
.../spark/structure/io/OutputRDDTest.java | 10 +-
.../io/PersistedInputOutputRDDTest.java | 138 ++++--
.../spark/structure/io/ToyGraphInputRDD.java | 73 +++
.../src/test/resources/log4j-silent.properties | 23 +
.../src/test/resources/log4j-test.properties | 25 +
.../structure/TinkerGraphPlayTest.java | 60 +--
.../tinkergraph/structure/TinkerGraphTest.java | 18 +-
.../src/test/resources/log4j-silent.properties | 23 +
.../src/test/resources/log4j-test.properties | 21 +
234 files changed, 6793 insertions(+), 2812 deletions(-)
----------------------------------------------------------------------
[4/4] incubator-tinkerpop git commit: first EdgeCopyVertexProgram
prototype (not yet working)
Posted by dk...@apache.org.
first EdgeCopyVertexProgram prototype (not yet working)
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/201b05af
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/201b05af
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/201b05af
Branch: refs/heads/TINKERPOP3-432
Commit: 201b05af3e250c294716c70a31e592d9ba0f670c
Parents: eb50570
Author: Daniel Kuppitz <da...@hotmail.com>
Authored: Tue Jan 5 18:10:19 2016 +0100
Committer: Daniel Kuppitz <da...@hotmail.com>
Committed: Tue Jan 5 18:10:19 2016 +0100
----------------------------------------------------------------------
.../edgecopy/EdgeCopyVertexProgram.java | 29 +++--
.../structure/io/script/ScriptRecordReader.java | 2 +-
.../structure/io/script/ScriptRecordWriter.java | 6 +-
.../edgecopy/EdgeCopyVertexProgramTest.java | 124 +++++++++++++++++++
.../computer/edgecopy/hadoop-script.properties | 32 +++++
.../computer/edgecopy/script-input.groovy | 49 ++++++++
.../computer/edgecopy/script-output.groovy | 34 +++++
.../computer/edgecopy/tinkerpop-classic.txt | 6 +
8 files changed, 268 insertions(+), 14 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/201b05af/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/edgecopy/EdgeCopyVertexProgram.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/edgecopy/EdgeCopyVertexProgram.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/edgecopy/EdgeCopyVertexProgram.java
index 9d72997..01a6d05 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/edgecopy/EdgeCopyVertexProgram.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/edgecopy/EdgeCopyVertexProgram.java
@@ -52,8 +52,9 @@ public class EdgeCopyVertexProgram extends StaticVertexProgram<Edge> {
private static final Logger LOGGER = LoggerFactory.getLogger(EdgeCopyVertexProgram.class);
public static final String EDGE_COPY_VERTEX_PROGRAM_CFG_PREFIX = "gremlin.edgeCopyVertexProgram";
+ public static final String DIRECTION_CFG_KEY = String.join(".", EDGE_COPY_VERTEX_PROGRAM_CFG_PREFIX, "direction");
- private final Direction direction;
+ private Direction direction;
private Configuration configuration;
private EdgeCopyVertexProgram() {
@@ -70,6 +71,9 @@ public class EdgeCopyVertexProgram extends StaticVertexProgram<Edge> {
if (config != null) {
ConfigurationUtils.copy(config, configuration);
}
+ if (configuration.containsKey(DIRECTION_CFG_KEY)) {
+ direction = Direction.valueOf(configuration.getString(DIRECTION_CFG_KEY));
+ }
}
@Override
@@ -85,7 +89,9 @@ public class EdgeCopyVertexProgram extends StaticVertexProgram<Edge> {
sourceVertex.edges(direction).forEachRemaining(edge -> {
final Object inVId = edge.inVertex().id();
LOGGER.info("send edge from " + sourceVertex.id() + " to " + edge.inVertex().id());
- MessageScope messageScope = MessageScope.Local.of(() -> __.<Vertex>start().outE().filter(__.inV().hasId(inVId)));
+ MessageScope messageScope = Direction.OUT.equals(direction)
+ ? MessageScope.Local.of(() -> __.<Vertex>start().outE().filter(__.inV().hasId(inVId)))
+ : MessageScope.Local.of(() -> __.<Vertex>start().inE().filter(__.outV().hasId(inVId)));
messenger.sendMessage(messageScope, DetachedFactory.detach(edge, true));
});
} else if (memory.getIteration() == 1) {
@@ -95,14 +101,12 @@ public class EdgeCopyVertexProgram extends StaticVertexProgram<Edge> {
final Graph sg = inV.graph();
while (ei.hasNext()) {
final Edge edge = ei.next();
- if (sourceVertex.id().equals(edge.inVertex().id())) {
- LOGGER.info("create edge from " + edge.outVertex().id() + " to " + sourceVertex.id());
- final Object outVId = edge.outVertex().id();
- final Iterator<Vertex> vi = sg.vertices(outVId);
- final Vertex outV = vi.hasNext() ? vi.next() : sg.addVertex(T.id, outVId);
- final Edge clonedEdge = outV.addEdge(edge.label(), inV);
- edge.properties().forEachRemaining(p -> clonedEdge.property(p.key(), p.value()));
- }
+ LOGGER.info("create edge from " + edge.outVertex().id() + " to " + sourceVertex.id());
+ final Object outVId = edge.outVertex().id();
+ final Iterator<Vertex> vi = sg.vertices(outVId);
+ final Vertex outV = vi.hasNext() ? vi.next() : sg.addVertex(T.id, outVId);
+ final Edge clonedEdge = outV.addEdge(edge.label(), inV);
+ edge.properties().forEachRemaining(p -> clonedEdge.property(p.key(), p.value()));
}
}
}
@@ -154,6 +158,11 @@ public class EdgeCopyVertexProgram extends StaticVertexProgram<Edge> {
ConfigurationUtils.append(graph.configuration().subset(EDGE_COPY_VERTEX_PROGRAM_CFG_PREFIX), configuration);
return (EdgeCopyVertexProgram) VertexProgram.createVertexProgram(graph, configuration);
}
+
+ public Builder direction(final Direction direction) {
+ configuration.setProperty(DIRECTION_CFG_KEY, direction);
+ return this;
+ }
}
@Override
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/201b05af/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/script/ScriptRecordReader.java
----------------------------------------------------------------------
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/script/ScriptRecordReader.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/script/ScriptRecordReader.java
index 4cc1602..257f4d9 100644
--- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/script/ScriptRecordReader.java
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/script/ScriptRecordReader.java
@@ -48,7 +48,7 @@ import java.util.Iterator;
*/
public final class ScriptRecordReader extends RecordReader<NullWritable, VertexWritable> {
- protected final static String SCRIPT_FILE = "gremlin.hadoop.scriptInputFormat.script";
+ public final static String SCRIPT_FILE = "gremlin.hadoop.scriptInputFormat.script";
//protected final static String SCRIPT_ENGINE = "gremlin.hadoop.scriptInputFormat.scriptEngine";
private final static String LINE = "line";
private final static String FACTORY = "factory";
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/201b05af/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/script/ScriptRecordWriter.java
----------------------------------------------------------------------
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/script/ScriptRecordWriter.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/script/ScriptRecordWriter.java
index d445fcd..afa815f 100644
--- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/script/ScriptRecordWriter.java
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/script/ScriptRecordWriter.java
@@ -42,8 +42,8 @@ import java.io.UnsupportedEncodingException;
*/
public final class ScriptRecordWriter extends RecordWriter<NullWritable, VertexWritable> {
- protected final static String SCRIPT_FILE = "gremlin.hadoop.scriptOutputFormat.script";
- protected final static String SCRIPT_ENGINE = "gremlin.hadoop.scriptOutputFormat.scriptEngine";
+ public final static String SCRIPT_FILE = "gremlin.hadoop.scriptOutputFormat.script";
+ //protected final static String SCRIPT_ENGINE = "gremlin.hadoop.scriptOutputFormat.scriptEngine";
private final static String VERTEX = "vertex";
private final static String WRITE_CALL = "stringify(" + VERTEX + ")";
private final static String UTF8 = "UTF-8";
@@ -68,7 +68,7 @@ public final class ScriptRecordWriter extends RecordWriter<NullWritable, VertexW
try {
this.engine.eval(new InputStreamReader(fs.open(new Path(configuration.get(SCRIPT_FILE)))));
} catch (final ScriptException e) {
- throw new IOException(e.getMessage(),e);
+ throw new IOException(e.getMessage(), e);
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/201b05af/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/edgecopy/EdgeCopyVertexProgramTest.java
----------------------------------------------------------------------
diff --git a/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/edgecopy/EdgeCopyVertexProgramTest.java b/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/edgecopy/EdgeCopyVertexProgramTest.java
new file mode 100644
index 0000000..e41b7d8
--- /dev/null
+++ b/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/edgecopy/EdgeCopyVertexProgramTest.java
@@ -0,0 +1,124 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.spark.process.computer.edgecopy;
+
+import org.apache.commons.configuration.BaseConfiguration;
+import org.apache.commons.configuration.Configuration;
+import org.apache.commons.configuration.ConfigurationException;
+import org.apache.commons.configuration.ConfigurationUtils;
+import org.apache.commons.configuration.PropertiesConfiguration;
+import org.apache.tinkerpop.gremlin.TestHelper;
+import org.apache.tinkerpop.gremlin.hadoop.structure.io.script.ScriptRecordReader;
+import org.apache.tinkerpop.gremlin.hadoop.structure.io.script.ScriptRecordWriter;
+import org.apache.tinkerpop.gremlin.process.computer.edgecopy.EdgeCopyVertexProgram;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
+import org.apache.tinkerpop.gremlin.spark.process.computer.SparkGraphComputer;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.apache.tinkerpop.gremlin.structure.util.GraphFactory;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Map;
+import java.util.concurrent.ExecutionException;
+
+import static org.apache.tinkerpop.gremlin.hadoop.Constants.GREMLIN_HADOOP_INPUT_LOCATION;
+import static org.apache.tinkerpop.gremlin.hadoop.Constants.GREMLIN_HADOOP_OUTPUT_LOCATION;
+import static org.apache.tinkerpop.gremlin.hadoop.Constants.HIDDEN_G;
+import static org.junit.Assert.assertEquals;
+
+/**
+ * @author Daniel Kuppitz (http://gremlin.guru)
+ */
+public class EdgeCopyVertexProgramTest {
+
+ private Configuration configuration;
+
+ private static Configuration getNextConfiguration(final Configuration configuration) {
+ final Configuration next = new BaseConfiguration();
+ ConfigurationUtils.copy(configuration, next);
+ next.setProperty(GREMLIN_HADOOP_INPUT_LOCATION, configuration.getString(GREMLIN_HADOOP_OUTPUT_LOCATION) + HIDDEN_G);
+ next.setProperty(GREMLIN_HADOOP_OUTPUT_LOCATION, configuration.getString(GREMLIN_HADOOP_OUTPUT_LOCATION).replaceAll("/$", "_/"));
+ return next;
+ }
+
+ @Before
+ public void initialize() throws IOException, ConfigurationException {
+ final File readGraphConfigurationFile = TestHelper.generateTempFileFromResource(
+ EdgeCopyVertexProgramTest.class, "hadoop-script.properties", "");
+ final File inputFile = TestHelper.generateTempFileFromResource(
+ EdgeCopyVertexProgramTest.class, "tinkerpop-classic.txt", "");
+ final File scriptInputFile = TestHelper.generateTempFileFromResource(
+ EdgeCopyVertexProgramTest.class, "script-input.groovy", "");
+ final File scriptOutputFile = TestHelper.generateTempFileFromResource(
+ EdgeCopyVertexProgramTest.class, "script-output.groovy", "");
+ configuration = new PropertiesConfiguration(readGraphConfigurationFile.getAbsolutePath());
+ configuration.setProperty(GREMLIN_HADOOP_INPUT_LOCATION, inputFile.getAbsolutePath());
+ configuration.setProperty(ScriptRecordReader.SCRIPT_FILE, scriptInputFile.getAbsolutePath());
+ configuration.setProperty(ScriptRecordWriter.SCRIPT_FILE, scriptOutputFile.getAbsolutePath());
+ configuration.setProperty(GREMLIN_HADOOP_OUTPUT_LOCATION, TestHelper.makeTestDataDirectory(
+ EdgeCopyVertexProgramTest.class, "output"));
+ configuration.setProperty("gremlin.hadoop.graphOutputFormat", "org.apache.tinkerpop.gremlin.hadoop.structure.io.graphson.GraphSONOutputFormat");
+ }
+
+ @Test
+ @Ignore
+ public void shouldCopyOutEdges() throws ExecutionException, InterruptedException {
+
+ final Graph readGraph = GraphFactory.open(configuration);
+ final GraphTraversalSource g1 = readGraph.traversal();
+ final Map<Object, Long> o1 = g1.V().map(__.outE().count()).groupCount().next();
+ final Map<Object, Long> i1 = g1.V().map(__.inE().count()).groupCount().next();
+ assertEquals(4, o1.size());
+ assertEquals(1, i1.size());
+
+ final EdgeCopyVertexProgram ecvp = EdgeCopyVertexProgram.build().create(readGraph);
+ readGraph.compute(SparkGraphComputer.class).workers(1).program(ecvp).submit().get();
+
+ final Graph nextGraph = GraphFactory.open(getNextConfiguration(configuration));
+ final GraphTraversalSource g2 = nextGraph.traversal();
+ final Map<Object, Long> o2 = g2.V().map(__.outE().count()).groupCount().next();
+ final Map<Object, Long> i2 = g2.V().map(__.inE().count()).groupCount().next();
+ assertEquals(4, o2.size());
+ assertEquals(3, i2.size());
+ }
+
+ @Test
+ public void shouldCopyOutEdgesGraphSON() throws ExecutionException, InterruptedException {
+
+ final Graph readGraph = GraphFactory.open(configuration);
+ final GraphTraversalSource g1 = readGraph.traversal();
+ final Map<Object, Long> o1 = g1.V().map(__.outE().count()).groupCount().next();
+ final Map<Object, Long> i1 = g1.V().map(__.inE().count()).groupCount().next();
+ assertEquals(4, o1.size());
+ assertEquals(1, i1.size());
+
+ final EdgeCopyVertexProgram ecvp = EdgeCopyVertexProgram.build().create(readGraph);
+ final Graph nextGraph = readGraph.compute(SparkGraphComputer.class).workers(1).program(ecvp).submit().get().graph();
+
+ final GraphTraversalSource g2 = nextGraph.traversal();
+ final Map<Object, Long> o2 = g2.V().map(__.outE().count()).groupCount().next();
+ final Map<Object, Long> i2 = g2.V().map(__.inE().count()).groupCount().next();
+ assertEquals(4, o2.size());
+ assertEquals(3, i2.size());
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/201b05af/spark-gremlin/src/test/resources/org/apache/tinkerpop/gremlin/spark/process/computer/edgecopy/hadoop-script.properties
----------------------------------------------------------------------
diff --git a/spark-gremlin/src/test/resources/org/apache/tinkerpop/gremlin/spark/process/computer/edgecopy/hadoop-script.properties b/spark-gremlin/src/test/resources/org/apache/tinkerpop/gremlin/spark/process/computer/edgecopy/hadoop-script.properties
new file mode 100644
index 0000000..1c5a501
--- /dev/null
+++ b/spark-gremlin/src/test/resources/org/apache/tinkerpop/gremlin/spark/process/computer/edgecopy/hadoop-script.properties
@@ -0,0 +1,32 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+gremlin.graph=org.apache.tinkerpop.gremlin.hadoop.structure.HadoopGraph
+gremlin.hadoop.graphInputFormat=org.apache.tinkerpop.gremlin.hadoop.structure.io.script.ScriptInputFormat
+gremlin.hadoop.graphOutputFormat=org.apache.tinkerpop.gremlin.hadoop.structure.io.script.ScriptOutputFormat
+gremlin.hadoop.jarsInDistributedCache=true
+
+gremlin.hadoop.inputLocation=
+gremlin.hadoop.scriptInputFormat.script=
+gremlin.hadoop.scriptOutputFormat.script=
+gremlin.hadoop.outputLocation=
+
+####################################
+# SparkGraphComputer Configuration #
+####################################
+spark.master=local[4]
+spark.executor.memory=1g
+spark.serializer=org.apache.tinkerpop.gremlin.spark.structure.io.gryo.GryoSerializer
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/201b05af/spark-gremlin/src/test/resources/org/apache/tinkerpop/gremlin/spark/process/computer/edgecopy/script-input.groovy
----------------------------------------------------------------------
diff --git a/spark-gremlin/src/test/resources/org/apache/tinkerpop/gremlin/spark/process/computer/edgecopy/script-input.groovy b/spark-gremlin/src/test/resources/org/apache/tinkerpop/gremlin/spark/process/computer/edgecopy/script-input.groovy
new file mode 100644
index 0000000..adb32b7
--- /dev/null
+++ b/spark-gremlin/src/test/resources/org/apache/tinkerpop/gremlin/spark/process/computer/edgecopy/script-input.groovy
@@ -0,0 +1,49 @@
+import org.apache.tinkerpop.gremlin.structure.VertexProperty
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+def parse(line, factory) {
+ def parts = line.split(/\t/)
+ def (id, label, name, x) = parts[0].split(/:/).toList()
+ def v1 = factory.vertex(id, label)
+ if (name != null) v1.property(VertexProperty.Cardinality.single, "name", name)
+ if (x != null) {
+ if (label.equals("project")) v1.property(VertexProperty.Cardinality.single, "lang", x)
+ else v1.property(VertexProperty.Cardinality.single, "age", Integer.valueOf(x))
+ }
+ // process out-edges
+ if (parts.length >= 2) {
+ parts[1].split(/,/).grep { !it.isEmpty() }.each {
+ def (eLabel, refId, weight) = it.split(/:/).toList()
+ def v2 = factory.vertex(refId)
+ def edge = factory.edge(v1, v2, eLabel)
+ edge.property("weight", Double.valueOf(weight))
+ }
+ }
+ // process in-edges
+ if (parts.length == 3) {
+ parts[2].split(/,/).grep { !it.isEmpty() }.each {
+ def (eLabel, refId, weight) = it.split(/:/).toList()
+ def v2 = factory.vertex(refId)
+ def edge = factory.edge(v2, v1, eLabel)
+ edge.property("weight", Double.valueOf(weight))
+ }
+ }
+ return v1
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/201b05af/spark-gremlin/src/test/resources/org/apache/tinkerpop/gremlin/spark/process/computer/edgecopy/script-output.groovy
----------------------------------------------------------------------
diff --git a/spark-gremlin/src/test/resources/org/apache/tinkerpop/gremlin/spark/process/computer/edgecopy/script-output.groovy b/spark-gremlin/src/test/resources/org/apache/tinkerpop/gremlin/spark/process/computer/edgecopy/script-output.groovy
new file mode 100644
index 0000000..47e985d
--- /dev/null
+++ b/spark-gremlin/src/test/resources/org/apache/tinkerpop/gremlin/spark/process/computer/edgecopy/script-output.groovy
@@ -0,0 +1,34 @@
+import org.apache.tinkerpop.gremlin.structure.Direction
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+def stringify(vertex) {
+ def edgeMap = { vdir ->
+ return {
+ def e = it.get()
+ def g = e.graph().traversal(standard())
+ g.E(e).values("weight").inject(e.label(), g.E(e).toV(Direction.valueOf(vdir.toUpperCase())).next().id()).join(":")
+ }
+ }
+ def g = vertex.graph().traversal(standard())
+ def v = g.V(vertex).values("name", "age", "lang").inject(vertex.id(), vertex.label()).join(":")
+ def outE = g.V(vertex).outE().map(edgeMap("in")).join(",")
+ def inE = g.V(vertex).inE().map(edgeMap("out")).join(",")
+ return [v, outE, inE].join("\t")
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/201b05af/spark-gremlin/src/test/resources/org/apache/tinkerpop/gremlin/spark/process/computer/edgecopy/tinkerpop-classic.txt
----------------------------------------------------------------------
diff --git a/spark-gremlin/src/test/resources/org/apache/tinkerpop/gremlin/spark/process/computer/edgecopy/tinkerpop-classic.txt b/spark-gremlin/src/test/resources/org/apache/tinkerpop/gremlin/spark/process/computer/edgecopy/tinkerpop-classic.txt
new file mode 100644
index 0000000..519763f
--- /dev/null
+++ b/spark-gremlin/src/test/resources/org/apache/tinkerpop/gremlin/spark/process/computer/edgecopy/tinkerpop-classic.txt
@@ -0,0 +1,6 @@
+1:person:marko:29 knows:2:0.5,knows:4:1.0,created:3:0.4
+2:person:vadas:27
+3:project:lop:java
+4:person:josh:32 created:3:0.4,created:5:1.0
+5:project:ripple:java
+6:person:peter:35 created:3:0.2
[2/4] incubator-tinkerpop git commit: Merge branch 'master' into
TINKERPOP3-432
Posted by dk...@apache.org.
Merge branch 'master' into TINKERPOP3-432
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/caebf26d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/caebf26d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/caebf26d
Branch: refs/heads/TINKERPOP3-432
Commit: caebf26dde09d1047f4cf63557b3e14b4ba398a5
Parents: 4be5db1 fdd853b
Author: Daniel Kuppitz <da...@hotmail.com>
Authored: Tue Jan 5 14:14:39 2016 +0100
Committer: Daniel Kuppitz <da...@hotmail.com>
Committed: Tue Jan 5 14:14:39 2016 +0100
----------------------------------------------------------------------
.travis.yml | 14 +
CHANGELOG.asciidoc | 110 +-
CONTRIBUTING.asciidoc | 2 +-
LICENSE | 11 +-
NOTICE | 26 +-
README.asciidoc | 10 +-
bin/process-docs.sh | 2 +-
docs/javadoc/overview.html | 2 +-
docs/postprocessor/postprocess.sh | 13 +-
docs/preprocessor/preprocess-file.sh | 5 +-
docs/preprocessor/preprocess.sh | 36 +-
docs/src/acknowledgements.asciidoc | 40 -
docs/src/conclusion.asciidoc | 26 -
docs/src/dev/developer/administration.asciidoc | 91 +
docs/src/dev/developer/contributing.asciidoc | 404 +++
docs/src/dev/developer/index.asciidoc | 33 +
docs/src/dev/developer/meetings.asciidoc | 204 ++
docs/src/dev/developer/release.asciidoc | 193 ++
docs/src/developer-contributing.asciidoc | 272 --
docs/src/developer-meetings.asciidoc | 64 -
docs/src/developer-release.asciidoc | 171 --
docs/src/developer.asciidoc | 31 -
docs/src/gremlin-applications.asciidoc | 1727 -------------
docs/src/implementations.asciidoc | 1764 -------------
docs/src/index.asciidoc | 39 -
docs/src/intro.asciidoc | 397 ---
docs/src/preface.asciidoc | 97 -
docs/src/reference/acknowledgements.asciidoc | 40 +
docs/src/reference/conclusion.asciidoc | 26 +
.../src/reference/gremlin-applications.asciidoc | 1745 +++++++++++++
docs/src/reference/implementations.asciidoc | 1766 +++++++++++++
docs/src/reference/index.asciidoc | 39 +
docs/src/reference/intro.asciidoc | 397 +++
docs/src/reference/preface.asciidoc | 97 +
docs/src/reference/the-graph.asciidoc | 771 ++++++
docs/src/reference/the-graphcomputer.asciidoc | 476 ++++
docs/src/reference/the-traversal.asciidoc | 2378 ++++++++++++++++++
docs/src/the-graph.asciidoc | 768 ------
docs/src/the-graphcomputer.asciidoc | 475 ----
docs/src/the-traversal.asciidoc | 2357 -----------------
.../tutorials/getting-started/index.asciidoc | 571 +++++
.../upgrade-release-3.0.x-incubating.asciidoc | 143 --
.../upgrade-release-3.1.x-incubating.asciidoc | 183 --
docs/src/upgrade.asciidoc | 39 -
docs/src/upgrade/index.asciidoc | 39 +
.../upgrade/release-3.0.x-incubating.asciidoc | 180 ++
.../upgrade/release-3.1.x-incubating.asciidoc | 403 +++
docs/static/images/gremlin-gym.pdf | Bin 0 -> 963978 bytes
docs/static/images/gremlin-gym.png | Bin 0 -> 273111 bytes
.../images/gremlin-on-software-vertex.png | Bin 0 -> 39573 bytes
docs/static/images/gremlin-plane.png | Bin 0 -> 89464 bytes
docs/static/images/gremlin-to-the-6.png | Bin 0 -> 71084 bytes
docs/static/images/gremlin-to-the-7.png | Bin 0 -> 80114 bytes
docs/static/images/gremlin-to-the-8.png | Bin 0 -> 107598 bytes
docs/static/images/gremlin-to-the-9.png | Bin 0 -> 135099 bytes
.../images/modern-edge-1-to-3-1-gremlin.png | Bin 0 -> 11607 bytes
docs/static/images/modern-edge-1-to-3-1.png | Bin 0 -> 3210 bytes
.../images/modern-edge-1-to-3-2-gremlin.png | Bin 0 -> 17029 bytes
docs/static/images/modern-edge-1-to-3-2.png | Bin 0 -> 4420 bytes
.../images/modern-edge-1-to-3-3-gremlin.png | Bin 0 -> 20948 bytes
docs/static/images/modern-edge-1-to-3-3.png | Bin 0 -> 7372 bytes
docs/static/images/quantum-gremlin-atom.png | Bin 0 -> 816113 bytes
giraph-gremlin/pom.xml | 2 +-
gremlin-console/pom.xml | 2 +-
gremlin-console/src/main/LICENSE | 35 -
gremlin-console/src/main/NOTICE | 292 +--
.../groovy/plugin/DriverRemoteAcceptor.java | 38 +-
.../DriverRemoteAcceptorIntegrateTest.java | 8 +
.../groovy/plugin/DriverRemoteAcceptorTest.java | 40 +
gremlin-core/pom.xml | 2 +-
.../bulkloading/BulkLoaderVertexProgram.java | 4 +-
.../gremlin/process/traversal/Traversal.java | 22 +
.../gremlin/process/traversal/dsl/graph/__.java | 4 -
.../traversal/step/map/OrderGlobalStep.java | 10 +-
.../traversal/step/map/OrderLocalStep.java | 17 +-
.../process/traversal/step/util/Parameters.java | 15 +-
.../finalization/EngineDependentStrategy.java | 8 +-
.../AdjacentToIncidentStrategy.java | 5 +-
.../IncidentToAdjacentStrategy.java | 6 +
.../traversal/util/DefaultTraversal.java | 13 +-
.../util/DefaultTraversalStrategies.java | 2 +-
.../traversal/util/TraversalExplanation.java | 117 +
.../process/traversal/util/TraversalHelper.java | 8 +-
.../tinkerpop/gremlin/structure/Graph.java | 18 +-
.../tinkerpop/gremlin/structure/Property.java | 6 +-
.../gremlin/structure/Transaction.java | 2 +-
.../tinkerpop/gremlin/structure/io/IoCore.java | 6 +
.../structure/io/graphson/GraphSONMapper.java | 2 +-
.../structure/io/graphson/GraphSONModule.java | 3 +
.../structure/io/graphson/GraphSONReader.java | 4 +-
.../io/graphson/GraphSONSerializers.java | 47 +
.../structure/io/graphson/GraphSONTokens.java | 2 +
.../structure/io/graphson/GraphSONUtil.java | 10 +-
.../structure/io/graphson/GraphSONWriter.java | 2 +-
.../gremlin/structure/io/gryo/GryoMapper.java | 19 +-
.../util/AbstractThreadLocalTransaction.java | 40 +-
.../util/AbstractThreadedTransaction.java | 44 +-
.../structure/util/AbstractTransaction.java | 54 +-
.../traversal/dsl/graph/GraphTraversalTest.java | 2 +-
.../step/sideEffect/ProfileStepTest.java | 2 +-
gremlin-driver/pom.xml | 2 +-
.../apache/tinkerpop/gremlin/driver/Client.java | 126 +-
.../tinkerpop/gremlin/driver/Cluster.java | 11 +-
.../apache/tinkerpop/gremlin/driver/Tokens.java | 6 +
...raphSONMessageSerializerGremlinV1d0Test.java | 46 +-
.../ser/GraphSONMessageSerializerV1d0Test.java | 58 +-
.../ser/GryoMessageSerializerV1d0Test.java | 31 +
gremlin-groovy-test/pom.xml | 2 +-
.../loaders/SugarLoaderPerformanceTest.groovy | 8 +-
.../groovy/loaders/SugarLoaderTest.groovy | 23 +-
.../traversal/step/map/GroovyAddEdgeTest.groovy | 4 +-
.../traversal/step/map/GroovyOrderTest.groovy | 10 +
.../step/sideEffect/GroovyExplainTest.groovy | 35 +
.../step/sideEffect/GroovyGroupCountTest.groovy | 5 +
.../step/sideEffect/GroovyGroupTestV3d0.groovy | 8 +-
.../GremlinGroovyScriptEngineIntegrateTest.java | 3 +-
.../GremlinGroovyScriptEngineOverGraphTest.java | 46 +-
...GroovyScriptEngineSandboxedStandardTest.java | 20 +-
...nGroovyScriptEngineTinkerPopSandboxTest.java | 5 +-
.../process/GroovyProcessComputerSuite.java | 2 +
.../process/GroovyProcessStandardSuite.java | 2 +
gremlin-groovy/pom.xml | 2 +-
.../gremlin/groovy/plugin/Artifact.java | 10 +-
.../gremlin/groovy/plugin/ArtifactTest.java | 87 +
.../groovy/util/DependencyGrabberTest.java | 10 +-
gremlin-server/conf/gremlin-server-min.yaml | 4 +-
gremlin-server/conf/gremlin-server-neo4j.yaml | 8 +-
.../conf/gremlin-server-rest-modern.yaml | 4 +-
.../conf/gremlin-server-rest-secure.yaml | 11 +-
gremlin-server/conf/gremlin-server-secure.yaml | 11 +-
gremlin-server/conf/gremlin-server-spark.yaml | 8 +-
gremlin-server/conf/gremlin-server.yaml | 8 +-
.../conf/tinkergraph-credentials.properties | 20 +
gremlin-server/pom.xml | 2 +-
gremlin-server/scripts/generate-modern.groovy | 2 +-
gremlin-server/src/main/LICENSE | 33 -
gremlin-server/src/main/NOTICE | 271 +-
.../tinkerpop/gremlin/server/GremlinServer.java | 9 +-
.../server/auth/SimpleAuthenticator.java | 30 +-
.../handler/HttpGremlinEndpointHandler.java | 47 +-
.../server/op/AbstractEvalOpProcessor.java | 8 +-
.../server/op/session/SessionOpProcessor.java | 9 +-
.../server/op/standard/StandardOpProcessor.java | 53 +-
.../server/util/ServerGremlinExecutor.java | 34 +-
.../server/GremlinDriverIntegrateTest.java | 36 +-
.../server/GremlinResultSetIntegrateTest.java | 54 +-
.../GremlinServerAuthIntegrateOldTest.java | 235 ++
.../server/GremlinServerAuthIntegrateTest.java | 39 +-
.../server/GremlinServerHttpIntegrateTest.java | 111 +-
.../server/GremlinServerIntegrateTest.java | 27 +-
.../server/gremlin-server-integration.yaml | 4 +-
gremlin-shaded/pom.xml | 2 +-
gremlin-test/pom.xml | 2 +-
.../process/AbstractGremlinProcessTest.java | 14 +-
.../gremlin/process/ProcessComputerSuite.java | 2 +
.../gremlin/process/ProcessStandardSuite.java | 2 +
.../process/traversal/step/map/AddEdgeTest.java | 8 +-
.../process/traversal/step/map/OrderTest.java | 34 +
.../traversal/step/sideEffect/ExplainTest.java | 85 +
.../step/sideEffect/GroupCountTest.java | 32 +-
.../step/sideEffect/GroupTestV3d0.java | 16 +-
.../PartitionStrategyProcessTest.java | 13 +-
.../tinkerpop/gremlin/structure/GraphTest.java | 2 +-
.../gremlin/structure/TransactionTest.java | 84 +
.../gremlin/structure/VertexPropertyTest.java | 14 +-
hadoop-gremlin/pom.xml | 26 +-
.../gremlin/hadoop/structure/HadoopGraph.java | 17 +-
neo4j-gremlin/pom.xml | 2 +-
.../gremlin/neo4j/structure/Neo4jEdge.java | 2 +-
.../neo4j/structure/Neo4jGraphVariables.java | 2 +-
.../structure/trait/MultiMetaNeo4jTrait.java | 2 +-
.../trait/NoMultiNoMetaNeo4jTrait.java | 2 +-
pom.xml | 108 +-
spark-gremlin/pom.xml | 2 +-
tinkergraph-gremlin/pom.xml | 2 +-
.../tinkergraph/structure/TinkerGraph.java | 14 +-
.../tinkergraph/structure/TinkerIoRegistry.java | 176 +-
.../tinkergraph/TinkerGraphProvider.java | 8 +-
.../tinkergraph/TinkerGraphUUIDProvider.java | 57 +
.../TinkerGraphGryoSerializerTest.java | 81 +
.../structure/TinkerGraphPlayTest.java | 4 +-
.../structure/TinkerGraphSerializerTest.java | 81 -
.../tinkergraph/structure/TinkerGraphTest.java | 101 +
.../TinkerGraphUUIDGroovyEnvironmentTest.java | 38 +
184 files changed, 12536 insertions(+), 9729 deletions(-)
----------------------------------------------------------------------