some code clean up/organization and added a more complex group() nesting that requires an OLAP walk and an OLTP walk. Also found a bunch of HadoopGraph tests that were needlessly being Opt_Out'd -- fixed.
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/085be946 Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/085be946 Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/085be946 Branch: refs/heads/master Commit: 085be94691357db5615ed4281a978b686bce6898 Parents: e087123 Author: Marko A. Rodriguez <[email protected]> Authored: Tue May 24 01:23:14 2016 -0600 Committer: Marko A. Rodriguez <[email protected]> Committed: Tue May 24 01:23:14 2016 -0600 ---------------------------------------------------------------------- .../process/traversal/step/map/GroupStep.java | 59 ++++++--- .../step/sideEffect/GroovyGroupTest.groovy | 5 + .../traversal/step/sideEffect/GroupTest.java | 35 ++++++ .../gremlin/hadoop/structure/HadoopGraph.java | 124 ++++++++++++++----- 4 files changed, 172 insertions(+), 51 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/085be946/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStep.java ---------------------------------------------------------------------- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStep.java index 7a93796..77e39bb 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStep.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStep.java @@ -40,6 +40,9 @@ import org.apache.tinkerpop.gremlin.util.function.HashMapSupplier; import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils; import org.javatuples.Pair; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; import java.io.Serializable; import java.util.ArrayList; import java.util.HashMap; @@ -85,11 +88,11 @@ public final class GroupStep<S, K, V> extends ReducingBarrierStep<S, Map<K, V>> public Map<K, V> projectTraverser(final Traverser.Admin<S> traverser) { final Map<K, V> map = new HashMap<>(1); if (null == this.preTraversal) { - map.put(TraversalUtil.applyNullable(traverser, this.keyTraversal), (V) traverser.split()); + map.put(TraversalUtil.applyNullable(traverser, this.keyTraversal), (V) traverser); } else { final TraverserSet traverserSet = new TraverserSet<>(); this.preTraversal.reset(); - this.preTraversal.addStart(traverser.split()); + this.preTraversal.addStart(traverser); this.preTraversal.getEndStep().forEachRemaining(traverserSet::add); map.put(TraversalUtil.applyNullable(traverser, this.keyTraversal), (V) traverserSet); } @@ -150,6 +153,7 @@ public final class GroupStep<S, K, V> extends ReducingBarrierStep<S, Map<K, V>> public static final class GroupBiOperator<K, V> implements BinaryOperator<Map<K, V>>, Serializable { + // size limit before Barrier.processAllStarts() to lazy reduce private static final int SIZE_LIMIT = 1000; private Traversal.Admin<?, V> valueTraversal; @@ -173,6 +177,7 @@ public final class GroupStep<S, K, V> extends ReducingBarrierStep<S, Map<K, V>> if (null == objectA) { objectA = objectB; } else { + // TRAVERSER if (objectA instanceof Traverser.Admin) { if (objectB instanceof Traverser.Admin) { final TraverserSet set = new TraverserSet(); @@ -186,29 +191,28 @@ public final class GroupStep<S, K, V> extends ReducingBarrierStep<S, Map<K, V>> this.valueTraversal.reset(); ((Step) this.barrierStep).addStarts(set.iterator()); objectA = this.barrierStep.nextBarrier(); - } else { + } else objectA = objectB; - } } else if (objectB instanceof Pair) { final TraverserSet set = (TraverserSet) ((Pair) objectB).getValue0(); set.add((Traverser.Admin) objectA); - if (set.size() > SIZE_LIMIT) { + if (set.size() > SIZE_LIMIT) { // barrier step can never be null -- no need to check this.valueTraversal.reset(); ((Step) this.barrierStep).addStarts(set.iterator()); this.barrierStep.addBarrier(((Pair) objectB).getValue1()); objectA = this.barrierStep.nextBarrier(); - } else { + } else objectA = Pair.with(set, ((Pair) objectB).getValue1()); - } - } else { + } else objectA = Pair.with(new TraverserSet((Traverser.Admin) objectA), objectB); - } + // TRAVERSER SET } else if (objectA instanceof TraverserSet) { if (objectB instanceof Traverser.Admin) { - ((TraverserSet) objectA).add((Traverser.Admin) objectB); - if (null != this.barrierStep && ((TraverserSet) objectA).size() > SIZE_LIMIT) { + final TraverserSet set = (TraverserSet) objectA; + set.add((Traverser.Admin) objectB); + if (null != this.barrierStep && set.size() > SIZE_LIMIT) { this.valueTraversal.reset(); - ((Step) this.barrierStep).addStarts(((TraverserSet) objectA).iterator()); + ((Step) this.barrierStep).addStarts(set.iterator()); objectA = this.barrierStep.nextBarrier(); } } else if (objectB instanceof TraverserSet) { @@ -222,24 +226,30 @@ public final class GroupStep<S, K, V> extends ReducingBarrierStep<S, Map<K, V>> } else if (objectB instanceof Pair) { final TraverserSet set = (TraverserSet) objectA; set.addAll((TraverserSet) ((Pair) objectB).getValue0()); - if (set.size() > SIZE_LIMIT) { + if (set.size() > SIZE_LIMIT) { // barrier step can never be null -- no need to check this.valueTraversal.reset(); ((Step) this.barrierStep).addStarts(set.iterator()); this.barrierStep.addBarrier(((Pair) objectB).getValue1()); objectA = this.barrierStep.nextBarrier(); - } else { + } else objectA = Pair.with(set, ((Pair) objectB).getValue1()); - } - } else { + } else objectA = Pair.with(objectA, objectB); - } + // TRAVERSER SET + BARRIER } else if (objectA instanceof Pair) { if (objectB instanceof Traverser.Admin) { - ((TraverserSet) ((Pair) objectA).getValue0()).add((Traverser.Admin) objectB); + final TraverserSet set = ((TraverserSet) ((Pair) objectA).getValue0()); + set.add((Traverser.Admin) objectB); + if (set.size() > SIZE_LIMIT) { // barrier step can never be null -- no need to check + this.valueTraversal.reset(); + ((Step) this.barrierStep).addStarts(set.iterator()); + this.barrierStep.addBarrier(((Pair) objectA).getValue1()); + objectA = this.barrierStep.nextBarrier(); + } } else if (objectB instanceof TraverserSet) { final TraverserSet set = (TraverserSet) ((Pair) objectA).getValue0(); set.addAll((TraverserSet) objectB); - if (null != this.barrierStep && set.size() > SIZE_LIMIT) { + if (set.size() > SIZE_LIMIT) { // barrier step can never be null -- no need to check this.valueTraversal.reset(); ((Step) this.barrierStep).addStarts(set.iterator()); this.barrierStep.addBarrier(((Pair) objectA).getValue1()); @@ -259,6 +269,7 @@ public final class GroupStep<S, K, V> extends ReducingBarrierStep<S, Map<K, V>> ((Step) this.barrierStep).addStarts(((TraverserSet) ((Pair) objectA).getValue0()).iterator()); objectA = this.barrierStep.nextBarrier(); } + // BARRIER } else { if (objectB instanceof Traverser.Admin) { objectA = Pair.with(new TraverserSet<>((Traverser.Admin) objectB), objectA); @@ -282,6 +293,16 @@ public final class GroupStep<S, K, V> extends ReducingBarrierStep<S, Map<K, V>> } return mapA; } + + // necessary to control Java Serialization to ensure proper clearing of internal traverser data + private void writeObject(final ObjectOutputStream outputStream) throws IOException { + outputStream.writeObject(this.valueTraversal.clone()); + } + + private void readObject(final ObjectInputStream inputStream) throws IOException, ClassNotFoundException { + this.valueTraversal = (Traversal.Admin<?, V>) inputStream.readObject(); + this.barrierStep = TraversalHelper.getFirstStepOfAssignableClass(Barrier.class, this.valueTraversal).orElse(null); + } } http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/085be946/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyGroupTest.groovy ---------------------------------------------------------------------- diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyGroupTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyGroupTest.groovy index 156b350..13802b8 100644 --- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyGroupTest.groovy +++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyGroupTest.groovy @@ -113,5 +113,10 @@ public abstract class GroovyGroupTest { public Traversal<Vertex, Map<Long, Map<String, List<Vertex>>>> get_g_V_group_byXbothE_countX_byXgroup_byXlabelXX() { new ScriptTraversal<>(g, "gremlin-groovy", "g.V.group().by(bothE().count).by(group().by(label))") } + + @Override + public Traversal<Vertex, Map<String, Map<String, Number>>> get_g_V_outXfollowedByX_group_byXsongTypeX_byXbothE_group_byXlabelX_byXweight_sumXX() { + new ScriptTraversal<>(g, "gremlin-groovy", "g.V.out('followedBy').group.by('songType').by(bothE().group.by(label).by(values('weight').sum))") + } } } http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/085be946/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupTest.java ---------------------------------------------------------------------- diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupTest.java index d4c4d74..356eb58 100644 --- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupTest.java +++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupTest.java @@ -86,6 +86,8 @@ public abstract class GroupTest extends AbstractGremlinProcessTest { public abstract Traversal<Vertex, Map<Long, Map<String, List<Vertex>>>> get_g_V_group_byXbothE_countX_byXgroup_byXlabelXX(); + public abstract Traversal<Vertex, Map<String, Map<String, Number>>> get_g_V_outXfollowedByX_group_byXsongTypeX_byXbothE_group_byXlabelX_byXweight_sumXX(); + @Test @LoadGraphWith(MODERN) public void g_V_group_byXnameX() { @@ -393,6 +395,34 @@ public abstract class GroupTest extends AbstractGremlinProcessTest { assertTrue(list.contains(convertToVertex(graph, "josh"))); } + @Test + @LoadGraphWith(GRATEFUL) + public void g_V_outXfollowedByX_group_byXsongTypeX_byXbothE_group_byXlabelX_byXweight_sumXX() { + final Traversal<Vertex, Map<String, Map<String, Number>>> traversal = get_g_V_outXfollowedByX_group_byXsongTypeX_byXbothE_group_byXlabelX_byXweight_sumXX(); + final Map<String, Map<String, Number>> map = traversal.next(); + assertFalse(traversal.hasNext()); + assertEquals(3, map.size()); + assertTrue(map.containsKey("")); + assertTrue(map.containsKey("original")); + assertTrue(map.containsKey("cover")); + // + Map<String, Number> subMap = map.get(""); + assertEquals(1, subMap.size()); + assertEquals(179350, subMap.get("followedBy").intValue()); + // + subMap = map.get("original"); + assertEquals(3, subMap.size()); + assertEquals(2185613, subMap.get("followedBy").intValue()); + assertEquals(0, subMap.get("writtenBy").intValue()); + assertEquals(0, subMap.get("sungBy").intValue()); + // + subMap = map.get("cover"); + assertEquals(3, subMap.size()); + assertEquals(777982, subMap.get("followedBy").intValue()); + assertEquals(0, subMap.get("writtenBy").intValue()); + assertEquals(0, subMap.get("sungBy").intValue()); + } + public static class Traversals extends GroupTest { @Override @@ -479,5 +509,10 @@ public abstract class GroupTest extends AbstractGremlinProcessTest { public Traversal<Vertex, Map<Long, Map<String, List<Vertex>>>> get_g_V_group_byXbothE_countX_byXgroup_byXlabelXX() { return g.V().<Long, Map<String, List<Vertex>>>group().by(__.bothE().count()).by(__.group().by(T.label)); } + + @Override + public Traversal<Vertex, Map<String, Map<String, Number>>> get_g_V_outXfollowedByX_group_byXsongTypeX_byXbothE_group_byXlabelX_byXweight_sumXX() { + return g.V().out("followedBy").<String, Map<String, Number>>group().by("songType").by(__.bothE().group().by(T.label).by(__.values("weight").sum())); + } } } http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/085be946/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/HadoopGraph.java ---------------------------------------------------------------------- diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/HadoopGraph.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/HadoopGraph.java index bf2f08b..d643cd4 100644 --- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/HadoopGraph.java +++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/HadoopGraph.java @@ -53,97 +53,113 @@ import java.util.stream.Stream; @Graph.OptOut( test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.MatchTest$Traversals", method = "g_V_matchXa_hasXname_GarciaX__a_0writtenBy_b__a_0sungBy_bX", - reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.") + reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.", + computers = {"ALL"}) @Graph.OptOut( test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.MatchTest$Traversals", method = "g_V_matchXa_0sungBy_b__a_0sungBy_c__b_writtenBy_d__c_writtenBy_e__d_hasXname_George_HarisonX__e_hasXname_Bob_MarleyXX", - reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.") + reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.", + computers = {"ALL"}) @Graph.OptOut( test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.MatchTest$Traversals", method = "g_V_matchXa_0sungBy_b__a_0writtenBy_c__b_writtenBy_d__c_sungBy_d__d_hasXname_GarciaXX", - reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.") + reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.", + computers = {"ALL"}) @Graph.OptOut( test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.MatchTest$Traversals", method = "g_V_matchXa_0sungBy_b__a_0writtenBy_c__b_writtenBy_dX_whereXc_sungBy_dX_whereXd_hasXname_GarciaXX", - reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.") + reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.", + computers = {"ALL"}) @Graph.OptOut( test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.MatchTest$Traversals", method = "g_V_matchXa_knows_b__c_knows_bX", - reason = "Giraph does a hard kill on failure and stops threads which stops test cases. Exception handling semantics are correct though.") -//computers = {GiraphGraphComputer.class}) + reason = "Giraph does a hard kill on failure and stops threads which stops test cases. Exception handling semantics are correct though.", + computers = {"org.apache.tinkerpop.gremlin.giraph.process.computer.GiraphGraphComputer"}) @Graph.OptOut( test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.MatchTest$Traversals", method = "g_V_matchXa_created_b__c_created_bX_selectXa_b_cX_byXnameX", - reason = "Giraph does a hard kill on failure and stops threads which stops test cases. Exception handling semantics are correct though.") -//computers = {GiraphGraphComputer.class}) + reason = "Giraph does a hard kill on failure and stops threads which stops test cases. Exception handling semantics are correct though.", + computers = {"org.apache.tinkerpop.gremlin.giraph.process.computer.GiraphGraphComputer"}) @Graph.OptOut( test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.MatchTest$Traversals", method = "g_V_out_asXcX_matchXb_knows_a__c_created_eX_selectXcX", - reason = "Giraph does a hard kill on failure and stops threads which stops test cases. Exception handling semantics are correct though.") -// computers = {GiraphGraphComputer.class}) + reason = "Giraph does a hard kill on failure and stops threads which stops test cases. Exception handling semantics are correct though.", + computers = {"org.apache.tinkerpop.gremlin.giraph.process.computer.GiraphGraphComputer"}) @Graph.OptOut( test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyMatchTest$Traversals", method = "g_V_matchXa_hasXname_GarciaX__a_0writtenBy_b__a_0sungBy_bX", - reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.") + reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.", + computers = {"ALL"}) @Graph.OptOut( test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyMatchTest$Traversals", method = "g_V_matchXa_knows_b__c_knows_bX", - reason = "Giraph does a hard kill on failure and stops threads which stops test cases. Exception handling semantics are correct though.") -//computers = {GiraphGraphComputer.class}) + reason = "Giraph does a hard kill on failure and stops threads which stops test cases. Exception handling semantics are correct though.", + computers = {"org.apache.tinkerpop.gremlin.giraph.process.computer.GiraphGraphComputer"}) @Graph.OptOut( test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyMatchTest$Traversals", method = "g_V_matchXa_created_b__c_created_bX_selectXa_b_cX_byXnameX", - reason = "Giraph does a hard kill on failure and stops threads which stops test cases. Exception handling semantics are correct though.") -//computers = {GiraphGraphComputer.class}) + reason = "Giraph does a hard kill on failure and stops threads which stops test cases. Exception handling semantics are correct though.", + computers = {"org.apache.tinkerpop.gremlin.giraph.process.computer.GiraphGraphComputer"}) @Graph.OptOut( test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyMatchTest$Traversals", method = "g_V_out_asXcX_matchXb_knows_a__c_created_eX_selectXcX", - reason = "Giraph does a hard kill on failure and stops threads which stops test cases. Exception handling semantics are correct though.") -//computers = {GiraphGraphComputer.class}) + reason = "Giraph does a hard kill on failure and stops threads which stops test cases. Exception handling semantics are correct though.", + computers = {"org.apache.tinkerpop.gremlin.giraph.process.computer.GiraphGraphComputer"}) @Graph.OptOut( test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyMatchTest$Traversals", method = "g_V_matchXa_0sungBy_b__a_0sungBy_c__b_writtenBy_d__c_writtenBy_e__d_hasXname_George_HarisonX__e_hasXname_Bob_MarleyXX", - reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.") + reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.", + computers = {"ALL"}) @Graph.OptOut( test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyMatchTest$Traversals", method = "g_V_matchXa_0sungBy_b__a_0writtenBy_c__b_writtenBy_d__c_sungBy_d__d_hasXname_GarciaXX", - reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.") + reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.", + computers = {"ALL"}) @Graph.OptOut( test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyMatchTest$Traversals", method = "g_V_matchXa_0sungBy_b__a_0writtenBy_c__b_writtenBy_dX_whereXc_sungBy_dX_whereXd_hasXname_GarciaXX", - reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.") + reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.", + computers = {"ALL"}) @Graph.OptOut( test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.CountTest$Traversals", method = "g_V_both_both_count", - reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.") + reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.", + computers = {"ALL"}) @Graph.OptOut( test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.CountTest$Traversals", method = "g_V_repeatXoutX_timesX3X_count", - reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.") + reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.", + computers = {"ALL"}) @Graph.OptOut( test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.CountTest$Traversals", method = "g_V_repeatXoutX_timesX8X_count", - reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.") + reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.", + computers = {"ALL"}) @Graph.OptOut( test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.CountTest$Traversals", method = "g_V_repeatXoutX_timesX5X_asXaX_outXwrittenByX_asXbX_selectXa_bX_count", - reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.") + reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.", + computers = {"ALL"}) @Graph.OptOut( test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyCountTest$Traversals", method = "g_V_both_both_count", - reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.") + reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.", + computers = {"ALL"}) @Graph.OptOut( test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyCountTest$Traversals", method = "g_V_repeatXoutX_timesX3X_count", - reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.") + reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.", + computers = {"ALL"}) @Graph.OptOut( test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyCountTest$Traversals", method = "g_V_repeatXoutX_timesX8X_count", - reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.") + reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.", + computers = {"ALL"}) @Graph.OptOut( test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyCountTest$Traversals", method = "g_V_repeatXoutX_timesX5X_asXaX_outXwrittenByX_asXbX_selectXa_bX_count", - reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.") + reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.", + computers = {"ALL"}) @Graph.OptOut( test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.ProfileTest$Traversals", method = "grateful_V_out_out_profile", @@ -162,20 +178,64 @@ import java.util.stream.Stream; reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.") @Graph.OptOut( test = "org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroupTest", + method = "g_V_hasLabelXsongX_groupXaX_byXnameX_byXproperties_groupCount_byXlabelXX_out_capXaX", + reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.", + computers = {"ALL"}) [email protected]( + test = "org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroupTest", + method = "g_V_outXfollowedByX_group_byXsongTypeX_byXbothE_group_byXlabelX_byXweight_sumXX", + reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.", + computers = {"ALL"}) [email protected]( + test = "org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroupTest", method = "g_V_repeatXbothXfollowedByXX_timesX2X_group_byXsongTypeX_byXcountX", - reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.") + reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.", + computers = {"ALL"}) @Graph.OptOut( test = "org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroupTest", method = "g_V_repeatXbothXfollowedByXX_timesX2X_groupXaX_byXsongTypeX_byXcountX_capXaX", - reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.") + reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.", + computers = {"ALL"}) @Graph.OptOut( test = "org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroupTestV3d0", method = "g_V_repeatXbothXfollowedByXX_timesX2X_group_byXsongTypeX_byXcountX", - reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.") + reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.", + computers = {"ALL"}) @Graph.OptOut( test = "org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroupTestV3d0", method = "g_V_repeatXbothXfollowedByXX_timesX2X_groupXaX_byXsongTypeX_byXcountX_capXaX", - reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.") + reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.", + computers = {"ALL"}) [email protected]( + test = "org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroovyGroupTest$Traversals", + method = "g_V_hasLabelXsongX_groupXaX_byXnameX_byXproperties_groupCount_byXlabelXX_out_capXaX", + reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.", + computers = {"ALL"}) [email protected]( + test = "org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroovyGroupTest$Traversals", + method = "g_V_outXfollowedByX_group_byXsongTypeX_byXbothE_group_byXlabelX_byXweight_sumXX", + reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.", + computers = {"ALL"}) [email protected]( + test = "org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroovyGroupTest$Traversals", + method = "g_V_repeatXbothXfollowedByXX_timesX2X_group_byXsongTypeX_byXcountX", + reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.", + computers = {"ALL"}) [email protected]( + test = "org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroovyGroupTest$Traversals", + method = "g_V_repeatXbothXfollowedByXX_timesX2X_groupXaX_byXsongTypeX_byXcountX_capXaX", + reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.", + computers = {"ALL"}) [email protected]( + test = "org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroovyGroupTestV3d0$Traversals", + method = "g_V_repeatXbothXfollowedByXX_timesX2X_group_byXsongTypeX_byXcountX", + reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.", + computers = {"ALL"}) [email protected]( + test = "org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroovyGroupTestV3d0$Traversals", + method = "g_V_repeatXbothXfollowedByXX_timesX2X_groupXaX_byXsongTypeX_byXcountX_capXaX", + reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.", + computers = {"ALL"}) @Graph.OptOut( test = "org.apache.tinkerpop.gremlin.process.computer.GraphComputerTest", method = "shouldStartAndEndWorkersForVertexProgramAndMapReduce",
