Coverage Summary for Class: TestVertexStepPerformance (org.umlg.sqlg.test.localvertexstep)

Class Class, % Method, % Branch, % Line, %
TestVertexStepPerformance 0% (0/1) 0% (0/5) 0% (0/16) 0% (0/78)


 package org.umlg.sqlg.test.localvertexstep;
 
 import org.apache.commons.lang3.time.StopWatch;
 import org.apache.tinkerpop.gremlin.process.traversal.Path;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.DefaultGraphTraversal;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
 import org.apache.tinkerpop.gremlin.structure.T;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.junit.Assert;
 import org.umlg.sqlg.test.BaseTest;
 
 import java.util.List;
 import java.util.Map;
 
 /**
  * Date: 2017/04/17
  * Time: 11:30 AM
  */
 class TestVertexStepPerformance extends BaseTest {
 
 //    @Test
     public void testLocalVertexStepNotOptimizedPerformance() {
         this.sqlgGraph.tx().normalBatchModeOn();
         for (int i = 0; i < 10_000; i++) {
             Vertex a1 = this.sqlgGraph.addVertex(T.label, "A", "name", "a1");
             Vertex a2 = this.sqlgGraph.addVertex(T.label, "A", "name", "a2");
             Vertex b1 = this.sqlgGraph.addVertex(T.label, "B", "name", "b1");
             a1.addEdge("ab", b1);
         }
         this.sqlgGraph.tx().commit();
 
         StopWatch stopWatch = new StopWatch();
         for (int i = 0; i < 1000; i++) {
             DefaultGraphTraversal<Vertex, Path> traversal = (DefaultGraphTraversal<Vertex, Path>) this.gt
                     .V()
                     .local(
                             __.optional(
                                     __.where(__.has(T.label, "A")).out()
                             )
                     ).path();
             stopWatch.start();
             List<Path> paths = traversal.toList();
             stopWatch.stop();
             System.out.println(stopWatch.toString());
             stopWatch.reset();
             Assert.assertEquals(30_000, paths.size());
         }
     }
 
 //    @Test
     public void testBatchingIncomingTraversersOnVertexStep() {
         this.sqlgGraph.tx().normalBatchModeOn();
         int count = 10;
         for (int i = 0; i < count; i++) {
             Vertex a1 = this.sqlgGraph.addVertex(T.label, "A");
             for (int j = 0; j < 10_000; j++) {
                 Vertex b1 = this.sqlgGraph.addVertex(T.label, "B");
                 a1.addEdge("ab", b1);
             }
         }
         this.sqlgGraph.tx().commit();
 
         StopWatch stopWatch = new StopWatch();
         for (int i = 0; i < 10_000; i++) {
             stopWatch.start();
             GraphTraversal<Vertex, Vertex> traversal = this.sqlgGraph.traversal()
                     .V()
                     .where(__.hasLabel("A"))
                     .out();
             List<Vertex> vertices = traversal.toList();
             stopWatch.stop();
             System.out.println(stopWatch.toString());
             stopWatch.reset();
             Assert.assertEquals(10_000 * 10, vertices.size());
 
         }
     }
 
 //    @Test
     public void testPreformanceBatchingIncomingTraversersOnLocalVertexStep() {
         this.sqlgGraph.tx().normalBatchModeOn();
         int count = 10_000;
         for (int i = 0; i < count; i++) {
             Vertex a1 = this.sqlgGraph.addVertex(T.label, "A");
             Vertex b1 = this.sqlgGraph.addVertex(T.label, "B");
             a1.addEdge("ab", b1);
         }
         this.sqlgGraph.tx().commit();
 
         for (int i = 0; i < 10000; i++) {
             StopWatch stopWatch = new StopWatch();
             stopWatch.start();
             GraphTraversal<Vertex, Vertex> traversal = this.sqlgGraph.traversal()
                     .V().hasLabel("A")
                     .local(
                             __.out()
                     );
             List<Vertex> vertices = traversal.toList();
             stopWatch.stop();
             System.out.println(stopWatch.toString());
             Assert.assertEquals(count, vertices.size());
         }
     }
 
     //TODO group is not optimized
 //    @Test
     public void testGroup() {
         loadGratefulDead();
 
         for (int i = 0; i < 10000; i++) {
             StopWatch stopWatch = new StopWatch();
             stopWatch.start();
             DefaultGraphTraversal<Vertex, Map<String, Map<String, Number>>> traversal = (DefaultGraphTraversal<Vertex, Map<String, Map<String, Number>>>) this.sqlgGraph.traversal()
                     .V()
                     .out("followedBy")
                     .<String, Map<String, Number>>group()
                     .by("songType")
                     .by(
                             __.bothE()
                                     .group()
                                     .by(T.label)
                                     .by(
                                             __.values("weight").sum()
                                     )
                     );
 
             final Map<String, Map<String, Number>> map = traversal.next();
             stopWatch.stop();
             System.out.println(stopWatch.toString());
         }
     }
 
 }