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 2015/10/09 17:50:33 UTC
[16/30] incubator-tinkerpop git commit: fixed a bug in GroupStepV3d0
OLAP. I will have to manually fix this in tp30/. Added test cases to validate
fixed behavior.
fixed a bug in GroupStepV3d0 OLAP. I will have to manually fix this in tp30/. Added test cases to validate fixed behavior.
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/01594ac2
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/01594ac2
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/01594ac2
Branch: refs/heads/TINKERPOP3-876
Commit: 01594ac2a20f7e25b0c8986c8e6ad611de6d4966
Parents: 897e70d
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Thu Oct 8 15:14:21 2015 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Thu Oct 8 15:14:21 2015 -0600
----------------------------------------------------------------------
.../traversal/step/map/GroupStepV3d0.java | 16 ++++++++-------
.../step/sideEffect/GroovyGroupTest.groovy | 5 +++++
.../step/sideEffect/GroovyGroupTestV3d0.groovy | 5 +++++
.../traversal/step/sideEffect/GroupTest.java | 21 ++++++++++++++++++++
.../step/sideEffect/GroupTestV3d0.java | 21 ++++++++++++++++++++
.../structure/TinkerGraphPlayTest.java | 2 +-
6 files changed, 62 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/01594ac2/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStepV3d0.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStepV3d0.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStepV3d0.java
index 0c338eb..04acf62 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStepV3d0.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStepV3d0.java
@@ -29,10 +29,10 @@ import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
import org.apache.tinkerpop.gremlin.process.traversal.step.MapReducer;
import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
import org.apache.tinkerpop.gremlin.process.traversal.step.util.BulkSet;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.FinalGet;
import org.apache.tinkerpop.gremlin.process.traversal.step.util.ReducingBarrierStep;
import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
import org.apache.tinkerpop.gremlin.process.traversal.traverser.util.TraverserSet;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.FinalGet;
import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalMatrix;
import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalUtil;
@@ -239,12 +239,14 @@ public final class GroupStepV3d0<S, K, V, R> extends ReducingBarrierStep<S, Map<
public void map(final Vertex vertex, final MapEmitter<K, Collection<V>> emitter) {
vertex.<TraverserSet<Object[]>>property(TraversalVertexProgram.HALTED_TRAVERSERS).ifPresent(traverserSet -> traverserSet.forEach(traverser -> {
final Object[] objects = traverser.get();
- if (objects[1] instanceof Collection)
- emitter.emit((K) objects[0], (Collection<V>) objects[1]);
- else {
- final List<V> collection = new ArrayList<>();
- collection.add((V) objects[1]);
- emitter.emit((K) objects[0], collection);
+ for (int i = 0; i < traverser.bulk(); i++) {
+ if (objects[1] instanceof Collection)
+ emitter.emit((K) objects[0], (Collection<V>) objects[1]);
+ else {
+ final List<V> collection = new ArrayList<>();
+ collection.add((V) objects[1]);
+ emitter.emit((K) objects[0], collection);
+ }
}
}));
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/01594ac2/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 df04b48..0216501 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
@@ -68,5 +68,10 @@ public abstract class GroovyGroupTest {
public Traversal<Vertex, Map<String, Double>> get_g_V_groupXaX_byXlabelX_byXoutE_weight_sumX_capXaX() {
TraversalScriptHelper.compute("g.V.group('a').by(label).by(outE().weight.sum).cap('a')", g);
}
+
+ @Override
+ public Traversal<Vertex, Map<String, Long>> get_g_V_repeatXbothXfollowedByXX_timesX2X_group_byXsongTypeX_byXcountX() {
+ TraversalScriptHelper.compute("g.V.repeat(both('followedBy')).times(2).group.by('songType').by(count())", g)
+ }
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/01594ac2/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyGroupTestV3d0.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyGroupTestV3d0.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyGroupTestV3d0.groovy
index 084ff2b..180e448 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyGroupTestV3d0.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyGroupTestV3d0.groovy
@@ -60,5 +60,10 @@ public abstract class GroovyGroupTestV3d0 {
public Traversal<Vertex, Map<Long, Collection<String>>> get_g_V_group_byXoutE_countX_byXnameX() {
TraversalScriptHelper.compute("g.V.groupV3d0.by(__.outE.count).by('name')", g)
}
+
+ @Override
+ public Traversal<Vertex, Map<String, Long>> get_g_V_repeatXbothXfollowedByXX_timesX2X_group_byXsongTypeX_byXcountX() {
+ TraversalScriptHelper.compute("g.V.repeat(both('followedBy')).times(2).groupV3d0.by('songType').by(count())", g)
+ }
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/01594ac2/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 4f2b708..1e3fa15 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
@@ -28,8 +28,10 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import java.util.Collection;
+import java.util.HashMap;
import java.util.Map;
+import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.GRATEFUL;
import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.*;
import static org.junit.Assert.*;
@@ -57,6 +59,8 @@ public abstract class GroupTest extends AbstractGremlinProcessTest {
public abstract Traversal<Vertex, Map<String, Double>> get_g_V_groupXaX_byXlabelX_byXoutE_weight_sumX_capXaX();
+ public abstract Traversal<Vertex, Map<String, Long>> get_g_V_repeatXbothXfollowedByXX_timesX2X_group_byXsongTypeX_byXcountX();
+
@Test
@LoadGraphWith(MODERN)
public void g_V_group_byXnameX() {
@@ -174,6 +178,18 @@ public abstract class GroupTest extends AbstractGremlinProcessTest {
assertEquals(3.5d, map.get("person"), 0.01d);
}
+ @Test
+ @LoadGraphWith(GRATEFUL)
+ public void g_V_repeatXbothXfollowedByXX_timesX2X_group_byXsongTypeX_byXcountX() {
+ final Traversal<Vertex, Map<String, Long>> traversal = get_g_V_repeatXbothXfollowedByXX_timesX2X_group_byXsongTypeX_byXcountX();
+ checkMap(new HashMap<String, Long>() {{
+ put("original", 771317l);
+ put("", 160968l);
+ put("cover", 368579l);
+ }}, traversal.next());
+ assertFalse(traversal.hasNext());
+ }
+
public static class Traversals extends GroupTest {
@Override
@@ -215,5 +231,10 @@ public abstract class GroupTest extends AbstractGremlinProcessTest {
public Traversal<Vertex, Map<String, Double>> get_g_V_groupXaX_byXlabelX_byXoutE_weight_sumX_capXaX() {
return g.V().<String, Double>group("a").by(T.label).by(outE().values("weight").sum()).cap("a");
}
+
+ @Override
+ public Traversal<Vertex, Map<String, Long>> get_g_V_repeatXbothXfollowedByXX_timesX2X_group_byXsongTypeX_byXcountX() {
+ return g.V().repeat(both("followedBy")).times(2).<String, Long>group().by("songType").by(count());
+ }
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/01594ac2/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupTestV3d0.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupTestV3d0.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupTestV3d0.java
index 8fbe52f..965458a 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupTestV3d0.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupTestV3d0.java
@@ -29,8 +29,10 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import java.util.Collection;
+import java.util.HashMap;
import java.util.Map;
+import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.GRATEFUL;
import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.*;
import static org.junit.Assert.*;
@@ -55,6 +57,8 @@ public abstract class GroupTestV3d0 extends AbstractGremlinProcessTest {
public abstract Traversal<Vertex, Map<Long, Collection<String>>> get_g_V_group_byXoutE_countX_byXnameX();
+ public abstract Traversal<Vertex, Map<String, Long>> get_g_V_repeatXbothXfollowedByXX_timesX2X_group_byXsongTypeX_byXcountX();
+
@Test
@LoadGraphWith(MODERN)
public void g_V_group_byXnameX() {
@@ -150,6 +154,18 @@ public abstract class GroupTestV3d0 extends AbstractGremlinProcessTest {
assertTrue(map.get(3l).contains("marko"));
}
+ @Test
+ @LoadGraphWith(GRATEFUL)
+ public void g_V_repeatXbothXfollowedByXX_timesX2X_group_byXsongTypeX_byXcountX() {
+ final Traversal<Vertex, Map<String, Long>> traversal = get_g_V_repeatXbothXfollowedByXX_timesX2X_group_byXsongTypeX_byXcountX();
+ checkMap(new HashMap<String, Long>() {{
+ put("original", 771317l);
+ put("", 160968l);
+ put("cover", 368579l);
+ }}, traversal.next());
+ assertFalse(traversal.hasNext());
+ }
+
public static class Traversals extends GroupTestV3d0 {
@Override
@@ -181,5 +197,10 @@ public abstract class GroupTestV3d0 extends AbstractGremlinProcessTest {
public Traversal<Vertex, Map<Long, Collection<String>>> get_g_V_group_byXoutE_countX_byXnameX() {
return g.V().<Long, Collection<String>>groupV3d0().by(outE().count()).by("name");
}
+
+ @Override
+ public Traversal<Vertex, Map<String, Long>> get_g_V_repeatXbothXfollowedByXX_timesX2X_group_byXsongTypeX_byXcountX() {
+ return g.V().repeat(both("followedBy")).times(2).<String, Long>groupV3d0().by("songType").by(count());
+ }
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/01594ac2/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphPlayTest.java
----------------------------------------------------------------------
diff --git a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphPlayTest.java b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphPlayTest.java
index e8f58bb..f86125a 100644
--- a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphPlayTest.java
+++ b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphPlayTest.java
@@ -49,7 +49,7 @@ public class TinkerGraphPlayTest {
@Ignore
public void benchmarkGroup() throws Exception {
Graph graph = TinkerGraph.open();
- GraphTraversalSource g = graph.traversal();
+ GraphTraversalSource g = graph.traversal(GraphTraversalSource.computer());
graph.io(GraphMLIo.build()).readGraph("data/grateful-dead.xml");
/////////