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 } } }
