You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by dk...@apache.org on 2018/02/17 05:22:30 UTC
[1/4] tinkerpop git commit: Fixed the behavior of `min()`, `max()`,
and `mean()`. If no input is given,
these steps will now throw a `FastNoElementException`.
Repository: tinkerpop
Updated Branches:
refs/heads/TINKERPOP-1777-master [created] 7cae75af4
Fixed the behavior of `min()`, `max()`, and `mean()`.
If no input is given, these steps will now throw a `FastNoElementException`.
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/f69c715f
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/f69c715f
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/f69c715f
Branch: refs/heads/TINKERPOP-1777-master
Commit: f69c715fe837d21bcc8f34efe2aaa72021b53088
Parents: 041bb3f
Author: Daniel Kuppitz <da...@hotmail.com>
Authored: Wed Feb 7 08:18:17 2018 -0700
Committer: Daniel Kuppitz <da...@hotmail.com>
Committed: Wed Feb 14 18:32:44 2018 -0700
----------------------------------------------------------------------
CHANGELOG.asciidoc | 1 +
.../traversal/step/map/ComputerResultStep.java | 4 +-
.../process/traversal/step/filter/AndStep.java | 3 +-
.../traversal/step/map/MaxGlobalStep.java | 8 +++-
.../traversal/step/map/MaxLocalStep.java | 9 ++--
.../traversal/step/map/MeanGlobalStep.java | 6 +++
.../traversal/step/map/MeanLocalStep.java | 4 +-
.../traversal/step/map/MinGlobalStep.java | 6 +++
.../traversal/step/map/MinLocalStep.java | 9 ++--
.../process/traversal/step/map/MaxTest.java | 48 +++++++++++++++++++-
.../process/traversal/step/map/MeanTest.java | 43 ++++++++++++++++--
.../process/traversal/step/map/MinTest.java | 46 +++++++++++++++++++
.../SparkStarBarrierInterceptor.java | 32 +++++++------
.../structure/TinkerGraphPlayTest.java | 7 +--
14 files changed, 185 insertions(+), 41 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f69c715f/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index b735361..4c1efb0 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -272,6 +272,7 @@ image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/ima
[[release-3-2-8]]
=== TinkerPop 3.2.8 (Release Date: NOT OFFICIALLY RELEASED YET)
+* Fixed a bug in `ReducingBarrierStep`, that returned the provided seed value despite no elements being available.
* Modified `GremlinDslProcessor` so that it generated the `getAnonymousTraversalClass()` method to return the DSL version of `__`.
* Added the "Kitchen Sink" test data set.
* Fixed a bug in `NumberHelper` that led to wrong min/max results if numbers exceeded the Integer limits.
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f69c715f/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/ComputerResultStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/ComputerResultStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/ComputerResultStep.java
index b5fd8e8..95e572d 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/ComputerResultStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/ComputerResultStep.java
@@ -66,7 +66,9 @@ public final class ComputerResultStep<S> extends AbstractStep<ComputerResult, S>
return this.currentIterator.next();
else {
final ComputerResult result = this.starts.next().get();
- this.currentIterator = attach(result.memory().<TraverserSet<S>>get(TraversalVertexProgram.HALTED_TRAVERSERS).iterator(), result.graph());
+ this.currentIterator = attach(result.memory().exists(TraversalVertexProgram.HALTED_TRAVERSERS)
+ ? result.memory().<TraverserSet<S>>get(TraversalVertexProgram.HALTED_TRAVERSERS).iterator()
+ : EmptyIterator.instance(), result.graph());
}
}
}
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f69c715f/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/AndStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/AndStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/AndStep.java
index 5d9d124..d66dde4 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/AndStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/AndStep.java
@@ -36,7 +36,6 @@ public final class AndStep<S> extends ConnectiveStep<S> {
for (final Traversal.Admin<S, ?> traversal : this.traversals) {
if (!TraversalUtil.test(traverser, traversal))
return false;
- }
return true;
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f69c715f/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MaxGlobalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MaxGlobalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MaxGlobalStep.java
index 954dbfe..8cb798c 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MaxGlobalStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MaxGlobalStep.java
@@ -41,7 +41,13 @@ public final class MaxGlobalStep<S extends Number> extends ReducingBarrierStep<S
}
@Override
- public S projectTraverser(Traverser.Admin<S> traverser) {
+ public void processAllStarts() {
+ if (this.starts.hasNext())
+ super.processAllStarts();
+ }
+
+ @Override
+ public S projectTraverser(final Traverser.Admin<S> traverser) {
return traverser.get();
}
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f69c715f/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MaxLocalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MaxLocalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MaxLocalStep.java
index 2baca28..909a4c7 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MaxLocalStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MaxLocalStep.java
@@ -21,6 +21,7 @@ package org.apache.tinkerpop.gremlin.process.traversal.step.map;
import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
+import org.apache.tinkerpop.gremlin.process.traversal.util.FastNoSuchElementException;
import java.util.Collections;
import java.util.Iterator;
@@ -40,17 +41,15 @@ public final class MaxLocalStep<E extends Number, S extends Iterable<E>> extends
@Override
protected E map(final Traverser.Admin<S> traverser) {
- Number result;
final Iterator<E> iterator = traverser.get().iterator();
if (iterator.hasNext()) {
- result = iterator.next();
+ Number result = iterator.next();
while (iterator.hasNext()) {
result = max(iterator.next(), result);
}
- } else {
- result = Double.NaN;
+ return (E) result;
}
- return (E) result;
+ throw FastNoSuchElementException.instance();
}
@Override
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f69c715f/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MeanGlobalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MeanGlobalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MeanGlobalStep.java
index 2f1c1dc..5e90336 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MeanGlobalStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MeanGlobalStep.java
@@ -49,6 +49,12 @@ public final class MeanGlobalStep<S extends Number, E extends Number> extends Re
}
@Override
+ public void processAllStarts() {
+ if (this.starts.hasNext())
+ super.processAllStarts();
+ }
+
+ @Override
public E projectTraverser(final Traverser.Admin<S> traverser) {
return (E) new MeanNumber(traverser.get(), traverser.bulk());
}
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f69c715f/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MeanLocalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MeanLocalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MeanLocalStep.java
index 99005c9..91447fd 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MeanLocalStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MeanLocalStep.java
@@ -22,6 +22,7 @@ import org.apache.tinkerpop.gremlin.util.NumberHelper;
import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
+import org.apache.tinkerpop.gremlin.process.traversal.util.FastNoSuchElementException;
import java.util.Collections;
import java.util.Iterator;
@@ -48,9 +49,8 @@ public final class MeanLocalStep<E extends Number, S extends Iterable<E>> extend
counter++;
}
return NumberHelper.div(result, counter, true);
- } else {
- return Double.NaN;
}
+ throw FastNoSuchElementException.instance();
}
@Override
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f69c715f/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MinGlobalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MinGlobalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MinGlobalStep.java
index 7d0eb56..e476f5c 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MinGlobalStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MinGlobalStep.java
@@ -41,6 +41,12 @@ public final class MinGlobalStep<S extends Number> extends ReducingBarrierStep<S
}
@Override
+ public void processAllStarts() {
+ if (this.starts.hasNext())
+ super.processAllStarts();
+ }
+
+ @Override
public S projectTraverser(final Traverser.Admin<S> traverser) {
return traverser.get();
}
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f69c715f/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MinLocalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MinLocalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MinLocalStep.java
index e7e001c..64c89e3 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MinLocalStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MinLocalStep.java
@@ -21,6 +21,7 @@ package org.apache.tinkerpop.gremlin.process.traversal.step.map;
import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
+import org.apache.tinkerpop.gremlin.process.traversal.util.FastNoSuchElementException;
import java.util.Collections;
import java.util.Iterator;
@@ -40,17 +41,15 @@ public final class MinLocalStep<E extends Number, S extends Iterable<E>> extends
@Override
protected E map(final Traverser.Admin<S> traverser) {
- Number result;
final Iterator<E> iterator = traverser.get().iterator();
if (iterator.hasNext()) {
- result = iterator.next();
+ Number result = iterator.next();
while (iterator.hasNext()) {
result = min(iterator.next(), result);
}
- } else {
- result = Double.NaN;
+ return (E) result;
}
- return (E) result;
+ throw FastNoSuchElementException.instance();
}
@Override
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f69c715f/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MaxTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MaxTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MaxTest.java
index fae3f92..f13cdb5 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MaxTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MaxTest.java
@@ -21,6 +21,7 @@ package org.apache.tinkerpop.gremlin.process.traversal.step.map;
import org.apache.tinkerpop.gremlin.LoadGraphWith;
import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
import org.apache.tinkerpop.gremlin.process.GremlinProcessRunner;
+import org.apache.tinkerpop.gremlin.process.traversal.Scope;
import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
import org.apache.tinkerpop.gremlin.structure.Vertex;
import org.junit.Test;
@@ -41,6 +42,12 @@ public abstract class MaxTest extends AbstractGremlinProcessTest {
public abstract Traversal<Vertex, Integer> get_g_V_age_max();
+ public abstract Traversal<Vertex, Integer> get_g_V_age_fold_maxXlocalX();
+
+ public abstract Traversal<Vertex, Number> get_g_V_foo_max();
+
+ public abstract Traversal<Vertex, Number> get_g_V_foo_fold_maxXlocalX();
+
public abstract Traversal<Vertex, Integer> get_g_V_repeatXbothX_timesX5X_age_max();
public abstract Traversal<Vertex, Map<String, Number>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_weight_maxX();
@@ -55,6 +62,30 @@ public abstract class MaxTest extends AbstractGremlinProcessTest {
@Test
@LoadGraphWith(MODERN)
+ public void g_V_age_fold_maxXlocalX() {
+ final Traversal<Vertex, Integer> traversal = get_g_V_age_fold_maxXlocalX();
+ printTraversalForm(traversal);
+ checkResults(Arrays.asList(35), traversal);
+ }
+
+ @Test
+ @LoadGraphWith(MODERN)
+ public void g_V_foo_max() {
+ final Traversal<Vertex, Number> traversal = get_g_V_foo_max();
+ printTraversalForm(traversal);
+ assertFalse(traversal.hasNext());
+ }
+
+ @Test
+ @LoadGraphWith(MODERN)
+ public void g_V_foo_fold_maxXlocalX() {
+ final Traversal<Vertex, Number> traversal = get_g_V_foo_fold_maxXlocalX();
+ printTraversalForm(traversal);
+ assertFalse(traversal.hasNext());
+ }
+
+ @Test
+ @LoadGraphWith(MODERN)
public void g_V_repeatXbothX_timesX5X_age_max() {
final Traversal<Vertex, Integer> traversal = get_g_V_repeatXbothX_timesX5X_age_max();
printTraversalForm(traversal);
@@ -82,6 +113,21 @@ public abstract class MaxTest extends AbstractGremlinProcessTest {
}
@Override
+ public Traversal<Vertex, Integer> get_g_V_age_fold_maxXlocalX() {
+ return g.V().values("age").fold().max(Scope.local);
+ }
+
+ @Override
+ public Traversal<Vertex, Number> get_g_V_foo_max() {
+ return g.V().values("foo").max();
+ }
+
+ @Override
+ public Traversal<Vertex, Number> get_g_V_foo_fold_maxXlocalX() {
+ return g.V().values("foo").fold().max(Scope.local);
+ }
+
+ @Override
public Traversal<Vertex, Integer> get_g_V_repeatXbothX_timesX5X_age_max() {
return g.V().repeat(both()).times(5).values("age").max();
}
@@ -91,4 +137,4 @@ public abstract class MaxTest extends AbstractGremlinProcessTest {
return g.V().hasLabel("software").<String, Number>group().by("name").by(bothE().values("weight").max());
}
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f69c715f/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MeanTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MeanTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MeanTest.java
index ab47605..34bef6d 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MeanTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MeanTest.java
@@ -21,11 +21,13 @@ package org.apache.tinkerpop.gremlin.process.traversal.step.map;
import org.apache.tinkerpop.gremlin.LoadGraphWith;
import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
import org.apache.tinkerpop.gremlin.process.GremlinProcessRunner;
+import org.apache.tinkerpop.gremlin.process.traversal.Scope;
import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
import org.apache.tinkerpop.gremlin.structure.Vertex;
import org.junit.Test;
import org.junit.runner.RunWith;
+import java.util.Arrays;
import java.util.Map;
import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
@@ -40,16 +42,32 @@ public abstract class MeanTest extends AbstractGremlinProcessTest {
public abstract Traversal<Vertex, Double> get_g_V_age_mean();
+ public abstract Traversal<Vertex, Double> get_g_V_age_fold_meanXlocalX();
+
+ public abstract Traversal<Vertex, Number> get_g_V_foo_mean();
+
+ public abstract Traversal<Vertex, Number> get_g_V_foo_fold_meanXlocalX();
+
public abstract Traversal<Vertex, Map<String, Number>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_weight_meanX();
@Test
@LoadGraphWith(MODERN)
public void g_V_age_mean() {
- final Traversal<Vertex, Double> traversal = get_g_V_age_mean();
- printTraversalForm(traversal);
- final Double mean = traversal.next();
- assertEquals(30.75, mean, 0.05);
- assertFalse(traversal.hasNext());
+ for (final Traversal<Vertex, Double> traversal : Arrays.asList(get_g_V_age_mean(), get_g_V_age_fold_meanXlocalX())) {
+ printTraversalForm(traversal);
+ final Double mean = traversal.next();
+ assertEquals(30.75, mean, 0.05);
+ assertFalse(traversal.hasNext());
+ }
+ }
+
+ @Test
+ @LoadGraphWith(MODERN)
+ public void g_V_foo_mean() {
+ for (final Traversal<Vertex, Number> traversal : Arrays.asList(get_g_V_foo_mean(), get_g_V_foo_fold_meanXlocalX())) {
+ printTraversalForm(traversal);
+ assertFalse(traversal.hasNext());
+ }
}
@Test
@@ -73,6 +91,21 @@ public abstract class MeanTest extends AbstractGremlinProcessTest {
}
@Override
+ public Traversal<Vertex, Double> get_g_V_age_fold_meanXlocalX() {
+ return g.V().values("age").fold().mean(Scope.local);
+ }
+
+ @Override
+ public Traversal<Vertex, Number> get_g_V_foo_mean() {
+ return g.V().values("foo").mean();
+ }
+
+ @Override
+ public Traversal<Vertex, Number> get_g_V_foo_fold_meanXlocalX() {
+ return g.V().values("foo").fold().mean(Scope.local);
+ }
+
+ @Override
public Traversal<Vertex, Map<String, Number>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_weight_meanX() {
return g.V().hasLabel("software").<String, Number>group().by("name").by(bothE().values("weight").mean());
}
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f69c715f/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MinTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MinTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MinTest.java
index 947137f..10f6bc8 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MinTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MinTest.java
@@ -21,6 +21,7 @@ package org.apache.tinkerpop.gremlin.process.traversal.step.map;
import org.apache.tinkerpop.gremlin.LoadGraphWith;
import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
import org.apache.tinkerpop.gremlin.process.GremlinProcessRunner;
+import org.apache.tinkerpop.gremlin.process.traversal.Scope;
import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
import org.apache.tinkerpop.gremlin.structure.Vertex;
import org.junit.Test;
@@ -43,6 +44,12 @@ public abstract class MinTest extends AbstractGremlinProcessTest {
public abstract Traversal<Vertex, Integer> get_g_V_age_min();
+ public abstract Traversal<Vertex, Integer> get_g_V_age_fold_minXlocalX();
+
+ public abstract Traversal<Vertex, Number> get_g_V_foo_min();
+
+ public abstract Traversal<Vertex, Number> get_g_V_foo_fold_minXlocalX();
+
public abstract Traversal<Vertex, Integer> get_g_V_repeatXbothX_timesX5X_age_min();
public abstract Traversal<Vertex, Map<String, Number>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_weight_minX();
@@ -59,6 +66,30 @@ public abstract class MinTest extends AbstractGremlinProcessTest {
@Test
@LoadGraphWith(MODERN)
+ public void g_V_age_fold_minXlocalX() {
+ final Traversal<Vertex, Integer> traversal = get_g_V_age_fold_minXlocalX();
+ printTraversalForm(traversal);
+ checkResults(Arrays.asList(27), traversal);
+ }
+
+ @Test
+ @LoadGraphWith(MODERN)
+ public void g_V_foo_min() {
+ final Traversal<Vertex, Number> traversal = get_g_V_foo_min();
+ printTraversalForm(traversal);
+ assertFalse(traversal.hasNext());
+ }
+
+ @Test
+ @LoadGraphWith(MODERN)
+ public void g_V_foo_fold_minXlocalX() {
+ final Traversal<Vertex, Number> traversal = get_g_V_foo_fold_minXlocalX();
+ printTraversalForm(traversal);
+ assertFalse(traversal.hasNext());
+ }
+
+ @Test
+ @LoadGraphWith(MODERN)
public void g_V_repeatXbothX_timesX5X_age_min() {
final Traversal<Vertex, Integer> traversal = get_g_V_repeatXbothX_timesX5X_age_min();
printTraversalForm(traversal);
@@ -96,6 +127,21 @@ public abstract class MinTest extends AbstractGremlinProcessTest {
}
@Override
+ public Traversal<Vertex, Integer> get_g_V_age_fold_minXlocalX() {
+ return g.V().values("age").fold().min(Scope.local);
+ }
+
+ @Override
+ public Traversal<Vertex, Number> get_g_V_foo_min() {
+ return g.V().values("foo").min();
+ }
+
+ @Override
+ public Traversal<Vertex, Number> get_g_V_foo_fold_minXlocalX() {
+ return g.V().values("foo").fold().min(Scope.local);
+ }
+
+ @Override
public Traversal<Vertex, Integer> get_g_V_repeatXbothX_timesX5X_age_min() {
return g.V().repeat(both()).times(5).values("age").min();
}
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f69c715f/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/traversal/strategy/optimization/interceptor/SparkStarBarrierInterceptor.java
----------------------------------------------------------------------
diff --git a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/traversal/strategy/optimization/interceptor/SparkStarBarrierInterceptor.java b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/traversal/strategy/optimization/interceptor/SparkStarBarrierInterceptor.java
index 3c74e5a..3c89c1d 100644
--- a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/traversal/strategy/optimization/interceptor/SparkStarBarrierInterceptor.java
+++ b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/traversal/strategy/optimization/interceptor/SparkStarBarrierInterceptor.java
@@ -45,6 +45,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.Subgra
import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.ComputerVerificationStrategy;
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.util.FastNoSuchElementException;
import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
import org.apache.tinkerpop.gremlin.spark.process.computer.SparkMemory;
import org.apache.tinkerpop.gremlin.spark.process.computer.traversal.strategy.SparkVertexProgramInterceptor;
@@ -52,6 +53,7 @@ import org.apache.tinkerpop.gremlin.structure.Vertex;
import org.apache.tinkerpop.gremlin.structure.util.ElementHelper;
import org.apache.tinkerpop.gremlin.util.NumberHelper;
import org.apache.tinkerpop.gremlin.util.function.ArrayListSupplier;
+import org.apache.tinkerpop.gremlin.util.function.MeanNumberSupplier;
import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
import java.util.ArrayList;
@@ -97,24 +99,24 @@ public final class SparkStarBarrierInterceptor implements SparkVertexProgramInte
final Object result;
if (endStep instanceof CountGlobalStep)
result = nextRDD.map(Traverser::bulk).fold(0l, (a, b) -> a + b);
- else if (endStep instanceof SumGlobalStep)
+ else if (endStep instanceof SumGlobalStep) {
result = nextRDD
.map(traverser -> NumberHelper.mul(traverser.bulk(), (Number) traverser.get()))
.fold(0, NumberHelper::add);
- else if (endStep instanceof MeanGlobalStep)
- result = nextRDD
+ } else if (endStep instanceof MeanGlobalStep) {
+ result = nextRDD.isEmpty() ? null : nextRDD
.map(traverser -> new MeanGlobalStep.MeanNumber((Number) traverser.get(), traverser.bulk()))
- .fold(new MeanGlobalStep.MeanNumber(), MeanGlobalStep.MeanNumber::add)
+ .fold(MeanNumberSupplier.instance().get(), MeanGlobalStep.MeanNumber::add)
.getFinal();
- else if (endStep instanceof MinGlobalStep)
- result = nextRDD
+ } else if (endStep instanceof MinGlobalStep) {
+ result = nextRDD.isEmpty() ? null : nextRDD
.map(traverser -> (Number) traverser.get())
- .fold(Integer.MAX_VALUE, NumberHelper::min);
- else if (endStep instanceof MaxGlobalStep)
- result = nextRDD
+ .fold(Double.NaN, NumberHelper::min);
+ } else if (endStep instanceof MaxGlobalStep) {
+ result = nextRDD.isEmpty() ? null : nextRDD
.map(traverser -> (Number) traverser.get())
- .fold(Integer.MIN_VALUE, NumberHelper::max);
- else if (endStep instanceof FoldStep) {
+ .fold(Double.NaN, NumberHelper::max);
+ } else if (endStep instanceof FoldStep) {
final BinaryOperator biOperator = endStep.getBiOperator();
result = nextRDD.map(traverser -> {
if (endStep.getSeedSupplier() instanceof ArrayListSupplier) {
@@ -148,9 +150,11 @@ public final class SparkStarBarrierInterceptor implements SparkVertexProgramInte
///////////////////////////////
// generate the HALTED_TRAVERSERS for the memory
- final TraverserSet<Long> haltedTraversers = new TraverserSet<>();
- haltedTraversers.add(traversal.getTraverserGenerator().generate(result, endStep, 1l)); // all reducing barrier steps produce a result of bulk 1
- memory.set(TraversalVertexProgram.HALTED_TRAVERSERS, haltedTraversers);
+ if (result != null) {
+ final TraverserSet<Long> haltedTraversers = new TraverserSet<>();
+ haltedTraversers.add(traversal.getTraverserGenerator().generate(result, endStep, 1l)); // all reducing barrier steps produce a result of bulk 1
+ memory.set(TraversalVertexProgram.HALTED_TRAVERSERS, haltedTraversers);
+ }
memory.incrIteration(); // any local star graph reduction takes a single iteration
return inputRDD;
}
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f69c715f/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 a13a4ad..eacc3db 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
@@ -132,11 +132,8 @@ public class TinkerGraphPlayTest {
public void testPlayDK() throws Exception {
Graph graph = TinkerGraph.open();
- GraphTraversalSource g = graph.traversal();
- graph.io(GraphMLIo.build()).readGraph("/projects/apache/tinkerpop/data/grateful-dead.xml");
- System.out.println(g.V().filter(outE("sungBy").count().is(0)).explain());
- System.out.println(g.V().filter(outE("sungBy").count().is(lt(1))).explain());
- System.out.println(g.V().filter(outE("sungBy").count().is(1)).explain());
+ GraphTraversalSource g = graph.traversal().withComputer();
+ g.V().values("test").max().forEachRemaining(System.out::println);
}
@Test
[2/4] tinkerpop git commit: Added SumStep into the mix
Posted by dk...@apache.org.
Added SumStep into the mix
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/e09203e2
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/e09203e2
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/e09203e2
Branch: refs/heads/TINKERPOP-1777-master
Commit: e09203e2ebe3d62c4f271f6c9b92891849f1e440
Parents: f69c715
Author: Daniel Kuppitz <da...@hotmail.com>
Authored: Tue Feb 13 11:11:44 2018 -0700
Committer: Daniel Kuppitz <da...@hotmail.com>
Committed: Wed Feb 14 18:33:21 2018 -0700
----------------------------------------------------------------------
.../traversal/step/map/SumGlobalStep.java | 8 ++-
.../traversal/step/map/SumLocalStep.java | 9 ++-
.../process/traversal/step/map/SumTest.java | 60 ++++++++++++++++++--
3 files changed, 65 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/e09203e2/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SumGlobalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SumGlobalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SumGlobalStep.java
index 7942d9b..3711cfe 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SumGlobalStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SumGlobalStep.java
@@ -48,6 +48,12 @@ public final class SumGlobalStep<S extends Number> extends ReducingBarrierStep<S
}
@Override
+ public void processAllStarts() {
+ if (this.starts.hasNext())
+ super.processAllStarts();
+ }
+
+ @Override
public S projectTraverser(final Traverser.Admin<S> traverser) {
return (S) mul(traverser.get(), traverser.bulk());
}
@@ -57,4 +63,4 @@ public final class SumGlobalStep<S extends Number> extends ReducingBarrierStep<S
public Set<TraverserRequirement> getRequirements() {
return REQUIREMENTS;
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/e09203e2/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SumLocalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SumLocalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SumLocalStep.java
index b062a7e..72e6539 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SumLocalStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SumLocalStep.java
@@ -22,6 +22,7 @@ import org.apache.tinkerpop.gremlin.util.NumberHelper;
import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
+import org.apache.tinkerpop.gremlin.process.traversal.util.FastNoSuchElementException;
import java.util.Collections;
import java.util.Iterator;
@@ -39,17 +40,15 @@ public final class SumLocalStep<E extends Number, S extends Iterable<E>> extends
@Override
protected E map(final Traverser.Admin<S> traverser) {
- Number result;
final Iterator<E> iterator = traverser.get().iterator();
if (iterator.hasNext()) {
- result = iterator.next();
+ Number result = iterator.next();
while (iterator.hasNext()) {
result = NumberHelper.add(result, iterator.next());
}
- } else {
- result = 0;
+ return (E) result;
}
- return (E) result;
+ throw FastNoSuchElementException.instance();
}
@Override
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/e09203e2/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SumTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SumTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SumTest.java
index 1183863..e1bbd0b 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SumTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SumTest.java
@@ -21,6 +21,7 @@ package org.apache.tinkerpop.gremlin.process.traversal.step.map;
import org.apache.tinkerpop.gremlin.LoadGraphWith;
import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
import org.apache.tinkerpop.gremlin.process.GremlinProcessRunner;
+import org.apache.tinkerpop.gremlin.process.traversal.Scope;
import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
import org.apache.tinkerpop.gremlin.structure.Vertex;
import org.junit.Test;
@@ -39,17 +40,49 @@ import static org.junit.Assert.*;
@RunWith(GremlinProcessRunner.class)
public abstract class SumTest extends AbstractGremlinProcessTest {
- public abstract Traversal<Vertex, Double> get_g_V_valuesXageX_sum();
+ public abstract Traversal<Vertex, Integer> get_g_V_valuesXageX_sum();
+
+ public abstract Traversal<Vertex, Integer> get_g_V_age_fold_sumXlocalX();
+
+ public abstract Traversal<Vertex, Number> get_g_V_foo_sum();
+
+ public abstract Traversal<Vertex, Number> get_g_V_foo_fold_sumXlocalX();
public abstract Traversal<Vertex, Map<String, Number>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_weight_sumX();
@Test
@LoadGraphWith(MODERN)
public void g_V_valuesXageX_sum() {
- final Traversal<Vertex, Double> traversal = get_g_V_valuesXageX_sum();
+ final Traversal<Vertex, Integer> traversal = get_g_V_valuesXageX_sum();
+ printTraversalForm(traversal);
+ final Integer sum = traversal.next();
+ assertEquals(123, sum.intValue());
+ assertFalse(traversal.hasNext());
+ }
+
+ @Test
+ @LoadGraphWith(MODERN)
+ public void g_V_age_fold_sumXlocalX() {
+ final Traversal<Vertex, Integer> traversal = get_g_V_age_fold_sumXlocalX();
+ printTraversalForm(traversal);
+ final Integer sum = traversal.next();
+ assertEquals(123, sum.intValue());
+ assertFalse(traversal.hasNext());
+ }
+
+ @Test
+ @LoadGraphWith(MODERN)
+ public void g_V_foo_sum() {
+ final Traversal<Vertex, Number> traversal = get_g_V_foo_sum();
+ printTraversalForm(traversal);
+ assertFalse(traversal.hasNext());
+ }
+
+ @Test
+ @LoadGraphWith(MODERN)
+ public void g_V_foo_fold_sumXlocalX() {
+ final Traversal<Vertex, Number> traversal = get_g_V_foo_fold_sumXlocalX();
printTraversalForm(traversal);
- final Number sum = traversal.next();
- assertEquals(123L, sum);
assertFalse(traversal.hasNext());
}
@@ -69,13 +102,28 @@ public abstract class SumTest extends AbstractGremlinProcessTest {
public static class Traversals extends SumTest {
@Override
- public Traversal<Vertex, Double> get_g_V_valuesXageX_sum() {
+ public Traversal<Vertex, Integer> get_g_V_valuesXageX_sum() {
return g.V().values("age").sum();
}
@Override
+ public Traversal<Vertex, Integer> get_g_V_age_fold_sumXlocalX() {
+ return g.V().values("age").fold().sum(Scope.local);
+ }
+
+ @Override
+ public Traversal<Vertex, Number> get_g_V_foo_sum() {
+ return g.V().values("foo").sum();
+ }
+
+ @Override
+ public Traversal<Vertex, Number> get_g_V_foo_fold_sumXlocalX() {
+ return g.V().values("foo").fold().sum(Scope.local);
+ }
+
+ @Override
public Traversal<Vertex, Map<String, Number>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_weight_sumX() {
return g.V().hasLabel("software").<String, Number>group().by("name").by(bothE().values("weight").sum());
}
}
-}
\ No newline at end of file
+}
[3/4] tinkerpop git commit: Fixed certain test cases to be in line
with the latest changes in min(), max(), mean() and sum() steps.
Posted by dk...@apache.org.
Fixed certain test cases to be in line with the latest changes in min(), max(), mean() and sum() steps.
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/c1f49eff
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/c1f49eff
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/c1f49eff
Branch: refs/heads/TINKERPOP-1777-master
Commit: c1f49effa33485adce3716e55cacc203189c0c54
Parents: e09203e
Author: Daniel Kuppitz <da...@hotmail.com>
Authored: Wed Feb 14 18:28:10 2018 -0700
Committer: Daniel Kuppitz <da...@hotmail.com>
Committed: Wed Feb 14 18:33:21 2018 -0700
----------------------------------------------------------------------
.../traversal/step/map/OrderGlobalStep.java | 4 +++-
.../process/computer/GraphComputerTest.java | 12 +++++------
.../traversal/step/branch/UnionTest.java | 2 +-
.../process/traversal/step/map/OrderTest.java | 18 ++++++----------
.../process/traversal/step/map/SumTest.java | 16 +++++++-------
.../traversal/step/sideEffect/GroupTest.java | 11 +++-------
.../structure/TinkerGraphPlayTest.java | 22 +++++++++++++++++---
7 files changed, 46 insertions(+), 39 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c1f49eff/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderGlobalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderGlobalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderGlobalStep.java
index fa705f4..e77a65c 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderGlobalStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderGlobalStep.java
@@ -71,7 +71,9 @@ public final class OrderGlobalStep<S, C extends Comparable> extends CollectingBa
@Override
public void processAllStarts() {
while (this.starts.hasNext()) {
- this.traverserSet.add(this.createProjectedTraverser(this.starts.next()));
+ final Traverser.Admin<S> traverser = this.starts.next();
+ if (traverser.get() != null)
+ this.traverserSet.add(this.createProjectedTraverser(traverser));
}
}
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c1f49eff/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.java
index f98cb6f..7d53835 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.java
@@ -1347,13 +1347,13 @@ public class GraphComputerTest extends AbstractGremlinProcessTest {
assertEquals(Long.valueOf(0l), result.graph().traversal().E().count().next());
assertEquals(Long.valueOf(0l), result.graph().traversal().V().values().count().next());
assertEquals(Long.valueOf(0l), result.graph().traversal().E().values().count().next());
- assertEquals(0, result.graph().traversal().V().values("money").sum().next());
+ assertFalse(result.graph().traversal().V().values("money").sum().hasNext());
///
assertEquals(Long.valueOf(6l), graph.traversal().V().count().next());
assertEquals(Long.valueOf(6l), graph.traversal().E().count().next());
assertEquals(Long.valueOf(12l), graph.traversal().V().values().count().next());
assertEquals(Long.valueOf(6l), graph.traversal().E().values().count().next());
- assertEquals(0, graph.traversal().V().values("money").sum().next());
+ assertFalse(graph.traversal().V().values("money").sum().hasNext());
}
}
@@ -1373,7 +1373,7 @@ public class GraphComputerTest extends AbstractGremlinProcessTest {
assertEquals(Long.valueOf(6l), graph.traversal().E().count().next());
assertEquals(Long.valueOf(12l), graph.traversal().V().values().count().next());
assertEquals(Long.valueOf(6l), graph.traversal().E().values().count().next());
- assertEquals(0, graph.traversal().V().values("money").sum().next());
+ assertFalse(graph.traversal().V().values("money").sum().hasNext());
}
}
@@ -1393,7 +1393,7 @@ public class GraphComputerTest extends AbstractGremlinProcessTest {
assertEquals(Long.valueOf(6l), graph.traversal().E().count().next());
assertEquals(Long.valueOf(12l), graph.traversal().V().values().count().next());
assertEquals(Long.valueOf(6l), graph.traversal().E().values().count().next());
- assertEquals(0, graph.traversal().V().values("money").sum().next());
+ assertFalse(graph.traversal().V().values("money").sum().hasNext());
}
}
@@ -1407,13 +1407,13 @@ public class GraphComputerTest extends AbstractGremlinProcessTest {
assertEquals(Long.valueOf(6l), result.graph().traversal().E().count().next());
assertEquals(Long.valueOf(12l), result.graph().traversal().V().values().count().next());
assertEquals(Long.valueOf(6l), result.graph().traversal().E().values().count().next());
- assertEquals(0, result.graph().traversal().V().values("money").sum().next());
+ assertFalse(result.graph().traversal().V().values("money").sum().hasNext());
///
assertEquals(Long.valueOf(6l), graph.traversal().V().count().next());
assertEquals(Long.valueOf(6l), graph.traversal().E().count().next());
assertEquals(Long.valueOf(12l), graph.traversal().V().values().count().next());
assertEquals(Long.valueOf(6l), graph.traversal().E().values().count().next());
- assertEquals(0, graph.traversal().V().values("money").sum().next());
+ assertFalse(graph.traversal().V().values("money").sum().hasNext());
}
}
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c1f49eff/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/UnionTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/UnionTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/UnionTest.java
index 03abc03..f212ae4 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/UnionTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/UnionTest.java
@@ -135,7 +135,7 @@ public abstract class UnionTest extends AbstractGremlinProcessTest {
public void g_VX1_2X_localXunionXoutE_count__inE_count__outE_weight_sumXX() {
final Traversal<Vertex, Number> traversal = get_g_VX1_2X_localXunionXoutE_count__inE_count__outE_weight_sumXX(convertToVertexId("marko"), convertToVertexId("vadas"));
printTraversalForm(traversal);
- checkResults(Arrays.asList(0l, 0l, 0, 3l, 1l, 1.9d), traversal);
+ checkResults(Arrays.asList(3L, 0L, 0L, 1L, 1.9d), traversal);
}
@Test
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c1f49eff/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderTest.java
index bbf63ef..d5cd6fd 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderTest.java
@@ -76,7 +76,7 @@ public abstract class OrderTest extends AbstractGremlinProcessTest {
public abstract Traversal<Vertex, Map<String, List<Vertex>>> get_g_V_group_byXlabelX_byXname_order_byXdecrX_foldX();
- public abstract Traversal<Vertex, List<Double>> get_g_V_localXbothE_weight_foldX_order_byXsumXlocalX_decrX();
+ public abstract Traversal<Vertex, List<Double>> get_g_V_mapXbothE_weight_foldX_order_byXsumXlocalX_decrX();
public abstract Traversal<Vertex, Map<String, Object>> get_g_V_asXvX_mapXbothE_weight_foldX_sumXlocalX_asXsX_selectXv_sX_order_byXselectXsX_decrX();
@@ -244,8 +244,8 @@ public abstract class OrderTest extends AbstractGremlinProcessTest {
@Test
@LoadGraphWith(MODERN)
- public void g_V_localXbothE_weight_foldX_order_byXsumXlocalX_decrX() {
- final Traversal<Vertex, List<Double>> traversal = get_g_V_localXbothE_weight_foldX_order_byXsumXlocalX_decrX();
+ public void g_V_mapXbothE_weight_foldX_order_byXsumXlocalX_decrX() {
+ final Traversal<Vertex, List<Double>> traversal = get_g_V_mapXbothE_weight_foldX_order_byXsumXlocalX_decrX();
final List<List<Double>> list = traversal.toList();
assertEquals(list.get(0).size(), 3);
assertEquals(list.get(1).size(), 3);
@@ -386,12 +386,9 @@ public abstract class OrderTest extends AbstractGremlinProcessTest {
assertTrue(traversal.hasNext());
final Map<String, Number> m = traversal.next();
assertFalse(traversal.hasNext());
- assertEquals(4, m.size());
+ assertEquals(3, m.size());
final Iterator<Map.Entry<String, Number>> iterator = m.entrySet().iterator();
Map.Entry<String, Number> entry = iterator.next();
- assertEquals("vadas", entry.getKey());
- assertEquals(0.0, entry.getValue().doubleValue(), 0.0001);
- entry = iterator.next();
assertEquals("peter", entry.getKey());
assertEquals(0.2, entry.getValue().doubleValue(), 0.0001);
entry = iterator.next();
@@ -417,9 +414,6 @@ public abstract class OrderTest extends AbstractGremlinProcessTest {
entry = traversal.next();
assertEquals("peter", entry.getKey());
assertEquals(0.2, entry.getValue().doubleValue(), 0.0001);
- entry = traversal.next();
- assertEquals("vadas", entry.getKey());
- assertEquals(0.0, entry.getValue().doubleValue(), 0.0001);
assertFalse(traversal.hasNext());
}
@@ -485,8 +479,8 @@ public abstract class OrderTest extends AbstractGremlinProcessTest {
}
@Override
- public Traversal<Vertex, List<Double>> get_g_V_localXbothE_weight_foldX_order_byXsumXlocalX_decrX() {
- return g.V().local(__.bothE().<Double>values("weight").fold()).order().by(__.sum(Scope.local), Order.decr);
+ public Traversal<Vertex, List<Double>> get_g_V_mapXbothE_weight_foldX_order_byXsumXlocalX_decrX() {
+ return g.V().map(__.bothE().<Double>values("weight").fold()).order().by(__.sum(Scope.local), Order.decr);
}
@Override
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c1f49eff/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SumTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SumTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SumTest.java
index e1bbd0b..ed067db 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SumTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SumTest.java
@@ -40,9 +40,9 @@ import static org.junit.Assert.*;
@RunWith(GremlinProcessRunner.class)
public abstract class SumTest extends AbstractGremlinProcessTest {
- public abstract Traversal<Vertex, Integer> get_g_V_valuesXageX_sum();
+ public abstract Traversal<Vertex, Number> get_g_V_valuesXageX_sum();
- public abstract Traversal<Vertex, Integer> get_g_V_age_fold_sumXlocalX();
+ public abstract Traversal<Vertex, Number> get_g_V_age_fold_sumXlocalX();
public abstract Traversal<Vertex, Number> get_g_V_foo_sum();
@@ -53,9 +53,9 @@ public abstract class SumTest extends AbstractGremlinProcessTest {
@Test
@LoadGraphWith(MODERN)
public void g_V_valuesXageX_sum() {
- final Traversal<Vertex, Integer> traversal = get_g_V_valuesXageX_sum();
+ final Traversal<Vertex, Number> traversal = get_g_V_valuesXageX_sum();
printTraversalForm(traversal);
- final Integer sum = traversal.next();
+ final Number sum = traversal.next();
assertEquals(123, sum.intValue());
assertFalse(traversal.hasNext());
}
@@ -63,9 +63,9 @@ public abstract class SumTest extends AbstractGremlinProcessTest {
@Test
@LoadGraphWith(MODERN)
public void g_V_age_fold_sumXlocalX() {
- final Traversal<Vertex, Integer> traversal = get_g_V_age_fold_sumXlocalX();
+ final Traversal<Vertex, Number> traversal = get_g_V_age_fold_sumXlocalX();
printTraversalForm(traversal);
- final Integer sum = traversal.next();
+ final Number sum = traversal.next();
assertEquals(123, sum.intValue());
assertFalse(traversal.hasNext());
}
@@ -102,12 +102,12 @@ public abstract class SumTest extends AbstractGremlinProcessTest {
public static class Traversals extends SumTest {
@Override
- public Traversal<Vertex, Integer> get_g_V_valuesXageX_sum() {
+ public Traversal<Vertex, Number> get_g_V_valuesXageX_sum() {
return g.V().values("age").sum();
}
@Override
- public Traversal<Vertex, Integer> get_g_V_age_fold_sumXlocalX() {
+ public Traversal<Vertex, Number> get_g_V_age_fold_sumXlocalX() {
return g.V().values("age").fold().sum(Scope.local);
}
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c1f49eff/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 3e1e53b..6a58aa7 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
@@ -218,8 +218,7 @@ public abstract class GroupTest extends AbstractGremlinProcessTest {
assertTrue(traversal.hasNext());
final Map<String, Number> map = traversal.next();
assertFalse(traversal.hasNext());
- assertEquals(2, map.size());
- assertEquals(0, map.get("software"));
+ assertEquals(1, map.size());
assertEquals(3.5d, (double) map.get("person"), 0.01d);
checkSideEffects(traversal.asAdmin().getSideEffects(), "a", HashMap.class);
}
@@ -424,16 +423,12 @@ public abstract class GroupTest extends AbstractGremlinProcessTest {
assertEquals(179350, subMap.get("followedBy").intValue());
//
subMap = map.get("original");
- assertEquals(3, subMap.size());
+ assertEquals(1, 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(1, subMap.size());
assertEquals(777982, subMap.get("followedBy").intValue());
- assertEquals(0, subMap.get("writtenBy").intValue());
- assertEquals(0, subMap.get("sungBy").intValue());
}
@Test
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c1f49eff/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 eacc3db..9a47db3 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
@@ -18,8 +18,13 @@
*/
package org.apache.tinkerpop.gremlin.tinkergraph.structure;
+import org.apache.commons.configuration.MapConfiguration;
import org.apache.tinkerpop.gremlin.process.computer.Computer;
+import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.decoration.VertexProgramStrategy;
import org.apache.tinkerpop.gremlin.process.traversal.Operator;
+import org.apache.tinkerpop.gremlin.process.traversal.Order;
+import org.apache.tinkerpop.gremlin.process.traversal.Scope;
import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;
import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
@@ -29,6 +34,7 @@ import org.apache.tinkerpop.gremlin.structure.Graph;
import org.apache.tinkerpop.gremlin.structure.T;
import org.apache.tinkerpop.gremlin.structure.Vertex;
import org.apache.tinkerpop.gremlin.structure.io.graphml.GraphMLIo;
+import org.apache.tinkerpop.gremlin.tinkergraph.process.computer.TinkerGraphComputer;
import org.apache.tinkerpop.gremlin.util.TimeUtil;
import org.junit.Ignore;
import org.junit.Test;
@@ -36,6 +42,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Arrays;
+import java.util.HashMap;
import java.util.List;
import java.util.function.BiFunction;
import java.util.function.Supplier;
@@ -131,9 +138,18 @@ public class TinkerGraphPlayTest {
@Ignore
public void testPlayDK() throws Exception {
- Graph graph = TinkerGraph.open();
- GraphTraversalSource g = graph.traversal().withComputer();
- g.V().values("test").max().forEachRemaining(System.out::println);
+ Graph graph = TinkerFactory.createModern();
+ //GraphTraversalSource g = graph.traversal().withComputer();
+ GraphTraversalSource g = graph.traversal().withStrategies(VertexProgramStrategy.create(new MapConfiguration(new HashMap<String, Object>() {{
+ put(VertexProgramStrategy.WORKERS, 1);
+ put(VertexProgramStrategy.GRAPH_COMPUTER,
+ //GraphComputer.class.getCanonicalName() :
+ TinkerGraphComputer.class.getCanonicalName());
+ }})));
+
+ g.V().map(__.bothE().values("weight").fold()).order().by(__.sum(Scope.local), Order.decr).
+ //g.V().local(__.bothE().values("weight").fold().sum(Scope.local)).order().by(Order.decr).
+ forEachRemaining(System.out::println);
}
@Test
[4/4] tinkerpop git commit: Fixed test cases.
Posted by dk...@apache.org.
Fixed test cases.
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/7cae75af
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/7cae75af
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/7cae75af
Branch: refs/heads/TINKERPOP-1777-master
Commit: 7cae75af46c3a1c48db6480f356965f765fb014d
Parents: c1f49ef
Author: Daniel Kuppitz <da...@hotmail.com>
Authored: Fri Feb 16 19:15:28 2018 -0700
Committer: Daniel Kuppitz <da...@hotmail.com>
Committed: Fri Feb 16 19:15:28 2018 -0700
----------------------------------------------------------------------
.../gremlin/process/traversal/step/filter/AndStep.java | 1 +
gremlin-test/features/branch/Union.feature | 5 ++---
gremlin-test/features/sideEffect/Group.feature | 4 ++--
.../optimization/interceptor/SparkStarBarrierInterceptor.java | 2 +-
4 files changed, 6 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/7cae75af/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/AndStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/AndStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/AndStep.java
index d66dde4..5c20cd8 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/AndStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/AndStep.java
@@ -36,6 +36,7 @@ public final class AndStep<S> extends ConnectiveStep<S> {
for (final Traversal.Admin<S, ?> traversal : this.traversals) {
if (!TraversalUtil.test(traverser, traversal))
return false;
+ }
return true;
}
}
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/7cae75af/gremlin-test/features/branch/Union.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/branch/Union.feature b/gremlin-test/features/branch/Union.feature
index 30eb53c..1bd47b8 100644
--- a/gremlin-test/features/branch/Union.feature
+++ b/gremlin-test/features/branch/Union.feature
@@ -134,7 +134,6 @@ Feature: Step - union()
| result |
| d[3].l |
| d[0].l |
- | d[1.9].d |
| d[0].i |
- | d[0].l |
- | d[1].l |
\ No newline at end of file
+ | d[1.9].d |
+ | d[1].l |
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/7cae75af/gremlin-test/features/sideEffect/Group.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/sideEffect/Group.feature b/gremlin-test/features/sideEffect/Group.feature
index 94d2191..2686f09 100644
--- a/gremlin-test/features/sideEffect/Group.feature
+++ b/gremlin-test/features/sideEffect/Group.feature
@@ -101,7 +101,7 @@ Feature: Step - group()
When iterated to list
Then the result should be unordered
| result |
- | m[{"software":"d[0].i", "person":"d[3.5].d"}] |
+ | m[{"person":"d[3.5].d"}] |
Scenario: g_V_repeatXbothXfollowedByXX_timesX2X_group_byXsongTypeX_byXcountX
Given the grateful graph
@@ -207,7 +207,7 @@ Feature: Step - group()
When iterated to list
Then the result should be unordered
| result |
- | m[{"cover":{"followedBy":"d[777982].l", "sungBy":"d[0].i", "writtenBy":"d[0].i"}, "":{"followedBy":"d[179350].l"}, "original":{"followedBy":"d[2185613].l", "sungBy":"d[0].i", "writtenBy":"d[0].i"}}] |
+ | m[{"cover":{"followedBy":"d[777982].l"}, "":{"followedBy":"d[179350].l"}, "original":{"followedBy":"d[2185613].l"}}] |
Scenario: g_V_groupXmX_byXnameX_byXinXknowsX_nameX_capXmX
Given the modern graph
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/7cae75af/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/traversal/strategy/optimization/interceptor/SparkStarBarrierInterceptor.java
----------------------------------------------------------------------
diff --git a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/traversal/strategy/optimization/interceptor/SparkStarBarrierInterceptor.java b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/traversal/strategy/optimization/interceptor/SparkStarBarrierInterceptor.java
index 3c89c1d..bd4b5ce 100644
--- a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/traversal/strategy/optimization/interceptor/SparkStarBarrierInterceptor.java
+++ b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/traversal/strategy/optimization/interceptor/SparkStarBarrierInterceptor.java
@@ -100,7 +100,7 @@ public final class SparkStarBarrierInterceptor implements SparkVertexProgramInte
if (endStep instanceof CountGlobalStep)
result = nextRDD.map(Traverser::bulk).fold(0l, (a, b) -> a + b);
else if (endStep instanceof SumGlobalStep) {
- result = nextRDD
+ result = nextRDD.isEmpty() ? null : nextRDD
.map(traverser -> NumberHelper.mul(traverser.bulk(), (Number) traverser.get()))
.fold(0, NumberHelper::add);
} else if (endStep instanceof MeanGlobalStep) {