You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by sp...@apache.org on 2018/02/23 12:01:09 UTC
[3/6] tinkerpop git commit: TINKERPOP-1872 Test for edgeFunction on
Messengers
TINKERPOP-1872 Test for edgeFunction on Messengers
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/6456cbe6
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/6456cbe6
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/6456cbe6
Branch: refs/heads/master
Commit: 6456cbe6eed1818f5c60172c37037f65061bf2c2
Parents: 4b34bb2
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Tue Jan 30 09:27:06 2018 -0500
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Jan 30 09:27:06 2018 -0500
----------------------------------------------------------------------
.../process/computer/GraphComputerTest.java | 70 ++++++++++++++++++++
1 file changed, 70 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/6456cbe6/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 380887b..8c846d5 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
@@ -1656,6 +1656,76 @@ public class GraphComputerTest extends AbstractGremlinProcessTest {
/////////////////////////////////////////////
+ /////////////////////////////////////////////
+ @Test
+ @LoadGraphWith(MODERN)
+ public void shouldSupportMultipleScopesWithEdgeFunction() throws ExecutionException, InterruptedException {
+ final ComputerResult result = graphProvider.getGraphComputer(graph).program(new MultiScopeVertexWithEdgeFunctionProgram()).submit().get();
+ assertEquals(result.graph().traversal().V().has("name", "josh").next().property(MultiScopeVertexProgram.MEMORY_KEY).value(), 0L);
+ assertEquals(result.graph().traversal().V().has("name", "lop").next().property(MultiScopeVertexProgram.MEMORY_KEY).value(), 4L);
+ assertEquals(result.graph().traversal().V().has("name", "ripple").next().property(MultiScopeVertexProgram.MEMORY_KEY).value(), 10L);
+ assertEquals(result.graph().traversal().V().has("name", "marko").next().property(MultiScopeVertexProgram.MEMORY_KEY).value(), 20L);
+ }
+
+ public static class MultiScopeVertexWithEdgeFunctionProgram extends StaticVertexProgram<Long> {
+
+ private final MessageScope.Local<Long> countMessageScopeIn = MessageScope.Local.of(__::inE, (m,e) -> m * Math.round(((Double) e.values("weight").next()) * 10));
+ private final MessageScope.Local<Long> countMessageScopeOut = MessageScope.Local.of(__::outE, (m,e) -> m * Math.round(((Double) e.values("weight").next()) * 10));
+
+ private static final String MEMORY_KEY = "count";
+
+
+ @Override
+ public void setup(final Memory memory) {
+ }
+
+ @Override
+ public GraphComputer.Persist getPreferredPersist() {
+ return GraphComputer.Persist.VERTEX_PROPERTIES;
+ }
+
+ @Override
+ public Set<VertexComputeKey> getVertexComputeKeys() {
+ return Collections.singleton(VertexComputeKey.of(MEMORY_KEY, false));
+ }
+
+ @Override
+ public Set<MessageScope> getMessageScopes(final Memory memory) {
+ HashSet<MessageScope> scopes = new HashSet<>();
+ scopes.add(countMessageScopeIn);
+ scopes.add(countMessageScopeOut);
+ return scopes;
+ }
+
+ @Override
+ public void execute(Vertex vertex, Messenger<Long> messenger, Memory memory) {
+ switch (memory.getIteration()) {
+ case 0:
+ if (vertex.value("name").equals("josh")) {
+ messenger.sendMessage(this.countMessageScopeIn, 2L);
+ messenger.sendMessage(this.countMessageScopeOut, 1L);
+ }
+ break;
+ case 1:
+ long edgeCount = IteratorUtils.reduce(messenger.receiveMessages(), 0L, (a, b) -> a + b);
+ vertex.property(MEMORY_KEY, edgeCount);
+ break;
+ }
+ }
+
+ @Override
+ public boolean terminate(final Memory memory) {
+ return memory.getIteration() == 1;
+ }
+
+ @Override
+ public GraphComputer.ResultGraph getPreferredResultGraph() {
+ return GraphComputer.ResultGraph.NEW;
+ }
+ }
+
+ /////////////////////////////////////////////
+
@Test
@LoadGraphWith(MODERN)
public void shouldSupportGraphFilter() throws Exception {