Repository: tinkerpop Updated Branches: refs/heads/TINKERPOP-1783 87a739172 -> 2d551c18a
added a test for iterations break, epsilon break, and for energy conservation. Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/2d551c18 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/2d551c18 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/2d551c18 Branch: refs/heads/TINKERPOP-1783 Commit: 2d551c18a80f528d3fe296144a2d7a68467b0fff Parents: 87a7391 Author: Marko A. Rodriguez <okramma...@gmail.com> Authored: Wed Sep 20 08:55:52 2017 -0600 Committer: Marko A. Rodriguez <okramma...@gmail.com> Committed: Wed Sep 20 08:55:52 2017 -0600 ---------------------------------------------------------------------- .../pagerank/PageRankVertexProgramTest.java | 50 ++++++++++++++++---- 1 file changed, 41 insertions(+), 9 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/2d551c18/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/ranking/pagerank/PageRankVertexProgramTest.java ---------------------------------------------------------------------- diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/ranking/pagerank/PageRankVertexProgramTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/ranking/pagerank/PageRankVertexProgramTest.java index 6fb3cb7..8b4f977 100644 --- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/ranking/pagerank/PageRankVertexProgramTest.java +++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/ranking/pagerank/PageRankVertexProgramTest.java @@ -36,7 +36,7 @@ public class PageRankVertexProgramTest extends AbstractGremlinProcessTest { @Test @LoadGraphWith(MODERN) - public void shouldExecutePageRank() throws Exception { + public void shouldExecutePageRankWithIterationsBreak() throws Exception { if (graphProvider.getGraphComputer(graph).features().supportsResultGraphPersistCombination(GraphComputer.ResultGraph.NEW, GraphComputer.Persist.VERTEX_PROPERTIES)) { 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 @@ -69,14 +69,46 @@ public class PageRankVertexProgramTest extends AbstractGremlinProcessTest { } } - /*@Test + @Test @LoadGraphWith(MODERN) - public void shouldExecutePageRankWithNormalizedValues() throws Exception { - final ComputerResult result = graph.compute().program(PageRankVertexProgram.build().vertexCount(6).create()).submit().get(); - final double sum = result.graph().traversal().V().values(PageRankVertexProgram.PAGE_RANK).sum().next(); - System.out.println(sum); - assertEquals(1.0d,sum,0.01); - }*/ - + public void shouldExecutePageRankWithEpsilonBreak() throws Exception { + if (graphProvider.getGraphComputer(graph).features().supportsResultGraphPersistCombination(GraphComputer.ResultGraph.NEW, GraphComputer.Persist.VERTEX_PROPERTIES)) { + final ComputerResult result = graph.compute(graphProvider.getGraphComputer(graph).getClass()). + program(PageRankVertexProgram.build().epsilon(0.00001d).iterations(30).create(graph)).submit().get(); // by using epsilon 0.00001, we should get iterations 11 + result.graph().traversal().V().forEachRemaining(v -> { + assertEquals(3, v.keys().size()); // name, age/lang, pageRank + assertTrue(v.keys().contains("name")); + assertTrue(v.keys().contains(PageRankVertexProgram.PAGE_RANK)); + assertEquals(1, IteratorUtils.count(v.values("name"))); + assertEquals(1, IteratorUtils.count(v.values(PageRankVertexProgram.PAGE_RANK))); + final String name = v.value("name"); + final Double pageRank = v.value(PageRankVertexProgram.PAGE_RANK); + //System.out.println(name + "-----" + pageRank); + if (name.equals("marko")) + assertTrue(pageRank > 0.10 && pageRank < 0.12); + else if (name.equals("vadas")) + assertTrue(pageRank > 0.13 && pageRank < 0.15); + else if (name.equals("lop")) + assertTrue(pageRank > 0.29 && pageRank < 0.31); + else if (name.equals("josh")) + assertTrue(pageRank > 0.13 && pageRank < 0.15); + else if (name.equals("ripple")) + assertTrue(pageRank > 0.16 && pageRank < 0.18); + else if (name.equals("peter")) + assertTrue(pageRank > 0.10 && pageRank < 0.12); + else + throw new IllegalStateException("The following vertex should not exist in the graph: " + name); + }); + assertEquals(result.memory().getIteration(), 11); + assertEquals(result.memory().asMap().size(), 0); + } + } + @Test + @LoadGraphWith(MODERN) + public void shouldExecutePageRankWithEnergyConservation() throws Exception { + final ComputerResult result = graph.compute().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); + } } \ No newline at end of file