case LOCALTX: gview = (TitanGraphTransaction) result.graph(); break; case PERSIST: newTx(); gview = tx; break; case NONE: break;
case LOCALTX: gview = (Transaction) result.graph(); break; case PERSIST: newTx(); gview = tx; break; case NONE: break;
public static String computeResultString(final ComputerResult computerResult) { return "result" + L_BRACKET + computerResult.graph() + ',' + computerResult.memory() + R_BRACKET; }
@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); } }); }
@Override protected Traverser.Admin<S> processNextStart() throws NoSuchElementException { while (true) { if (this.currentIterator.hasNext()) return this.currentIterator.next(); else { final ComputerResult result = this.starts.next().get(); this.currentIterator = attach(result.memory().exists(TraversalVertexProgram.HALTED_TRAVERSERS) ? result.memory().<TraverserSet<S>>get(TraversalVertexProgram.HALTED_TRAVERSERS).iterator() : EmptyIterator.instance(), result.graph()); } } }
@Test @LoadGraphWith(MODERN) public void shouldExecutePageRankWithEnergyConservation() throws Exception { final ComputerResult result = graph.compute(graphProvider.getGraphComputer(graph).getClass()).program(PageRankVertexProgram.build().create(graph)).submit().get(); final double sum = result.graph().traversal().V().values(PageRankVertexProgram.PAGE_RANK).sum().next().doubleValue(); assertEquals(1.0d, sum, 0.01d); } }
@Test @LoadGraphWith(MODERN) public void shouldSupportMultipleScopes() throws ExecutionException, InterruptedException { final ComputerResult result = graphProvider.getGraphComputer(graph).program(new MultiScopeVertexProgram()).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(), 1L); assertEquals(result.graph().traversal().V().has("name", "ripple").next().property(MultiScopeVertexProgram.MEMORY_KEY).value(), 1L); assertEquals(result.graph().traversal().V().has("name", "marko").next().property(MultiScopeVertexProgram.MEMORY_KEY).value(), 2L); }
private GraphTraversal<Vertex, Vertex> runMPTest(final Direction direction) throws Exception { final VertexProgramR svp = VertexProgramR.build().direction(direction).create(); final ComputerResult result = graphProvider.getGraphComputer(graph).program(svp).vertices(__.hasLabel(VertexProgramR.VERTEX_LABEL)).submit().get(); return result.graph().traversal().V().hasLabel(VertexProgramR.VERTEX_LABEL); }
@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); }
@Override public Object submit(final List<String> args) throws RemoteException { try { String script = getScript(String.join(SPACE, args), this.shellEnvironment); if (this.useSugar) script = SugarLoader.class.getCanonicalName() + ".load()\n" + script; final TraversalVertexProgram program = TraversalVertexProgram.build().traversal(this.traversalSource, "gremlin-groovy", script).create(this.hadoopGraph); final ComputerResult computerResult = VertexProgramStrategy.getComputer(this.traversalSource.getStrategies()).get().apply(this.hadoopGraph).program(program).submit().get(); this.shellEnvironment.setVariable(RESULT, computerResult); /// final Traversal.Admin<ComputerResult, ?> traversal = new DefaultTraversal<>(computerResult.graph()); traversal.addStep(new ComputerResultStep<>(traversal)); traversal.addStart(traversal.getTraverserGenerator().generate(computerResult, EmptyStep.instance(), 1l)); return traversal; } catch (final Exception e) { throw new RemoteException(e); } }
@Test @LoadGraphWith(MODERN) public void shouldHaveConsistentMemoryVertexPropertiesAndExceptions() throws Exception { ComputerResult results = graphProvider.getGraphComputer(graph).program(new VertexProgramF()).submit().get(); assertEquals(1, results.memory().getIteration()); assertEquals(2, results.memory().asMap().size()); assertEquals(2, results.memory().keys().size()); assertTrue(results.memory().keys().contains("a")); assertTrue(results.memory().keys().contains("b")); assertTrue(results.memory().getRuntime() >= 0); assertEquals(12, results.memory().<Integer>get("a").intValue()); // 2 iterations assertEquals(28, results.memory().<Integer>get("b").intValue()); try { results.memory().get("BAD"); fail("Should throw an IllegalArgumentException"); } catch (IllegalArgumentException e) { assertEquals(Memory.Exceptions.memoryDoesNotExist("BAD").getMessage(), e.getMessage()); } assertEquals(Long.valueOf(0), results.graph().traversal().V().count().next()); // persist new/nothing. results.graph().traversal().V().forEachRemaining(v -> { assertTrue(v.property("nameLengthCounter").isPresent()); assertEquals(Integer.valueOf(v.<String>value("name").length() * 2), Integer.valueOf(v.<Integer>value("nameLengthCounter"))); }); }
@Test @LoadGraphWith(MODERN) public void shouldProcessResultGraphNewWithPersistEdges() throws Exception { final GraphComputer computer = graphProvider.getGraphComputer(graph); if (computer.features().supportsResultGraphPersistCombination(GraphComputer.ResultGraph.NEW, GraphComputer.Persist.EDGES)) { final ComputerResult result = computer.program(new VertexProgramK()).result(GraphComputer.ResultGraph.NEW).persist(GraphComputer.Persist.EDGES).submit().get(); assertEquals(Long.valueOf(6l), result.graph().traversal().V().count().next()); assertEquals(Long.valueOf(6l), result.graph().traversal().E().count().next()); assertEquals(Long.valueOf(18l), result.graph().traversal().V().values().count().next()); assertEquals(Long.valueOf(6l), result.graph().traversal().E().values().count().next()); assertEquals(28l, result.graph().traversal().V().values("money").sum().next()); /// assertEquals(Long.valueOf(6l), graph.traversal().V().count().next()); assertEquals(Long.valueOf(6l), graph.traversal().E().count().next()); assertEquals(Long.valueOf(12l), graph.traversal().V().values().count().next()); assertEquals(Long.valueOf(6l), graph.traversal().E().values().count().next()); assertFalse(graph.traversal().V().values("money").sum().hasNext()); } }
@Test @LoadGraphWith(MODERN) public void shouldProcessResultGraphNewWithPersistNothing() throws Exception { final GraphComputer computer = graphProvider.getGraphComputer(graph); if (computer.features().supportsResultGraphPersistCombination(GraphComputer.ResultGraph.NEW, GraphComputer.Persist.NOTHING)) { final ComputerResult result = computer.program(new VertexProgramK()).result(GraphComputer.ResultGraph.NEW).persist(GraphComputer.Persist.NOTHING).submit().get(); assertEquals(Long.valueOf(0l), result.graph().traversal().V().count().next()); assertEquals(Long.valueOf(0l), result.graph().traversal().E().count().next()); assertEquals(Long.valueOf(0l), result.graph().traversal().V().values().count().next()); assertEquals(Long.valueOf(0l), result.graph().traversal().E().values().count().next()); assertFalse(result.graph().traversal().V().values("money").sum().hasNext()); /// assertEquals(Long.valueOf(6l), graph.traversal().V().count().next()); assertEquals(Long.valueOf(6l), graph.traversal().E().count().next()); assertEquals(Long.valueOf(12l), graph.traversal().V().values().count().next()); assertEquals(Long.valueOf(6l), graph.traversal().E().values().count().next()); assertFalse(graph.traversal().V().values("money").sum().hasNext()); } }
@Test @LoadGraphWith(MODERN) public void shouldProcessResultGraphNewWithPersistVertexProperties() throws Exception { final GraphComputer computer = graphProvider.getGraphComputer(graph); if (computer.features().supportsResultGraphPersistCombination(GraphComputer.ResultGraph.NEW, GraphComputer.Persist.VERTEX_PROPERTIES)) { final ComputerResult result = computer.program(new VertexProgramK()).result(GraphComputer.ResultGraph.NEW).persist(GraphComputer.Persist.VERTEX_PROPERTIES).submit().get(); assertEquals(Long.valueOf(6l), result.graph().traversal().V().count().next()); assertEquals(Long.valueOf(0l), result.graph().traversal().E().count().next()); assertEquals(Long.valueOf(18l), result.graph().traversal().V().values().count().next()); assertEquals(Long.valueOf(0l), result.graph().traversal().E().values().count().next()); assertEquals(28l, result.graph().traversal().V().values("money").sum().next()); /// assertEquals(Long.valueOf(6l), graph.traversal().V().count().next()); assertEquals(Long.valueOf(6l), graph.traversal().E().count().next()); assertEquals(Long.valueOf(12l), graph.traversal().V().values().count().next()); assertEquals(Long.valueOf(6l), graph.traversal().E().values().count().next()); assertFalse(graph.traversal().V().values("money").sum().hasNext()); } }
@Test @LoadGraphWith(MODERN) public void shouldProcessResultGraphOriginalWithPersistNothing() throws Exception { final GraphComputer computer = graphProvider.getGraphComputer(graph); if (computer.features().supportsResultGraphPersistCombination(GraphComputer.ResultGraph.ORIGINAL, GraphComputer.Persist.NOTHING)) { final ComputerResult result = computer.program(new VertexProgramK()).result(GraphComputer.ResultGraph.ORIGINAL).persist(GraphComputer.Persist.NOTHING).submit().get(); assertEquals(Long.valueOf(6l), result.graph().traversal().V().count().next()); assertEquals(Long.valueOf(6l), result.graph().traversal().E().count().next()); assertEquals(Long.valueOf(12l), result.graph().traversal().V().values().count().next()); assertEquals(Long.valueOf(6l), result.graph().traversal().E().values().count().next()); assertFalse(result.graph().traversal().V().values("money").sum().hasNext()); /// assertEquals(Long.valueOf(6l), graph.traversal().V().count().next()); assertEquals(Long.valueOf(6l), graph.traversal().E().count().next()); assertEquals(Long.valueOf(12l), graph.traversal().V().values().count().next()); assertEquals(Long.valueOf(6l), graph.traversal().E().values().count().next()); assertFalse(graph.traversal().V().values("money").sum().hasNext()); } }
@Test @LoadGraphWith(MODERN) public void shouldProcessResultGraphOriginalWithPersistVertexProperties() throws Exception { final GraphComputer computer = graphProvider.getGraphComputer(graph); if (computer.features().supportsResultGraphPersistCombination(GraphComputer.ResultGraph.ORIGINAL, GraphComputer.Persist.VERTEX_PROPERTIES)) { final ComputerResult result = computer.program(new VertexProgramK()).result(GraphComputer.ResultGraph.ORIGINAL).persist(GraphComputer.Persist.VERTEX_PROPERTIES).submit().get(); assertEquals(Long.valueOf(6l), result.graph().traversal().V().count().next()); assertEquals(Long.valueOf(6l), result.graph().traversal().E().count().next()); assertEquals(Long.valueOf(18l), result.graph().traversal().V().values().count().next()); assertEquals(Long.valueOf(6l), result.graph().traversal().E().values().count().next()); assertEquals(28l, result.graph().traversal().V().values("money").sum().next()); /// assertEquals(Long.valueOf(6l), graph.traversal().V().count().next()); assertEquals(Long.valueOf(6l), graph.traversal().E().count().next()); assertEquals(Long.valueOf(18l), graph.traversal().V().values().count().next()); assertEquals(Long.valueOf(6l), graph.traversal().E().values().count().next()); assertEquals(28l, graph.traversal().V().values("money").sum().next()); } }
@Test @LoadGraphWith(MODERN) public void shouldProcessResultGraphOriginalWithPersistEdges() throws Exception { final GraphComputer computer = graphProvider.getGraphComputer(graph); if (computer.features().supportsResultGraphPersistCombination(GraphComputer.ResultGraph.ORIGINAL, GraphComputer.Persist.EDGES)) { final ComputerResult result = computer.program(new VertexProgramK()).result(GraphComputer.ResultGraph.ORIGINAL).persist(GraphComputer.Persist.EDGES).submit().get(); assertEquals(Long.valueOf(6l), result.graph().traversal().V().count().next()); assertEquals(Long.valueOf(6l), result.graph().traversal().E().count().next()); assertEquals(Long.valueOf(18l), result.graph().traversal().V().values().count().next()); assertEquals(Long.valueOf(6l), result.graph().traversal().E().values().count().next()); assertEquals(28l, result.graph().traversal().V().values("money").sum().next()); /// assertEquals(Long.valueOf(6l), graph.traversal().V().count().next()); assertEquals(Long.valueOf(6l), graph.traversal().E().count().next()); assertEquals(Long.valueOf(18l), graph.traversal().V().values().count().next()); assertEquals(Long.valueOf(6l), graph.traversal().E().values().count().next()); assertEquals(28l, graph.traversal().V().values("money").sum().next()); } }
final ComputerResult result = graph.compute(graphProvider.getGraphComputer(graph).getClass()). program(PageRankVertexProgram.build().epsilon(0.0d).iterations(30).create(graph)).submit().get(); // by using epsilon 0.0, we guarantee iterations 30 result.graph().traversal().V().forEachRemaining(v -> { assertEquals(3, v.keys().size()); // name, age/lang, pageRank assertTrue(v.keys().contains("name"));
} else { final Traverser.Admin<ComputerResult> traverser = this.starts.next(); final Graph graph = traverser.get().graph(); final Memory memory = traverser.get().memory(); future = this.getComputer().apply(graph).program(this.generateProgram(graph, memory)).submit();
public void shouldSupportTransientKeys() throws Exception { final ComputerResult result = graphProvider.getGraphComputer(graph).program(new VertexProgramO()).mapReduce(new MapReduceK()).submit().get(); result.graph().vertices().forEachRemaining(vertex -> { assertFalse(vertex.property("v1").isPresent()); assertFalse(vertex.property("v2").isPresent()); assertEquals(1, IteratorUtils.count(vertex.properties("name"))); }); assertEquals(6l, result.graph().traversal().V().properties("name").count().next().longValue()); assertEquals(0l, result.graph().traversal().V().properties("v1").count().next().longValue()); assertEquals(0l, result.graph().traversal().V().properties("v2").count().next().longValue()); assertEquals(6l, result.graph().traversal().V().properties("v3").count().next().longValue()); assertEquals(6l, result.graph().traversal().V().<String>values("name").dedup().count().next().longValue()); assertEquals(1l, result.graph().traversal().V().<String>values("v3").dedup().count().next().longValue()); assertEquals("shouldExist", result.graph().traversal().V().<String>values("v3").dedup().next());