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 2015/04/24 17:45:55 UTC

[09/31] incubator-tinkerpop git commit: added validateXXX methods to StarGraphTest and validated StarGraph and its Attachable.Method.GET.

added validateXXX methods to StarGraphTest and validated StarGraph and its Attachable.Method.GET.


Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/08682037
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/08682037
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/08682037

Branch: refs/heads/master
Commit: 08682037854003fc449f2ba5982d61a91b4a688c
Parents: 4e1a88a
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Thu Apr 23 15:51:52 2015 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Thu Apr 23 15:51:52 2015 -0600

----------------------------------------------------------------------
 .../structure/util/star/StarGraphTest.java      | 180 +++++++++----------
 1 file changed, 83 insertions(+), 97 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/08682037/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/util/star/StarGraphTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/util/star/StarGraphTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/util/star/StarGraphTest.java
index 3adbbc6..afa151e 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/util/star/StarGraphTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/util/star/StarGraphTest.java
@@ -27,10 +27,12 @@ import org.apache.tinkerpop.gremlin.LoadGraphWith;
 import org.apache.tinkerpop.gremlin.structure.Direction;
 import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.apache.tinkerpop.gremlin.structure.Property;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.VertexProperty;
 import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoReader;
 import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoWriter;
+import org.apache.tinkerpop.gremlin.structure.util.Attachable;
 import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
 import org.javatuples.Pair;
 import org.junit.Test;
@@ -38,23 +40,21 @@ import org.junit.Test;
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
-import java.util.ArrayList;
 import java.util.HashSet;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Random;
 import java.util.Set;
 import java.util.UUID;
-import java.util.concurrent.atomic.AtomicInteger;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.*;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
 public class StarGraphTest extends AbstractGremlinTest {
 
-    private static Pair<StarGraph, Integer> serializeDeserialize(final StarGraph starGraph)  {
+    private static Pair<StarGraph, Integer> serializeDeserialize(final StarGraph starGraph) {
         final ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
         GryoWriter.build().create().writeObject(outputStream, starGraph);
         try {
@@ -91,6 +91,23 @@ public class StarGraphTest extends AbstractGremlinTest {
     }
 
     @Test
+    @LoadGraphWith(LoadGraphWith.GraphData.MODERN)
+    public void testAttachableGetMethod() {
+        // vertex host
+        g.V().forEachRemaining(vertex -> StarGraph.of(vertex).getStarVertex().properties().forEachRemaining(vertexProperty -> validateVertexProperty(vertexProperty, ((Attachable<VertexProperty>) vertexProperty).attach(vertex, Attachable.Method.GET))));
+        g.V().forEachRemaining(vertex -> vertex.properties().forEachRemaining(vertexProperty -> vertexProperty.properties().forEachRemaining(property -> ((Attachable<Property>) property).attach(vertex, Attachable.Method.GET))));
+        g.V().forEachRemaining(vertex -> StarGraph.of(vertex).getStarVertex().edges(Direction.OUT).forEachRemaining(edge -> validateEdge(edge, ((Attachable<Edge>) edge).attach(vertex, Attachable.Method.GET))));
+        g.V().forEachRemaining(vertex -> StarGraph.of(vertex).getStarVertex().edges(Direction.OUT).forEachRemaining(edge -> edge.properties().forEachRemaining(property -> validateProperty(property, ((Attachable<Property>) property).attach(vertex, Attachable.Method.GET)))));
+
+        // graph host
+        g.V().forEachRemaining(vertex -> validateVertex(vertex, StarGraph.of(vertex).getStarVertex().attach(graph, Attachable.Method.GET)));
+        g.V().forEachRemaining(vertex -> StarGraph.of(vertex).getStarVertex().properties().forEachRemaining(vertexProperty -> validateVertexProperty(vertexProperty, ((Attachable<VertexProperty>) vertexProperty).attach(graph, Attachable.Method.GET))));
+        g.V().forEachRemaining(vertex -> vertex.properties().forEachRemaining(vertexProperty -> vertexProperty.properties().forEachRemaining(property -> ((Attachable<Property>) property).attach(graph, Attachable.Method.GET))));
+        g.V().forEachRemaining(vertex -> StarGraph.of(vertex).getStarVertex().edges(Direction.OUT).forEachRemaining(edge -> validateEdge(edge, ((Attachable<Edge>) edge).attach(graph, Attachable.Method.GET))));
+        g.V().forEachRemaining(vertex -> StarGraph.of(vertex).getStarVertex().edges(Direction.OUT).forEachRemaining(edge -> edge.properties().forEachRemaining(property -> validateProperty(property, ((Attachable<Property>) property).attach(graph, Attachable.Method.GET)))));
+    }
+
+    @Test
     @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
     @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_PROPERTY)
     @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_META_PROPERTIES)
@@ -135,100 +152,69 @@ public class StarGraphTest extends AbstractGremlinTest {
         System.out.println("Size reduction:            " + (float) detachedVertexSize / (float) starGraphSize);
     }
 
-    private void validateVertex(final Vertex originalVertex, final StarGraph.StarVertex starVertex) {
-        ////////////////  VALIDATE PROPERTIES
-        final AtomicInteger originalPropertyCounter = new AtomicInteger(0);
-        final AtomicInteger originalMetaPropertyCounter = new AtomicInteger(0);
-        final AtomicInteger starPropertyCounter = new AtomicInteger(0);
-        final AtomicInteger starMetaPropertyCounter = new AtomicInteger(0);
-
-        originalVertex.properties().forEachRemaining(vertexProperty -> {
-            originalPropertyCounter.incrementAndGet();
-            starVertex.properties(vertexProperty.label()).forEachRemaining(starVertexProperty -> {
-                if (starVertexProperty.equals(vertexProperty)) {
-                    starPropertyCounter.incrementAndGet();
-                    assertEquals(starVertexProperty.id(), vertexProperty.id());
-                    assertEquals(starVertexProperty.label(), vertexProperty.label());
-                    assertEquals(starVertexProperty.value(), vertexProperty.value());
-                    assertEquals(starVertexProperty.key(), vertexProperty.key());
-                    assertEquals(starVertexProperty.element(), vertexProperty.element());
-                    //
-                    vertexProperty.properties().forEachRemaining(p -> {
-                        originalMetaPropertyCounter.incrementAndGet();
-                        assertEquals(p.value(), starVertexProperty.property(p.key()).value());
-                        assertEquals(p.key(), starVertexProperty.property(p.key()).key());
-                        assertEquals(p.element(), starVertexProperty.property(p.key()).element());
-                    });
-                    starVertexProperty.properties().forEachRemaining(p -> starMetaPropertyCounter.incrementAndGet());
-                }
-            });
-        });
-
-        assertEquals(originalPropertyCounter.get(), starPropertyCounter.get());
-        assertEquals(originalMetaPropertyCounter.get(), starMetaPropertyCounter.get());
-
-        originalPropertyCounter.set(0);
-        starPropertyCounter.set(0);
-        originalMetaPropertyCounter.set(0);
-        starMetaPropertyCounter.set(0);
-        //
-        starVertex.properties().forEachRemaining(starVertexProperty -> {
-            starPropertyCounter.incrementAndGet();
-            originalVertex.properties(starVertexProperty.label()).forEachRemaining(vertexProperty -> {
-                if (starVertexProperty.equals(vertexProperty)) {
-                    originalPropertyCounter.incrementAndGet();
-                    assertEquals(vertexProperty.id(), starVertexProperty.id());
-                    assertEquals(vertexProperty.label(), starVertexProperty.label());
-                    assertEquals(vertexProperty.value(), starVertexProperty.value());
-                    assertEquals(vertexProperty.key(), starVertexProperty.key());
-                    assertEquals(vertexProperty.element(), starVertexProperty.element());
-                    starVertexProperty.properties().forEachRemaining(p -> {
-                        starMetaPropertyCounter.incrementAndGet();
-                        assertEquals(p.value(), vertexProperty.property(p.key()).value());
-                        assertEquals(p.key(), vertexProperty.property(p.key()).key());
-                        assertEquals(p.element(), vertexProperty.property(p.key()).element());
-                    });
-                    vertexProperty.properties().forEachRemaining(p -> originalMetaPropertyCounter.incrementAndGet());
-                }
-            });
-        });
-        assertEquals(originalPropertyCounter.get(), starPropertyCounter.get());
-        assertEquals(originalMetaPropertyCounter.get(), starMetaPropertyCounter.get());
-
-        ////////////////  VALIDATE EDGES
-        assertEquals(originalVertex, starVertex);
-        assertEquals(starVertex, originalVertex);
-        assertEquals(starVertex.id(), originalVertex.id());
-        assertEquals(starVertex.label(), originalVertex.label());
-        ///
-        List<Edge> originalEdges = new ArrayList<>(IteratorUtils.set(originalVertex.edges(Direction.OUT)));
-        List<Edge> starEdges = new ArrayList<>(IteratorUtils.set(starVertex.edges(Direction.OUT)));
-        assertEquals(originalEdges.size(), starEdges.size());
-        for (int i = 0; i < starEdges.size(); i++) {
-            final Edge starEdge = starEdges.get(i);
-            final Edge originalEdge = originalEdges.get(i);
-            assertEquals(starEdge, originalEdge);
-            assertEquals(starEdge.id(), originalEdge.id());
-            assertEquals(starEdge.label(), originalEdge.label());
-            assertEquals(starEdge.inVertex(), originalEdge.inVertex());
-            assertEquals(starEdge.outVertex(), originalEdge.outVertex());
-            originalEdge.properties().forEachRemaining(p -> assertEquals(p, starEdge.property(p.key())));
-            starEdge.properties().forEachRemaining(p -> assertEquals(p, originalEdge.property(p.key())));
+    private void validateVertex(final Vertex originalVertex, final Vertex otherVertex) {
+        assertEquals(originalVertex, otherVertex);
+        assertEquals(otherVertex, originalVertex);
+        assertEquals(originalVertex.id(), otherVertex.id());
+        assertEquals(originalVertex.label(), otherVertex.label());
+        assertEquals(originalVertex.keys().size(), otherVertex.keys().size());
+        for (final String key : originalVertex.keys()) {
+            final List<VertexProperty<Object>> originalVertexProperties = IteratorUtils.list(originalVertex.properties(key));
+            final List<VertexProperty<Object>> otherVertexProperties = IteratorUtils.list(otherVertex.properties(key));
+            assertEquals(originalVertexProperties.size(), otherVertexProperties.size());
+            for (VertexProperty<Object> originalVertexProperty : originalVertexProperties) {
+                final VertexProperty<Object> otherVertexProperty = otherVertexProperties.parallelStream().filter(vp -> vp.equals(originalVertexProperty)).findAny().get();
+                validateVertexProperty(originalVertexProperty, otherVertexProperty);
+            }
         }
 
-        originalEdges = new ArrayList<>(IteratorUtils.set(originalVertex.edges(Direction.IN)));
-        starEdges = new ArrayList<>(IteratorUtils.set(starVertex.edges(Direction.IN)));
-        assertEquals(originalEdges.size(), starEdges.size());
-        for (int i = 0; i < starEdges.size(); i++) {
-            final Edge starEdge = starEdges.get(i);
-            final Edge originalEdge = originalEdges.get(i);
-            assertEquals(starEdge, originalEdge);
-            assertEquals(starEdge.id(), originalEdge.id());
-            assertEquals(starEdge.label(), originalEdge.label());
-            assertEquals(starEdge.inVertex(), originalEdge.inVertex());
-            assertEquals(starEdge.outVertex(), originalEdge.outVertex());
-            originalEdge.properties().forEachRemaining(p -> assertEquals(p, starEdge.property(p.key())));
-            starEdge.properties().forEachRemaining(p -> assertEquals(p, originalEdge.property(p.key())));
+        Iterator<Edge> originalEdges = IteratorUtils.set(originalVertex.edges(Direction.OUT)).iterator();
+        Iterator<Edge> otherEdges = IteratorUtils.set(otherVertex.edges(Direction.OUT)).iterator();
+        while (originalEdges.hasNext()) {
+            validateEdge(originalEdges.next(), otherEdges.next());
         }
+        assertFalse(otherEdges.hasNext());
+
+        originalEdges = IteratorUtils.set(originalVertex.edges(Direction.IN)).iterator();
+        otherEdges = IteratorUtils.set(otherVertex.edges(Direction.IN)).iterator();
+        while (originalEdges.hasNext()) {
+            validateEdge(originalEdges.next(), otherEdges.next());
+        }
+        assertFalse(otherEdges.hasNext());
+
     }
+
+    private static void validateVertexProperty(final VertexProperty originalVertexProperty, final VertexProperty otherVertexProperty) {
+        assertEquals(originalVertexProperty.isPresent(), otherVertexProperty.isPresent());
+        if (originalVertexProperty.isPresent()) {
+            assertEquals(originalVertexProperty.key(), otherVertexProperty.key());
+            assertEquals(originalVertexProperty.value(), otherVertexProperty.value());
+            assertEquals(originalVertexProperty.element(), otherVertexProperty.element());
+            assertEquals(originalVertexProperty.keys().size(), otherVertexProperty.keys().size());
+            for (final String key : originalVertexProperty.keys()) {
+                validateProperty(originalVertexProperty.property(key), otherVertexProperty.property(key));
+            }
+        }
+    }
+
+    private static void validateProperty(final Property originalProperty, final Property otherProperty) {
+        assertEquals(originalProperty.isPresent(), otherProperty.isPresent());
+        if (originalProperty.isPresent()) {
+            assertEquals(originalProperty.key(), otherProperty.key());
+            assertEquals(originalProperty.value(), otherProperty.value());
+            assertEquals(originalProperty.element(), otherProperty.element());
+        }
+    }
+
+    private static void validateEdge(final Edge originalEdge, final Edge otherEdge) {
+        assertEquals(originalEdge.id(), otherEdge.id());
+        assertEquals(originalEdge.label(), otherEdge.label());
+        assertEquals(originalEdge.inVertex(), otherEdge.inVertex());
+        assertEquals(originalEdge.outVertex(), otherEdge.outVertex());
+        assertEquals(originalEdge.keys().size(), otherEdge.keys().size());
+        for (final String key : originalEdge.keys()) {
+            validateProperty(originalEdge.property(key), otherEdge.property(key));
+        }
+    }
+
 }