Replaced SackStrategy performance test with a sanity check, that only verifies, 
that we get
a diversified set of hashcodes for traversers that carry unmergeable sacks.


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

Branch: refs/heads/tp32
Commit: 73e2b9cbcfb565919983a7a9f7d7765990a7416f
Parents: e16e52b
Author: Daniel Kuppitz <[email protected]>
Authored: Tue Aug 29 08:43:49 2017 -0700
Committer: Daniel Kuppitz <[email protected]>
Committed: Tue Aug 29 08:43:49 2017 -0700

----------------------------------------------------------------------
 .../strategy/decoration/SackStrategyTest.java   | 22 +++++++-------------
 1 file changed, 8 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/73e2b9cb/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/SackStrategyTest.java
----------------------------------------------------------------------
diff --git 
a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/SackStrategyTest.java
 
b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/SackStrategyTest.java
index 92f25e8..7576e9a 100644
--- 
a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/SackStrategyTest.java
+++ 
b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/SackStrategyTest.java
@@ -20,10 +20,10 @@ package 
org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration;
 
 import org.apache.tinkerpop.gremlin.process.traversal.Operator;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
+import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
 import 
org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversalStrategies;
-import org.apache.tinkerpop.gremlin.util.TimeUtil;
 import org.junit.Test;
 import org.junit.experimental.runners.Enclosed;
 import org.junit.runner.RunWith;
@@ -31,7 +31,7 @@ import org.junit.runner.RunWith;
 import java.util.stream.IntStream;
 
 import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.lessThan;
+import static org.hamcrest.Matchers.greaterThan;
 import static org.junit.Assert.assertThat;
 
 /**
@@ -40,27 +40,21 @@ import static org.junit.Assert.assertThat;
 @RunWith(Enclosed.class)
 public class SackStrategyTest {
 
-    public static class PerformanceTest {
+    public static class SanityCheck {
 
-        /**
-         * Check the traverser's hashcode() implementation if this test fails. 
hashcode() should
-         * not generate too many hash collisions.
-         */
         @Test
-        public void sacksWithoutMergerShouldBeFast() {
+        public void 
traversersWithUnmergeableSacksShouldGenerateDiversifiedHashCodes() {
 
             final TraversalStrategies strategies = new 
DefaultTraversalStrategies();
             strategies.addStrategies(SackStrategy.build().initialValue(() -> 
0).create());
 
             final Integer[] starts = IntStream.range(0, 
8192).boxed().toArray(Integer[]::new);
-            final GraphTraversal traversal = 
__.inject(starts).sack(Operator.mult).sack().barrier();
+            final GraphTraversal<Integer, Long> traversal = 
__.inject(starts).sack(Operator.mult).sack().
+                    map(Traverser::hashCode).dedup().count();
+
             traversal.asAdmin().setStrategies(strategies);
             traversal.asAdmin().applyStrategies();
-
-            final double runtime = TimeUtil.clock(10,
-                    () -> traversal.asAdmin().clone().iterate());
-
-            assertThat(runtime, is(lessThan(50.0)));
+            assertThat(traversal.next(), is(greaterThan(8100L))); // allow a 
few hash collisions
         }
     }
 }

Reply via email to