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/17 00:17:19 UTC
incubator-tinkerpop git commit: added
GraphComputerTest.shouldSupportPreExistingComputeKeys(). This is necessary
when job chaining and HALTED_TRAVERSERS are later required by another
TraversalVertexProgram.
Repository: incubator-tinkerpop
Updated Branches:
refs/heads/TINKERPOP-1154 88f24c7f5 -> 01b4a539b
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/TINKERPOP-1154
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;
+ }
+ }
+
+
}