You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by ok...@apache.org on 2016/10/06 23:17:06 UTC

[2/7] tinkerpop git commit: ProfileTests and LazyBArrierStrategy don't play well with each other because ProfileTests expect certain bulks/counts/etc. Thus, if testing and there is ProfileStep, then the strategy is not applied.

ProfileTests and LazyBArrierStrategy don't play well with each other because ProfileTests expect certain bulks/counts/etc. Thus, if testing and there is ProfileStep, then the strategy is not applied.


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

Branch: refs/heads/TINKERPOP-1455-redux
Commit: 658630a9785952cada916377bb06283e9e85c6c4
Parents: 5f0e843
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Tue Oct 4 17:11:51 2016 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Tue Oct 4 17:11:51 2016 -0600

----------------------------------------------------------------------
 .../optimization/LazyBarrierStrategy.java       |  9 +++--
 .../optimization/LazyBarrierStrategyTest.java   |  1 +
 .../process/traversal/step/map/ProfileTest.java | 38 ++++++--------------
 3 files changed, 19 insertions(+), 29 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/658630a9/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/LazyBarrierStrategy.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/LazyBarrierStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/LazyBarrierStrategy.java
index f6f9021..176921e 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/LazyBarrierStrategy.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/LazyBarrierStrategy.java
@@ -28,6 +28,8 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.map.FlatMapStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.GraphStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.NoOpBarrierStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.VertexStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.ProfileSideEffectStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.ProfileStep;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.AbstractTraversalStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
@@ -41,6 +43,7 @@ import java.util.Set;
  */
 public final class LazyBarrierStrategy extends AbstractTraversalStrategy<TraversalStrategy.OptimizationStrategy> implements TraversalStrategy.OptimizationStrategy {
 
+    private final boolean IS_TESTING = Boolean.valueOf(System.getProperty("is.testing", "false"));
     private static final LazyBarrierStrategy INSTANCE = new LazyBarrierStrategy();
     private static final Set<Class<? extends OptimizationStrategy>> PRIORS = new HashSet<>(Arrays.asList(
             RangeByIsCountStrategy.class,
@@ -60,7 +63,9 @@ public final class LazyBarrierStrategy extends AbstractTraversalStrategy<Travers
     @Override
     public void apply(final Traversal.Admin<?, ?> traversal) {
         if (TraversalHelper.onGraphComputer(traversal) ||
-                traversal.getTraverserRequirements().contains(TraverserRequirement.PATH))
+                traversal.getTraverserRequirements().contains(TraverserRequirement.PATH) ||
+                (IS_TESTING && (TraversalHelper.hasStepOfAssignableClass(ProfileStep.class, TraversalHelper.getRootTraversal(traversal))) ||
+                        TraversalHelper.hasStepOfAssignableClass(ProfileSideEffectStep.class, TraversalHelper.getRootTraversal(traversal)))) // necessary cause ProfileTest analyzes counts
             return;
 
         boolean foundFlatMap = false;
@@ -70,7 +75,7 @@ public final class LazyBarrierStrategy extends AbstractTraversalStrategy<Travers
 
             if (step instanceof PathProcessor) {
                 final Set<String> keepLabels = ((PathProcessor) step).getKeepLabels();
-                if (null == keepLabels || keepLabels.isEmpty())
+                if (null != keepLabels && keepLabels.isEmpty()) // if no more path data, then start barrier'ing again
                     labeledPath = false;
             }
             if (step instanceof FlatMapStep &&

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/658630a9/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/LazyBarrierStrategyTest.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/LazyBarrierStrategyTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/LazyBarrierStrategyTest.java
index 314cfeb..f21c64a 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/LazyBarrierStrategyTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/LazyBarrierStrategyTest.java
@@ -94,6 +94,7 @@ public class LazyBarrierStrategyTest {
                 {__.out().as("a").out().in().where(P.neq("a")), __.out().as("a").out().in().where(P.neq("a")), Collections.emptyList()},
                 {__.out().as("a").out().in().where(P.neq("a")).out().out(), __.out().as("a").out().in().where(P.neq("a")).barrier(2500).out().barrier(SIZE).out(), Collections.singletonList(PathRetractionStrategy.instance())},
                 {__.out().as("a").out().as("b").in().where(P.neq("a")).out().out(), __.out().as("a").out().as("b").in().where(P.neq("a")).barrier(2500).out().barrier(SIZE).out(), Collections.singletonList(PathRetractionStrategy.instance())},
+                {__.out().as("a").out().as("b").in().where(P.neq("a")).out().out(), __.out().as("a").out().as("b").in().where(P.neq("a")).out().out(), Collections.emptyList()},
                 {__.out().as("a").out().as("b").in().where(P.neq("a")).out().select("b").out(), __.out().as("a").out().as("b").in().where(P.neq("a")).barrier(2500).out().select("b").barrier(2500).out(), Collections.singletonList(PathRetractionStrategy.instance())},
                 {__.out().as("a").out().as("b").in().where(P.neq("a")).out().select("b").out().out(), __.out().as("a").out().as("b").in().where(P.neq("a")).barrier(2500).out().select("b").barrier(2500).out().barrier(SIZE).out(), Collections.singletonList(PathRetractionStrategy.instance())},
         });

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/658630a9/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/ProfileTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/ProfileTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/ProfileTest.java
index 927f91d..548e7ab 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/ProfileTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/ProfileTest.java
@@ -32,7 +32,6 @@ import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
 import org.apache.tinkerpop.gremlin.process.traversal.step.Profiling;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.ProfileStep;
-import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.LazyBarrierStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.RangeByIsCountStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.RepeatUnrollStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.ComputerVerificationStrategy;
@@ -93,7 +92,6 @@ public abstract class ProfileTest extends AbstractGremlinProcessTest {
     @LoadGraphWith(MODERN)
     public void modern_V_out_out_profile() {
         final Traversal<Vertex, TraversalMetrics> traversal = get_g_V_out_out_profile();
-        traversal.asAdmin().getStrategies().removeStrategies(LazyBarrierStrategy.class);
         printTraversalForm(traversal);
         validate_g_V_out_out_profile_modern(traversal, traversal.next());
     }
@@ -102,7 +100,6 @@ public abstract class ProfileTest extends AbstractGremlinProcessTest {
     @LoadGraphWith(MODERN)
     public void modern_V_out_out_profileXmetricsX() {
         final Traversal<Vertex, Vertex> traversal = get_g_V_out_out_profileXmetricsX();
-        traversal.asAdmin().getStrategies().removeStrategies(LazyBarrierStrategy.class);
         printTraversalForm(traversal);
         traversal.iterate();
         validate_g_V_out_out_profile_modern(traversal, traversal.asAdmin().getSideEffects().<TraversalMetrics>get(METRICS_KEY));
@@ -138,7 +135,6 @@ public abstract class ProfileTest extends AbstractGremlinProcessTest {
     @LoadGraphWith(GRATEFUL)
     public void grateful_V_out_out_profile() {
         final Traversal<Vertex, TraversalMetrics> traversal = get_g_V_out_out_profile();
-        traversal.asAdmin().getStrategies().removeStrategies(LazyBarrierStrategy.class);
         printTraversalForm(traversal);
         final TraversalMetrics traversalMetrics = traversal.next();
         validate_g_V_out_out_profile_grateful(traversalMetrics);
@@ -148,7 +144,6 @@ public abstract class ProfileTest extends AbstractGremlinProcessTest {
     @LoadGraphWith(GRATEFUL)
     public void grateful_V_out_out_profileXmetricsX() {
         final Traversal<Vertex, Vertex> traversal = get_g_V_out_out_profileXmetricsX();
-        traversal.asAdmin().getStrategies().removeStrategies(LazyBarrierStrategy.class);
         printTraversalForm(traversal);
         traversal.iterate();
         final TraversalMetrics traversalMetrics = traversal.asAdmin().getSideEffects().<TraversalMetrics>get(METRICS_KEY);
@@ -190,7 +185,6 @@ public abstract class ProfileTest extends AbstractGremlinProcessTest {
     @IgnoreEngine(TraversalEngine.Type.COMPUTER)
     public void g_V_sideEffectXThread_sleepX10XX_sideEffectXThread_sleepX5XX_profile() {
         final Traversal<Vertex, TraversalMetrics> traversal = get_g_V_sideEffectXThread_sleepX10XX_sideEffectXThread_sleepX5XX_profile();
-        traversal.asAdmin().getStrategies().removeStrategies(LazyBarrierStrategy.class);
         printTraversalForm(traversal);
         TraversalMetrics traversalMetrics = traversal.next();
         assertEquals("There should be 8 steps in this traversal (counting injected profile steps).", 8, traversal.asAdmin().getSteps().size());
@@ -202,7 +196,6 @@ public abstract class ProfileTest extends AbstractGremlinProcessTest {
     @IgnoreEngine(TraversalEngine.Type.COMPUTER)
     public void g_V_sideEffectXThread_sleepX10XX_sideEffectXThread_sleepX5XX_profileXmetricsX() {
         final Traversal<Vertex, Vertex> traversal = get_g_V_sideEffectXThread_sleepX10XX_sideEffectXThread_sleepX5XX_profileXmetricsX();
-        traversal.asAdmin().getStrategies().removeStrategies(LazyBarrierStrategy.class);
         printTraversalForm(traversal);
         traversal.iterate();
         assertEquals("There should be 7 steps in this traversal (counting injected profile steps).", 7, traversal.asAdmin().getSteps().size());
@@ -237,7 +230,6 @@ public abstract class ProfileTest extends AbstractGremlinProcessTest {
     @LoadGraphWith(MODERN)
     public void g_V_repeat_both_profile() {
         final Traversal<Vertex, TraversalMetrics> traversal = get_g_V_repeatXbothX_timesX3X_profile();
-        traversal.asAdmin().getStrategies().removeStrategies(LazyBarrierStrategy.class);
         printTraversalForm(traversal);
 
         final TraversalMetrics traversalMetrics = traversal.next();
@@ -250,7 +242,6 @@ public abstract class ProfileTest extends AbstractGremlinProcessTest {
     @LoadGraphWith(MODERN)
     public void g_V_repeat_both_profileXmetricsX() {
         final Traversal<Vertex, Vertex> traversal = get_g_V_repeatXbothX_timesX3X_profileXmetricsX();
-        traversal.asAdmin().getStrategies().removeStrategies(LazyBarrierStrategy.class);
         printTraversalForm(traversal);
         traversal.iterate();
         final TraversalMetrics traversalMetrics = traversal.asAdmin().getSideEffects().<TraversalMetrics>get(METRICS_KEY);
@@ -316,7 +307,6 @@ public abstract class ProfileTest extends AbstractGremlinProcessTest {
     @LoadGraphWith(MODERN)
     public void g_V_whereXinXcreatedX_count_isX1XX_name_profile() {
         final Traversal<Vertex, TraversalMetrics> traversal = get_g_V_whereXinXcreatedX_count_isX1XX_name_profile();
-        traversal.asAdmin().getStrategies().removeStrategies(LazyBarrierStrategy.class);
         printTraversalForm(traversal);
         final TraversalMetrics traversalMetrics = traversal.next();
         validate_g_V_whereXinXcreatedX_count_isX1XX_name_profile(traversal, traversalMetrics);
@@ -326,7 +316,6 @@ public abstract class ProfileTest extends AbstractGremlinProcessTest {
     @LoadGraphWith(MODERN)
     public void g_V_whereXinXcreatedX_count_isX1XX_name_profileXmetricsX() {
         final Traversal<Vertex, String> traversal = get_g_V_whereXinXcreatedX_count_isX1XX_name_profileXmetricsX();
-        traversal.asAdmin().getStrategies().removeStrategies(LazyBarrierStrategy.class);
         printTraversalForm(traversal);
         traversal.iterate();
         final TraversalMetrics traversalMetrics = traversal.asAdmin().getSideEffects().<TraversalMetrics>get(METRICS_KEY);
@@ -364,14 +353,13 @@ public abstract class ProfileTest extends AbstractGremlinProcessTest {
     @Test
     @LoadGraphWith(MODERN)
     public void testProfileStrategyCallback() {
-        final Traversal<Vertex, TraversalMetrics> traversal = get_g_V_out_out_profile();
-        traversal.asAdmin().getStrategies().removeStrategies(LazyBarrierStrategy.class);
-        MockStep mockStep = new MockStep(traversal.asAdmin());
-        traversal.asAdmin().addStep(3, mockStep);
-        TraversalMetrics traversalMetrics = traversal.next();
+        final Traversal<Vertex, TraversalMetrics> t = get_g_V_out_out_profile();
+        MockStep mockStep = new MockStep(t.asAdmin());
+        t.asAdmin().addStep(3, mockStep);
+        TraversalMetrics traversalMetrics = t.next();
         assertTrue(mockStep.callbackCalled);
 
-        if (!onGraphComputer(traversal.asAdmin())) {
+        if (!onGraphComputer(t.asAdmin())) {
             assertEquals(100, traversalMetrics.getMetrics(3).getCount("bogusCount").longValue());
         }
     }
@@ -379,15 +367,14 @@ public abstract class ProfileTest extends AbstractGremlinProcessTest {
     @Test
     @LoadGraphWith(MODERN)
     public void testProfileStrategyCallbackSideEffect() {
-        final Traversal<Vertex, Vertex> traversal = get_g_V_out_out_profileXmetricsX();
-        traversal.asAdmin().getStrategies().removeStrategies(LazyBarrierStrategy.class);
-        MockStep mockStep = new MockStep(traversal.asAdmin());
-        traversal.asAdmin().addStep(3, mockStep);
-        traversal.iterate();
+        final Traversal<Vertex, Vertex> t = get_g_V_out_out_profileXmetricsX();
+        MockStep mockStep = new MockStep(t.asAdmin());
+        t.asAdmin().addStep(3, mockStep);
+        t.iterate();
         assertTrue(mockStep.callbackCalled);
 
-        if (!onGraphComputer(traversal.asAdmin())) {
-            final TraversalMetrics traversalMetrics = traversal.asAdmin().getSideEffects().<TraversalMetrics>get(METRICS_KEY);
+        if (!onGraphComputer(t.asAdmin())) {
+            final TraversalMetrics traversalMetrics = t.asAdmin().getSideEffects().<TraversalMetrics>get(METRICS_KEY);
             assertEquals(100, traversalMetrics.getMetrics(3).getCount("bogusCount").longValue());
         }
     }
@@ -396,7 +383,6 @@ public abstract class ProfileTest extends AbstractGremlinProcessTest {
     @LoadGraphWith(MODERN)
     public void g_V_matchXa_created_b__b_in_count_isXeqX1XXX_selectXa_bX_profile() {
         final Traversal<Vertex, TraversalMetrics> traversal = get_g_V_matchXa_created_b__b_in_count_isXeqX1XXX_selectXa_bX_profile();
-        traversal.asAdmin().getStrategies().removeStrategies(LazyBarrierStrategy.class);
         printTraversalForm(traversal);
         traversal.iterate();
     }
@@ -405,7 +391,6 @@ public abstract class ProfileTest extends AbstractGremlinProcessTest {
     @LoadGraphWith(MODERN)
     public void g_V_matchXa_created_b__b_in_count_isXeqX1XXX_selectXa_bX_profileXmetricsX() {
         final Traversal<Vertex, Map<String, String>> traversal = get_g_V_matchXa_created_b__b_in_count_isXeqX1XXX_selectXa_bX_profileXmetricsX();
-        traversal.asAdmin().getStrategies().removeStrategies(LazyBarrierStrategy.class);
         printTraversalForm(traversal);
         traversal.iterate();
     }
@@ -415,7 +400,6 @@ public abstract class ProfileTest extends AbstractGremlinProcessTest {
     @IgnoreEngine(TraversalEngine.Type.STANDARD)
     public void g_V_hasLabelXpersonX_pageRank_byXrankX_byXbothEX_rank_profile() {
         final Traversal<Vertex, TraversalMetrics> traversal = get_g_V_hasLabelXpersonX_pageRank_byXrankX_byXbothEX_rank_profile();
-        traversal.asAdmin().getStrategies().removeStrategies(LazyBarrierStrategy.class);
         //printTraversalForm(traversal);
         try {
             traversal.iterate();