You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by ok...@apache.org on 2016/02/19 17:26:43 UTC

[12/27] incubator-tinkerpop git commit: added GraphComputerTest.shouldSupportPreExistingComputeKeys(). This is necessary when job chaining and HALTED_TRAVERSERS are later required by another TraversalVertexProgram.

added GraphComputerTest.shouldSupportPreExistingComputeKeys(). This is necessary when job chaining and HALTED_TRAVERSERS are later required by another TraversalVertexProgram.


Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/01b4a539
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/01b4a539
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/01b4a539

Branch: refs/heads/master
Commit: 01b4a539b9a5a2cd28ac66adcc2bf5843d5e1769
Parents: 88f24c7
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Tue Feb 16 16:17:09 2016 -0700
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Tue Feb 16 16:17:09 2016 -0700

----------------------------------------------------------------------
 .../traversal/TraversalVertexProgram.java       |  2 +-
 .../process/computer/GraphComputerTest.java     | 63 ++++++++++++++++++++
 2 files changed, 64 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/01b4a539/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalVertexProgram.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalVertexProgram.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalVertexProgram.java
index 74081dd..4ceeb48 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalVertexProgram.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalVertexProgram.java
@@ -137,10 +137,10 @@ public final class TraversalVertexProgram implements VertexProgram<TraverserSet<
         if (memory.isInitialIteration()) {    // ITERATION 1
             if (!(this.traversal.getStartStep() instanceof GraphStep)) {  // NOT A GRAPH-STEP TRAVERSAL
                 final TraverserSet<Object> haltedTraversers = vertex.<TraverserSet<Object>>property(HALTED_TRAVERSERS).orElse(new TraverserSet<>());
+                vertex.property(VertexProperty.Cardinality.single, HALTED_TRAVERSERS, haltedTraversers);
                 if (haltedTraversers.isEmpty()) {
                     memory.and(VOTE_TO_HALT, true);
                 } else {
-                    vertex.property(VertexProperty.Cardinality.single, HALTED_TRAVERSERS, haltedTraversers);
                     final TraverserSet<Object> aliveTraverses = new TraverserSet<>();
                     haltedTraversers.forEach(traverser -> {
                         traverser.setStepId(this.traversal.getStartStep().getId());

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/01b4a539/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.java
index 33343b1..6dc8015 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.java
@@ -1882,4 +1882,67 @@ public class GraphComputerTest extends AbstractGremlinProcessTest {
 
         // TODO: add a test the shows DAG behavior -- splitting another TraversalVertexProgram off of the PeerPressureVertexProgram job.
     }
+
+    ///////////////////////////////////
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void shouldSupportPreExistingComputeKeys() throws Exception {
+        final ComputerResult result = graphProvider.getGraphComputer(graph).program(new VertexProgramN()).submit().get();
+        result.graph().vertices().forEachRemaining(vertex -> {
+            if (vertex.label().equals("person")) {
+                if (vertex.value("name").equals("marko"))
+                    assertEquals(32, vertex.<Integer>value("age").intValue());
+                else if (vertex.value("name").equals("peter"))
+                    assertEquals(38, vertex.<Integer>value("age").intValue());
+                else if (vertex.value("name").equals("vadas"))
+                    assertEquals(30, vertex.<Integer>value("age").intValue());
+                else if (vertex.value("name").equals("josh"))
+                    assertEquals(35, vertex.<Integer>value("age").intValue());
+                else
+                    throw new IllegalStateException("This vertex should not have been accessed: " + vertex);
+            }
+        });
+    }
+
+    private static class VertexProgramN extends StaticVertexProgram {
+
+        @Override
+        public void setup(final Memory memory) {
+
+        }
+
+        @Override
+        public void execute(final Vertex vertex, final Messenger messenger, final Memory memory) {
+            if (vertex.label().equals("person"))
+                vertex.property(VertexProperty.Cardinality.single, "age", vertex.<Integer>value("age") + 1);
+        }
+
+        @Override
+        public boolean terminate(final Memory memory) {
+            return memory.getIteration() > 1;
+        }
+
+        @Override
+        public Set<MessageScope> getMessageScopes(final Memory memory) {
+            return Collections.emptySet();
+        }
+
+        @Override
+        public Set<String> getElementComputeKeys() {
+            return Collections.singleton("age");
+        }
+
+        @Override
+        public GraphComputer.ResultGraph getPreferredResultGraph() {
+            return GraphComputer.ResultGraph.NEW;
+        }
+
+        @Override
+        public GraphComputer.Persist getPreferredPersist() {
+            return GraphComputer.Persist.VERTEX_PROPERTIES;
+        }
+    }
+
+
 }