You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by sp...@apache.org on 2015/04/10 19:57:03 UTC
[1/3] incubator-tinkerpop git commit: removed back() step in favor of
single label select()-step. Provides the same behavior but there are two
benefits to select() -- 1) it will try and NOT use path calculations if
possible in OLTP. 2) it supports by() m
Repository: incubator-tinkerpop
Updated Branches:
refs/heads/TINKERPOP3-581 a4c62be7a -> 3aa7e2153
removed back() step in favor of single label select()-step. Provides the same behavior but there are two benefits to select() -- 1) it will try and NOT use path calculations if possible in OLTP. 2) it supports by() modulation. Moved all the BackTest test cases to SelectTest. All passed except one which @dkuppitz is looking into right now. Validated on TinkerGraph OLTP/OLAP as well as GiraphGraphComptuer and SparkGraphComputer.
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/5081a2b5
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/5081a2b5
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/5081a2b5
Branch: refs/heads/TINKERPOP3-581
Commit: 5081a2b5d36c1d492abb871ca2cd544accf9d16b
Parents: 24fd909
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Fri Apr 10 11:18:44 2015 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Fri Apr 10 11:18:44 2015 -0600
----------------------------------------------------------------------
CHANGELOG.asciidoc | 5 +-
docs/src/the-traversal.asciidoc | 34 ++-
.../traversal/dsl/graph/GraphTraversal.java | 5 -
.../gremlin/process/traversal/dsl/graph/__.java | 4 -
.../process/traversal/step/map/BackStep.java | 64 ------
.../traversal/traverser/util/TraverserSet.java | 7 +-
.../tinkerpop/gremlin/structure/Graph.java | 4 +-
.../step/filter/GroovyRangeTest.groovy | 36 ---
.../traversal/step/map/GroovyBackTest.groovy | 146 ------------
.../traversal/step/map/GroovySelectTest.groovy | 112 +++++++++-
.../process/GroovyProcessComputerSuite.java | 2 -
.../process/GroovyProcessStandardSuite.java | 4 +-
.../tinkerpop/gremlin/AbstractGremlinTest.java | 2 +-
.../gremlin/process/ProcessComputerSuite.java | 6 +-
.../gremlin/process/ProcessStandardSuite.java | 4 +-
.../traversal/step/filter/RangeTest.java | 79 +------
.../process/traversal/step/map/BackTest.java | 220 -------------------
.../process/traversal/step/map/SelectTest.java | 183 ++++++++++++++-
hadoop-gremlin/conf/hadoop-gryo.properties | 3 -
.../gremlin/hadoop/structure/io/IOClasses.java | 2 +-
20 files changed, 329 insertions(+), 593 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5081a2b5/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index 81fa32c..793b91a 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -25,10 +25,11 @@ image::http://www.tinkerpop.com/docs/current/images/gremlin-hindu.png[width=225]
TinkerPop 3.0.0.M9 (NOT OFFICIALLY RELEASED YET)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-* `DetachedXXX` use the standard `structure/` exceptions for unsupported operations.
+* Removed `back()`-step as `select()`-step provides the same behavior with more intelligent optimizations and `by()`-modulation.
+* `DetachedXXX` now uses the standard `structure/` exceptions for unsupported operations.
* Added private constructors to all `Exceptions` inner classes in the respective `structure/` interfaces.
* Re-introduced `ReferenceXXX` to ensure a smaller data footprint in OLAP situation (`DetachedXXX` uses too much data).
-* `Attachable` now has set of static exceptions messages in an `Exceptions` inner class.
+* `Attachable` now has a set of static exception messages in an `Exceptions` inner class.
* Added `StarGraph` which is a heap efficient representation of a vertex and its incident edges (useful for `GraphComputer` implementations).
* `TraverserSet` uses a `FastNoSuchElementException` on `remove()` for increased performance.
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5081a2b5/docs/src/the-traversal.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/the-traversal.asciidoc b/docs/src/the-traversal.asciidoc
index 6ab181e..21adfe7 100644
--- a/docs/src/the-traversal.asciidoc
+++ b/docs/src/the-traversal.asciidoc
@@ -73,12 +73,12 @@ image:map-lambda.png[width=150,float=right]
----
g.V(1).as('a').out() <1>
g.V(1).as('a').out().map {it.path('a')} <2>
-g.V(1).as('a').out().back('a') <3>
+g.V(1).as('a').out().select('a') <3>
----
<1> A standard outgoing traversal from vertex 1.
<2> For each vertex outgoing adjacent to vertex 1, get the vertex at `a` (which is vertex 1).
-<3> The <<back-step,`back()`>>-step is implemented as a `map()`-step that accesses data in the historic path.
+<3> The <<select-step,`select()`>>-step is implemented as a `map()`-step that accesses data in the historic path.
image:filter-lambda.png[width=160,float=right]
[gremlin-groovy,modern]
@@ -252,21 +252,6 @@ g.V().as('a').out('created').as('b').select().by('name') <2>
<1> Select the objects labeled "a" and "b" from the path.
<2> Select the objects labeled "a" and "b" from the path and, for each object, project its name value.
-[[back-step]]
-Back Step
-~~~~~~~~~
-
-link:http://en.wikipedia.org/wiki/Functional_programming[Functional languages] make use of function composition and lazy evaluation to create complex computations from primitive operations. This is exactly what Gremlin `GraphTraversal` does. One of the differentiating aspects of Gremlin's data flow approach to graph processing is that the flow need not always go "forward," but in fact, can go back to a previously seen area of computation. Examples include <<repeat-step,`repeat()`>> as well as the `back()`-step (*map*).
-
-[gremlin-groovy,modern]
-----
-g.V().out().out()
-g.V().out().out().path()
-g.V().as('x').out().out().back('x')
-g.V().out().as('x').out().back('x')
-g.V().out().out().as('x').back('x') // pointless
-----
-
[[by-step]]
By Step
~~~~~~~
@@ -1139,7 +1124,7 @@ g.V(1).repeat(local(
Select Step
~~~~~~~~~~~
-There are two use cases for `select()`-step (*map*).
+link:http://en.wikipedia.org/wiki/Functional_programming[Functional languages] make use of function composition and lazy evaluation to create complex computations from primitive operations. This is exactly what `Traversal` does. One of the differentiating aspects of Gremlin's data flow approach to graph processing is that the flow need not always go "forward," but in fact, can go back to a previously seen area of computation. Examples include <<path-step,`path()`>> as well as the `select()`-step (*map*). There are two general ways to use `select()`-step.
. Select labeled steps within a path (as defined by `as()` in a traversal).
. Select objects out of a `Map<String,Object>` flow (i.e. a sub-map).
@@ -1157,6 +1142,17 @@ g.V().as('a').out().as('b').out().as('c').select('a') <1>
<1> If the selection is one step, no map is returned.
+When there is only one label selected, then a single object is returned. This is useful for stepping back in a computation and easily moving forward again on the object reverted to.
+
+[gremlin-groovy,modern]
+----
+g.V().out().out()
+g.V().out().out().path()
+g.V().as('x').out().out().select('x')
+g.V().out().as('x').out().select('x')
+g.V().out().out().as('x').select('x') // pointless
+----
+
The second use case is best understood in terms of <<match-step,`match()`>>-step where the result of `match()` is a `Map<String,Object>` of variable bindings. However, any step that emits a `Map<String,Object>` can be selected. A contrived example is presented below.
[gremlin-groovy,modern]
@@ -1172,6 +1168,8 @@ g.V().range(0, 2).as('a').map {[b:1,c:2]}.select('c') <4>
<3> The same `List<String>` selectivity can be used as demonstrated in the previous example.
<4> If a single selection is used, then the object is emitted not wrapped in a map. Useful for continuing the traversal process without having to do a map projection.
+NOTE: When executing a traversal with `select()` on a standard traversal engine (i.e. OLTP), `select()` will do its best to avoid calculating the path history and instead, will rely on a global data structure for storing the currently selected object. As such, if only a subset of the path walked is required, `select()` should be used over the more resource intensive <<path-step,`path()`>>-step.
+
[[using-where-with-select]]
Using Where with Select
^^^^^^^^^^^^^^^^^^^^^^^
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5081a2b5/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
index acfd01a..9fb9083 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
@@ -61,7 +61,6 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.filter.WhereStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.AddEdgeByPathStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.AddEdgeStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.AddVertexStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.map.BackStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.CoalesceStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.CountGlobalStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.CountLocalStep;
@@ -289,10 +288,6 @@ public interface GraphTraversal<S, E> extends Traversal<S, E> {
return this.asAdmin().addStep(new PathStep<>(this.asAdmin()));
}
- public default <E2> GraphTraversal<S, E2> back(final String stepLabel) {
- return this.asAdmin().addStep(new BackStep<>(this.asAdmin(), stepLabel));
- }
-
public default <E2> GraphTraversal<S, Map<String, E2>> match(final String startLabel, final Traversal... traversals) {
return (GraphTraversal) this.asAdmin().addStep(new MatchStep<E, Map<String, E2>>(this.asAdmin(), startLabel, traversals));
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5081a2b5/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/__.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/__.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/__.java
index f34ba71..f428d53 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/__.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/__.java
@@ -176,10 +176,6 @@ public class __ {
return __.<A>start().path();
}
- public static <A, E2> GraphTraversal<A, E2> back(final String stepLabel) {
- return __.<A>start().back(stepLabel);
- }
-
public static <A, E2> GraphTraversal<A, Map<String, E2>> match(final String startLabel, final Traversal... traversals) {
return __.<A>start().match(startLabel, traversals);
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5081a2b5/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/BackStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/BackStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/BackStep.java
deleted file mode 100644
index 9d683df..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/BackStep.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tinkerpop.gremlin.process.traversal.step.map;
-
-import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
-import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
-import org.apache.tinkerpop.gremlin.process.traversal.step.EngineDependent;
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
-import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
-
-import java.util.Collections;
-import java.util.Set;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public final class BackStep<S, E> extends MapStep<S, E> implements EngineDependent {
-
- private final String stepLabel;
- private boolean requiresPaths = false;
-
- public BackStep(final Traversal.Admin traversal, final String stepLabel) {
- super(traversal);
- this.stepLabel = stepLabel;
- }
-
- @Override
- protected E map(final Traverser.Admin<S> traverser) {
- return traverser.path(this.stepLabel);
- }
-
- @Override
- public void onEngine(final TraversalEngine traversalEngine) {
- this.requiresPaths = traversalEngine.isComputer();
- }
-
- @Override
- public Set<TraverserRequirement> getRequirements() {
- //return this.requiresPaths ? Collections.singleton(TraverserRequirement.PATH) : Collections.singleton(TraverserRequirement.PATH_ACCESS);
- return Collections.singleton(TraverserRequirement.PATH); // TODO: if the traversal isn't nested, path access works
- }
-
- @Override
- public String toString() {
- return TraversalHelper.makeStepString(this, this.stepLabel);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5081a2b5/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/util/TraverserSet.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/util/TraverserSet.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/util/TraverserSet.java
index 60fee75..c44c623 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/util/TraverserSet.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/util/TraverserSet.java
@@ -97,8 +97,11 @@ public class TraverserSet<S> extends AbstractSet<Traverser.Admin<S>> implements
@Override
public Traverser.Admin<S> remove() { // pop, exception if empty
final Iterator<Traverser.Admin<S>> iterator = this.map.values().iterator();
- if (!iterator.hasNext()) throw FastNoSuchElementException.instance();
- return this.map.remove(iterator.next());
+ if (!iterator.hasNext())
+ throw FastNoSuchElementException.instance();
+ final Traverser.Admin<S> next = iterator.next();
+ iterator.remove();
+ return next;
}
@Override
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5081a2b5/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Graph.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Graph.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Graph.java
index 7eff2a8..9cbdba4 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Graph.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Graph.java
@@ -149,8 +149,8 @@ public interface Graph extends AutoCloseable {
public GraphComputer compute() throws IllegalArgumentException;
- public default <C extends TraversalSource> C traversal(final TraversalSource.Builder<C> contextBuilder) {
- return contextBuilder.create(this);
+ public default <C extends TraversalSource> C traversal(final TraversalSource.Builder<C> sourceBuilder) {
+ return sourceBuilder.create(this);
}
public default GraphTraversalSource traversal() {
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5081a2b5/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyRangeTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyRangeTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyRangeTest.groovy
index a7d4cde..c8611ea 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyRangeTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyRangeTest.groovy
@@ -68,16 +68,6 @@ public abstract class GroovyRangeTest {
public Traversal<Vertex, Vertex> get_g_V_repeatXbothX_timesX3X_rangeX5_11X() {
g.V().repeat(__.both).times(3)[5..11];
}
-
- @Override
- Traversal<Vertex, Map<String, Object>> get_g_V_hasLabelXsoftwareX_asXsX_localXinEXcreatedX_valuesXweightX_fold_limitXlocal_1XX_asXwX_select_byXnameX_by() {
- g.V().hasLabel('software').as('s').local(__.inE('created').values('weight').fold().limit(Scope.local, 1)).as('w').select().by('name').by()
- }
-
- @Override
- Traversal<Vertex, Map<String, Object>> get_g_V_hasLabelXsoftwareX_asXsX_localXinEXcreatedX_valuesXweightX_fold_rangeXlocal_1_3XX_asXwX_select_byXnameX_by() {
- g.V().hasLabel('software').as('s').local(__.inE('created').values('weight').fold().range(Scope.local, 1, 3)).as('w').select().by('name').by()
- }
}
@UseEngine(TraversalEngine.Type.COMPUTER)
@@ -126,20 +116,6 @@ public abstract class GroovyRangeTest {
}
@Override
- @Test
- @org.junit.Ignore("Traversal not supported by ComputerTraversalEngine.computer")
- void g_V_hasLabelXsoftwareX_asXsX_localXinEXcreatedX_valuesXweightX_fold_limitXlocal_1XX_asXwX_select_byXnameX_by() {
-
- }
-
- @Override
- @Test
- @org.junit.Ignore("Traversal not supported by ComputerTraversalEngine.computer")
- void g_V_hasLabelXsoftwareX_asXsX_localXinEXcreatedX_valuesXweightX_fold_rangeXlocal_1_3XX_asXwX_select_byXnameX_by() {
- // TODO: the traversal should work in computer mode, but throws a ClassCastException
- }
-
- @Override
Traversal<Vertex, Vertex> get_g_VX1X_out_limitX2X(Object v1Id) {
// override with nothing until the test itself is supported
return null
@@ -180,17 +156,5 @@ public abstract class GroovyRangeTest {
// override with nothing until the test itself is supported
return null
}
-
- @Override
- Traversal<Vertex, Map<String, Object>> get_g_V_hasLabelXsoftwareX_asXsX_localXinEXcreatedX_valuesXweightX_fold_limitXlocal_1XX_asXwX_select_byXnameX_by() {
- // override with nothing until the test itself is supported
- return null
- }
-
- @Override
- Traversal<Vertex, Map<String, Object>> get_g_V_hasLabelXsoftwareX_asXsX_localXinEXcreatedX_valuesXweightX_fold_rangeXlocal_1_3XX_asXwX_select_byXnameX_by() {
- // override with nothing until the test itself is supported
- return null
- }
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5081a2b5/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyBackTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyBackTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyBackTest.groovy
deleted file mode 100644
index 620d257..0000000
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyBackTest.groovy
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tinkerpop.gremlin.process.traversal.step.map
-
-import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine
-import org.apache.tinkerpop.gremlin.process.UseEngine
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__
-import org.apache.tinkerpop.gremlin.process.computer.ComputerTestHelper
-import org.apache.tinkerpop.gremlin.structure.Edge
-import org.apache.tinkerpop.gremlin.structure.Vertex
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public abstract class GroovyBackTest {
-
- @UseEngine(TraversalEngine.Type.STANDARD)
- public static class StandardTraversals extends BackTest {
-
- @Override
- public Traversal<Vertex, Vertex> get_g_VX1X_asXhereX_out_backXhereX(final Object v1Id) {
- g.V(v1Id).as('here').out.back('here')
- }
-
- @Override
- public Traversal<Vertex, Vertex> get_g_VX4X_out_asXhereX_hasXlang_javaX_backXhereX(final Object v4Id) {
- g.V(v4Id).out.as('here').has('lang', 'java').back('here')
- }
-
- @Override
- public Traversal<Vertex, String> get_g_VX4X_out_asXhereX_hasXlang_javaX_backXhereX_name(
- final Object v4Id) {
- g.V(v4Id).out.as('here').has('lang', 'java').back('here').name
- }
-
- @Override
- public Traversal<Vertex, Edge> get_g_VX1X_outE_asXhereX_inV_hasXname_vadasX_backXhereX(final Object v1Id) {
- g.V(v1Id).outE.as('here').inV.has('name', 'vadas').back('here')
- }
-
- @Override
- public Traversal<Vertex, Edge> get_g_VX1X_outEXknowsX_hasXweight_1X_asXhereX_inV_hasXname_joshX_backXhereX(
- final Object v1Id) {
- g.V(v1Id).outE('knows').has('weight', 1.0d).as('here').inV.has('name', 'josh').back('here')
- }
-
- @Override
- public Traversal<Vertex, Edge> get_g_VX1X_outEXknowsX_asXhereX_hasXweight_1X_inV_hasXname_joshX_backXhereX(
- final Object v1Id) {
- g.V(v1Id).outE('knows').as('here').has('weight', 1.0d).inV.has('name', 'josh').back('here')
- }
-
- @Override
- public Traversal<Vertex, Edge> get_g_VX1X_outEXknowsX_asXhereX_hasXweight_1X_asXfakeX_inV_hasXname_joshX_backXhereX(
- final Object v1Id) {
- g.V(v1Id).outE("knows").as('here').has('weight', 1.0d).as('fake').inV.has("name", 'josh').back('here')
- }
-
- @Override
- public Traversal<Vertex, Vertex> get_g_V_asXhereXout_name_backXhereX() {
- g.V().as("here").out.name.back("here");
- }
-
-
- @Override
- public Traversal<Vertex, Map<String, Long>> get_g_V_outXcreatedX_unionXasXprojectX_inXcreatedX_hasXname_markoX_backXprojectX__asXprojectX_inXcreatedX_inXknowsX_hasXname_markoX_backXprojectXX_groupCount_byXnameX() {
- g.V.out('created')
- .union(__.as('project').in('created').has('name', 'marko').back('project'),
- __.as('project').in('created').in('knows').has('name', 'marko').back('project')).groupCount().by('name');
- }
- }
-
- @UseEngine(TraversalEngine.Type.COMPUTER)
- public static class ComputerTraversals extends BackTest {
-
- @Override
- public Traversal<Vertex, Vertex> get_g_VX1X_asXhereX_out_backXhereX(final Object v1Id) {
- ComputerTestHelper.compute("g.V(${v1Id}).as('here').out.back('here')", g);
- }
-
- @Override
- public Traversal<Vertex, Vertex> get_g_VX4X_out_asXhereX_hasXlang_javaX_backXhereX(final Object v4Id) {
- ComputerTestHelper.compute("g.V(${v4Id}).out.as('here').has('lang', 'java').back('here')", g);
- }
-
- @Override
- public Traversal<Vertex, String> get_g_VX4X_out_asXhereX_hasXlang_javaX_backXhereX_name(
- final Object v4Id) {
- ComputerTestHelper.compute("g.V(${v4Id}).out.as('here').has('lang', 'java').back('here').name", g);
- }
-
- @Override
- public Traversal<Vertex, Edge> get_g_VX1X_outE_asXhereX_inV_hasXname_vadasX_backXhereX(final Object v1Id) {
- ComputerTestHelper.compute("g.V(${v1Id}).outE.as('here').inV.has('name', 'vadas').back('here')", g);
- }
-
- @Override
- public Traversal<Vertex, Edge> get_g_VX1X_outEXknowsX_hasXweight_1X_asXhereX_inV_hasXname_joshX_backXhereX(
- final Object v1Id) {
- ComputerTestHelper.compute("g.V(${v1Id}).outE('knows').has('weight', 1.0d).as('here').inV.has('name', 'josh').back('here')", g);
- }
-
- @Override
- public Traversal<Vertex, Edge> get_g_VX1X_outEXknowsX_asXhereX_hasXweight_1X_inV_hasXname_joshX_backXhereX(
- final Object v1Id) {
- ComputerTestHelper.compute("g.V(${v1Id}).outE('knows').as('here').has('weight', 1.0d).inV.has('name','josh').back('here')", g);
- }
-
- @Override
- public Traversal<Vertex, Edge> get_g_VX1X_outEXknowsX_asXhereX_hasXweight_1X_asXfakeX_inV_hasXname_joshX_backXhereX(
- final Object v1Id) {
- ComputerTestHelper.compute("g.V(${v1Id}).outE('knows').as('here').has('weight', 1.0d).as('fake').inV.has('name','josh').back('here')", g);
- }
-
- @Override
- public Traversal<Vertex, Vertex> get_g_V_asXhereXout_name_backXhereX() {
- ComputerTestHelper.compute("g.V().as('here').out.name.back('here')", g);
- }
-
- @Override
- public Traversal<Vertex, Map<String, Long>> get_g_V_outXcreatedX_unionXasXprojectX_inXcreatedX_hasXname_markoX_backXprojectX__asXprojectX_inXcreatedX_inXknowsX_hasXname_markoX_backXprojectXX_groupCount_byXnameX() {
- ComputerTestHelper.compute("""
- g.V.out('created')
- .union(__.as('project').in('created').has('name', 'marko').back('project'),
- __.as('project').in('created').in('knows').has('name', 'marko').back('project')).groupCount().by('name');
- """, g)
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5081a2b5/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovySelectTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovySelectTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovySelectTest.groovy
index a7d3894..8c2c75f 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovySelectTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovySelectTest.groovy
@@ -23,6 +23,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.Traversal
import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine
import org.apache.tinkerpop.gremlin.process.UseEngine
import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__
+import org.apache.tinkerpop.gremlin.structure.Edge
import org.apache.tinkerpop.gremlin.structure.Order
import org.apache.tinkerpop.gremlin.structure.Vertex
import org.junit.Test
@@ -93,6 +94,60 @@ public abstract class GroovySelectTest {
public Traversal<Vertex, Map<String, Object>> get_g_V_hasLabelXpersonX_asXpersonX_localXbothE_label_groupCountX_asXrelationsX_select_byXnameX_by() {
return g.V().hasLabel('person').as('person').local(__.bothE().label().groupCount()).as('relations').select().by('name').by()
}
+
+ //
+
+ @Override
+ public Traversal<Vertex, Vertex> get_g_VX1X_asXhereX_out_selectXhereX(final Object v1Id) {
+ g.V(v1Id).as('here').out.select('here')
+ }
+
+ @Override
+ public Traversal<Vertex, Vertex> get_g_VX4X_out_asXhereX_hasXlang_javaX_selectXhereX(final Object v4Id) {
+ g.V(v4Id).out.as('here').has('lang', 'java').select('here')
+ }
+
+ @Override
+ public Traversal<Vertex, String> get_g_VX4X_out_asXhereX_hasXlang_javaX_selectXhereX_name(
+ final Object v4Id) {
+ g.V(v4Id).out.as('here').has('lang', 'java').select('here').name
+ }
+
+ @Override
+ public Traversal<Vertex, Edge> get_g_VX1X_outE_asXhereX_inV_hasXname_vadasX_selectXhereX(final Object v1Id) {
+ g.V(v1Id).outE.as('here').inV.has('name', 'vadas').select('here')
+ }
+
+ @Override
+ public Traversal<Vertex, Edge> get_g_VX1X_outEXknowsX_hasXweight_1X_asXhereX_inV_hasXname_joshX_selectXhereX(
+ final Object v1Id) {
+ g.V(v1Id).outE('knows').has('weight', 1.0d).as('here').inV.has('name', 'josh').select('here')
+ }
+
+ @Override
+ public Traversal<Vertex, Edge> get_g_VX1X_outEXknowsX_asXhereX_hasXweight_1X_inV_hasXname_joshX_selectXhereX(
+ final Object v1Id) {
+ g.V(v1Id).outE('knows').as('here').has('weight', 1.0d).inV.has('name', 'josh').select('here')
+ }
+
+ @Override
+ public Traversal<Vertex, Edge> get_g_VX1X_outEXknowsX_asXhereX_hasXweight_1X_asXfakeX_inV_hasXname_joshX_selectXhereX(
+ final Object v1Id) {
+ g.V(v1Id).outE("knows").as('here').has('weight', 1.0d).as('fake').inV.has("name", 'josh').select('here')
+ }
+
+ @Override
+ public Traversal<Vertex, Vertex> get_g_V_asXhereXout_name_selectXhereX() {
+ g.V().as("here").out.name.select("here");
+ }
+
+
+ @Override
+ public Traversal<Vertex, Map<String, Long>> get_g_V_outXcreatedX_unionXasXprojectX_inXcreatedX_hasXname_markoX_selectXprojectX__asXprojectX_inXcreatedX_inXknowsX_hasXname_markoX_selectXprojectXX_groupCount_byXnameX() {
+ g.V.out('created')
+ .union(__.as('project').in('created').has('name', 'marko').select('project'),
+ __.as('project').in('created').in('knows').has('name', 'marko').select('project')).groupCount().by('name');
+ }
}
@UseEngine(TraversalEngine.Type.COMPUTER)
@@ -129,7 +184,7 @@ public abstract class GroovySelectTest {
@Override
@Test
@org.junit.Ignore("Traversal not supported by ComputerTraversalEngine.computer")
- void g_V_asXaX_name_order_asXbX_select_byXnameX_byXitX() {
+ public void g_V_asXaX_name_order_asXbX_select_byXnameX_byXitX() {
}
@Override
@@ -202,5 +257,60 @@ public abstract class GroovySelectTest {
// override with nothing until the test itself is supported
return null
}
+
+ //
+
+ @Override
+ public Traversal<Vertex, Vertex> get_g_VX1X_asXhereX_out_selectXhereX(final Object v1Id) {
+ ComputerTestHelper.compute("g.V(${v1Id}).as('here').out.select('here')", g);
+ }
+
+ @Override
+ public Traversal<Vertex, Vertex> get_g_VX4X_out_asXhereX_hasXlang_javaX_selectXhereX(final Object v4Id) {
+ ComputerTestHelper.compute("g.V(${v4Id}).out.as('here').has('lang', 'java').select('here')", g);
+ }
+
+ @Override
+ public Traversal<Vertex, String> get_g_VX4X_out_asXhereX_hasXlang_javaX_selectXhereX_name(
+ final Object v4Id) {
+ ComputerTestHelper.compute("g.V(${v4Id}).out.as('here').has('lang', 'java').select('here').name", g);
+ }
+
+ @Override
+ public Traversal<Vertex, Edge> get_g_VX1X_outE_asXhereX_inV_hasXname_vadasX_selectXhereX(final Object v1Id) {
+ ComputerTestHelper.compute("g.V(${v1Id}).outE.as('here').inV.has('name', 'vadas').select('here')", g);
+ }
+
+ @Override
+ public Traversal<Vertex, Edge> get_g_VX1X_outEXknowsX_hasXweight_1X_asXhereX_inV_hasXname_joshX_selectXhereX(
+ final Object v1Id) {
+ ComputerTestHelper.compute("g.V(${v1Id}).outE('knows').has('weight', 1.0d).as('here').inV.has('name', 'josh').select('here')", g);
+ }
+
+ @Override
+ public Traversal<Vertex, Edge> get_g_VX1X_outEXknowsX_asXhereX_hasXweight_1X_inV_hasXname_joshX_selectXhereX(
+ final Object v1Id) {
+ ComputerTestHelper.compute("g.V(${v1Id}).outE('knows').as('here').has('weight', 1.0d).inV.has('name','josh').select('here')", g);
+ }
+
+ @Override
+ public Traversal<Vertex, Edge> get_g_VX1X_outEXknowsX_asXhereX_hasXweight_1X_asXfakeX_inV_hasXname_joshX_selectXhereX(
+ final Object v1Id) {
+ ComputerTestHelper.compute("g.V(${v1Id}).outE('knows').as('here').has('weight', 1.0d).as('fake').inV.has('name','josh').select('here')", g);
+ }
+
+ @Override
+ public Traversal<Vertex, Vertex> get_g_V_asXhereXout_name_selectXhereX() {
+ ComputerTestHelper.compute("g.V().as('here').out.name.select('here')", g);
+ }
+
+ @Override
+ public Traversal<Vertex, Map<String, Long>> get_g_V_outXcreatedX_unionXasXprojectX_inXcreatedX_hasXname_markoX_selectXprojectX__asXprojectX_inXcreatedX_inXknowsX_hasXname_markoX_selectXprojectXX_groupCount_byXnameX() {
+ ComputerTestHelper.compute("""
+ g.V.out('created')
+ .union(__.as('project').in('created').has('name', 'marko').select('project'),
+ __.as('project').in('created').in('knows').has('name', 'marko').select('project')).groupCount().by('name');
+ """, g)
+ }
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5081a2b5/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/process/GroovyProcessComputerSuite.java
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/process/GroovyProcessComputerSuite.java b/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/process/GroovyProcessComputerSuite.java
index 90c1a7f..6fbf70c 100644
--- a/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/process/GroovyProcessComputerSuite.java
+++ b/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/process/GroovyProcessComputerSuite.java
@@ -41,7 +41,6 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.filter.GroovyRangeTes
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.GroovySampleTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.GroovySimplePathTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.GroovyWhereTest;
-import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyBackTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyCoalesceTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyCountTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyFoldTest;
@@ -105,7 +104,6 @@ public class GroovyProcessComputerSuite extends ProcessComputerSuite {
GroovyWhereTest.ComputerTraversals.class,
// map
- GroovyBackTest.ComputerTraversals.class,
GroovyCoalesceTest.ComputerTraversals.class,
GroovyCountTest.ComputerTraversals.class,
GroovyFoldTest.ComputerTraversals.class,
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5081a2b5/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/process/GroovyProcessStandardSuite.java
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/process/GroovyProcessStandardSuite.java b/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/process/GroovyProcessStandardSuite.java
index 962f572..67bd21b 100644
--- a/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/process/GroovyProcessStandardSuite.java
+++ b/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/process/GroovyProcessStandardSuite.java
@@ -32,6 +32,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.filter.GroovyAndTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.GroovyCoinTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.GroovyCyclicPathTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.GroovyDedupTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.GroovyDropTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.GroovyExceptTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.GroovyFilterTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.GroovyHasNotTest;
@@ -45,10 +46,8 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.filter.GroovySimplePa
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.GroovyWhereTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyAddEdgeTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyAddVertexTest;
-import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyBackTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyCoalesceTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyCountTest;
-import org.apache.tinkerpop.gremlin.process.traversal.step.filter.GroovyDropTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyFoldTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyMapTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyMatchTest;
@@ -115,7 +114,6 @@ public class GroovyProcessStandardSuite extends ProcessStandardSuite {
// map
GroovyAddEdgeTest.StandardTraversals.class,
GroovyAddVertexTest.StandardTraversals.class,
- GroovyBackTest.StandardTraversals.class,
GroovyCoalesceTest.StandardTraversals.class,
GroovyCountTest.StandardTraversals.class,
GroovyFoldTest.StandardTraversals.class,
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5081a2b5/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/AbstractGremlinTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/AbstractGremlinTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/AbstractGremlinTest.java
index b1fcc42..8b0af7c 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/AbstractGremlinTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/AbstractGremlinTest.java
@@ -165,7 +165,7 @@ public abstract class AbstractGremlinTest {
}
public Object convertToEdgeId(final Graph graph, final String outVertexName, String edgeLabel, final String inVertexName) {
- return graph.traversal().V().has("name", outVertexName).outE(edgeLabel).as("e").inV().has("name", inVertexName).<Edge>back("e").next().id();
+ return graph.traversal().V().has("name", outVertexName).outE(edgeLabel).as("e").inV().has("name", inVertexName).<Edge>select("e").next().id();
}
/**
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5081a2b5/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessComputerSuite.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessComputerSuite.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessComputerSuite.java
index 1487ee8..9e693dc 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessComputerSuite.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessComputerSuite.java
@@ -44,7 +44,6 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.filter.RetainTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.SampleTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.SimplePathTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.WhereTest;
-import org.apache.tinkerpop.gremlin.process.traversal.step.map.BackTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.CoalesceTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.CountTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.FoldTest;
@@ -68,9 +67,9 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.SackTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.SideEffectCapTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.StoreTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.TreeTest;
-import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.TraversalVerificationStrategyTest;
-import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.ReadOnlyStrategyProcessTest;
import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategyProcessTest;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.ReadOnlyStrategyProcessTest;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.TraversalVerificationStrategyTest;
import org.junit.runners.model.InitializationError;
import org.junit.runners.model.RunnerBuilder;
@@ -140,7 +139,6 @@ public class ProcessComputerSuite extends AbstractGremlinSuite {
WhereTest.Traversals.class,
// map
- BackTest.Traversals.class,
CoalesceTest.Traversals.class,
CountTest.Traversals.class,
FoldTest.Traversals.class,
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5081a2b5/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessStandardSuite.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessStandardSuite.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessStandardSuite.java
index c2af8e7..518273c 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessStandardSuite.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessStandardSuite.java
@@ -46,7 +46,6 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.filter.SimplePathTest
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.WhereTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.AddEdgeTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.AddVertexTest;
-import org.apache.tinkerpop.gremlin.process.traversal.step.map.BackTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.CoalesceTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.CountTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.FoldTest;
@@ -77,8 +76,8 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.util.PathTest;
import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.ElementIdStrategyProcessTest;
import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.EventStrategyProcessTest;
import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.PartitionStrategyProcessTest;
-import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.ReadOnlyStrategyProcessTest;
import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategyProcessTest;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.ReadOnlyStrategyProcessTest;
import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.TraversalVerificationStrategyTest;
import org.junit.runners.model.InitializationError;
import org.junit.runners.model.RunnerBuilder;
@@ -148,7 +147,6 @@ public class ProcessStandardSuite extends AbstractGremlinSuite {
// map
AddEdgeTest.Traversals.class,
AddVertexTest.Traversals.class,
- BackTest.Traversals.class,
CoalesceTest.Traversals.class,
CountTest.Traversals.class,
FoldTest.Traversals.class,
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5081a2b5/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/RangeTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/RangeTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/RangeTest.java
index 31c8be3..c46658d 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/RangeTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/RangeTest.java
@@ -21,21 +21,17 @@ package org.apache.tinkerpop.gremlin.process.traversal.step.filter;
import org.apache.tinkerpop.gremlin.LoadGraphWith;
import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
import org.apache.tinkerpop.gremlin.process.IgnoreEngine;
-import org.apache.tinkerpop.gremlin.process.traversal.Scope;
+import org.apache.tinkerpop.gremlin.process.UseEngine;
import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
-import org.apache.tinkerpop.gremlin.process.UseEngine;
import org.apache.tinkerpop.gremlin.structure.Vertex;
-import org.junit.Ignore;
import org.junit.Test;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
-
import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
-import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.*;
-import static org.junit.Assert.*;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.both;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.outE;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -57,10 +53,6 @@ public abstract class RangeTest extends AbstractGremlinProcessTest {
public abstract Traversal<Vertex, Vertex> get_g_V_repeatXbothX_timesX3X_rangeX5_11X();
- public abstract Traversal<Vertex, Map<String, Object>> get_g_V_hasLabelXsoftwareX_asXsX_localXinEXcreatedX_valuesXweightX_fold_limitXlocal_1XX_asXwX_select_byXnameX_by();
-
- public abstract Traversal<Vertex, Map<String, Object>> get_g_V_hasLabelXsoftwareX_asXsX_localXinEXcreatedX_valuesXweightX_fold_rangeXlocal_1_3XX_asXwX_select_byXnameX_by();
-
@Test
@LoadGraphWith(MODERN)
@IgnoreEngine(TraversalEngine.Type.COMPUTER)
@@ -163,57 +155,6 @@ public abstract class RangeTest extends AbstractGremlinProcessTest {
assertEquals(6, counter);
}
- @Test
- @LoadGraphWith(MODERN)
- //@IgnoreEngine(TraversalEngine.Type.COMPUTER)
- @Ignore("This should not work cause fold kills the path history")
- public void g_V_hasLabelXsoftwareX_asXsX_localXinEXcreatedX_valuesXweightX_fold_limitXlocal_1XX_asXwX_select_byXnameX_by() {
- final Traversal<Vertex, Map<String, Object>> traversal = get_g_V_hasLabelXsoftwareX_asXsX_localXinEXcreatedX_valuesXweightX_fold_limitXlocal_1XX_asXwX_select_byXnameX_by();
- printTraversalForm(traversal);
- int counter = 0;
- while (traversal.hasNext()) {
- final Map<String, Object> map = traversal.next();
- final List<Double> weights = (List<Double>) map.get("w");
- if (map.get("s").equals("lop")) {
- assertEquals(1, weights.size());
- assertTrue(Arrays.asList(0.4, 0.2).contains(weights.get(0)));
- } else if (map.get("s").equals("ripple")) {
- assertEquals(1, weights.size());
- assertEquals(1.0, weights.get(0), 0.0);
- } else {
- assertTrue(false);
- }
- counter++;
- }
- assertEquals(2, counter);
- }
-
- @Test
- @LoadGraphWith(MODERN)
- //@IgnoreEngine(TraversalEngine.Type.COMPUTER)
- @Ignore("This should not work cause fold kills the path history")
- public void g_V_hasLabelXsoftwareX_asXsX_localXinEXcreatedX_valuesXweightX_fold_rangeXlocal_1_3XX_asXwX_select_byXnameX_by() {
- final Traversal<Vertex, Map<String, Object>> traversal = get_g_V_hasLabelXsoftwareX_asXsX_localXinEXcreatedX_valuesXweightX_fold_rangeXlocal_1_3XX_asXwX_select_byXnameX_by();
- printTraversalForm(traversal);
- int counter = 0;
- while (traversal.hasNext()) {
- final Map<String, Object> map = traversal.next();
- final List<Double> weights = (List<Double>) map.get("w");
- if (map.get("s").equals("lop")) {
- assertEquals(2, weights.size());
- assertTrue(Arrays.asList(0.2, 0.4).contains(weights.get(0)));
- assertTrue(Arrays.asList(0.2, 0.4).contains(weights.get(1)));
- assertNotEquals(weights.get(0), weights.get(1));
- } else if (map.get("s").equals("ripple")) {
- assertEquals(0, weights.size());
- } else {
- assertTrue(false);
- }
- counter++;
- }
- assertEquals(2, counter);
- }
-
@UseEngine(TraversalEngine.Type.STANDARD)
@UseEngine(TraversalEngine.Type.COMPUTER)
public static class Traversals extends RangeTest {
@@ -251,15 +192,5 @@ public abstract class RangeTest extends AbstractGremlinProcessTest {
public Traversal<Vertex, Vertex> get_g_V_repeatXbothX_timesX3X_rangeX5_11X() {
return g.V().repeat(both()).times(3).range(5, 11);
}
-
- @Override
- public Traversal<Vertex, Map<String, Object>> get_g_V_hasLabelXsoftwareX_asXsX_localXinEXcreatedX_valuesXweightX_fold_limitXlocal_1XX_asXwX_select_byXnameX_by() {
- return g.V().hasLabel("software").as("s").local(inE("created").values("weight").fold().limit(Scope.local, 1)).as("w").select().by("name").by();
- }
-
- @Override
- public Traversal<Vertex, Map<String, Object>> get_g_V_hasLabelXsoftwareX_asXsX_localXinEXcreatedX_valuesXweightX_fold_rangeXlocal_1_3XX_asXwX_select_byXnameX_by() {
- return g.V().hasLabel("software").as("s").local(inE("created").values("weight").fold().range(Scope.local, 1, 3)).as("w").select().by("name").by();
- }
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5081a2b5/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/BackTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/BackTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/BackTest.java
deleted file mode 100644
index 631d2dc..0000000
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/BackTest.java
+++ /dev/null
@@ -1,220 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-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.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
-import org.apache.tinkerpop.gremlin.process.UseEngine;
-import org.apache.tinkerpop.gremlin.structure.Edge;
-import org.apache.tinkerpop.gremlin.structure.Vertex;
-import org.junit.Test;
-
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
-import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.*;
-import static org.junit.Assert.*;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- * @author Stephen Mallette (http://stephen.genoprime.com)
- */
-public abstract class BackTest extends AbstractGremlinProcessTest {
-
- public abstract Traversal<Vertex, Vertex> get_g_VX1X_asXhereX_out_backXhereX(final Object v1Id);
-
- public abstract Traversal<Vertex, Vertex> get_g_VX4X_out_asXhereX_hasXlang_javaX_backXhereX(final Object v4Id);
-
- public abstract Traversal<Vertex, String> get_g_VX4X_out_asXhereX_hasXlang_javaX_backXhereX_name(final Object v4Id);
-
- public abstract Traversal<Vertex, Edge> get_g_VX1X_outE_asXhereX_inV_hasXname_vadasX_backXhereX(final Object v1Id);
-
- public abstract Traversal<Vertex, Edge> get_g_VX1X_outEXknowsX_hasXweight_1X_asXhereX_inV_hasXname_joshX_backXhereX(final Object v1Id);
-
- public abstract Traversal<Vertex, Edge> get_g_VX1X_outEXknowsX_asXhereX_hasXweight_1X_inV_hasXname_joshX_backXhereX(final Object v1Id);
-
- public abstract Traversal<Vertex, Edge> get_g_VX1X_outEXknowsX_asXhereX_hasXweight_1X_asXfakeX_inV_hasXname_joshX_backXhereX(final Object v1Id);
-
- public abstract Traversal<Vertex, Vertex> get_g_V_asXhereXout_name_backXhereX();
-
- public abstract Traversal<Vertex, Map<String, Long>> get_g_V_outXcreatedX_unionXasXprojectX_inXcreatedX_hasXname_markoX_backXprojectX__asXprojectX_inXcreatedX_inXknowsX_hasXname_markoX_backXprojectXX_groupCount_byXnameX();
-
- @Test
- @LoadGraphWith(MODERN)
- public void g_VX1X_asXhereX_out_backXhereX() {
- final Traversal<Vertex, Vertex> traversal = get_g_VX1X_asXhereX_out_backXhereX(convertToVertexId("marko"));
- printTraversalForm(traversal);
- int counter = 0;
- while (traversal.hasNext()) {
- counter++;
- assertEquals("marko", traversal.next().<String>value("name"));
- }
- assertEquals(3, counter);
- }
-
-
- @Test
- @LoadGraphWith(MODERN)
- public void g_VX4X_out_asXhereX_hasXlang_javaX_backXhereX() {
- final Traversal<Vertex, Vertex> traversal = get_g_VX4X_out_asXhereX_hasXlang_javaX_backXhereX(convertToVertexId("josh"));
- printTraversalForm(traversal);
- int counter = 0;
- while (traversal.hasNext()) {
- counter++;
- final Vertex vertex = traversal.next();
- assertEquals("java", vertex.<String>value("lang"));
- assertTrue(vertex.value("name").equals("ripple") || vertex.value("name").equals("lop"));
- }
- assertEquals(2, counter);
- }
-
- @Test
- @LoadGraphWith(MODERN)
- public void g_VX1X_outE_asXhereX_inV_hasXname_vadasX_backXhereX() {
- final Traversal<Vertex, Edge> traversal = get_g_VX1X_outE_asXhereX_inV_hasXname_vadasX_backXhereX(convertToVertexId("marko"));
- printTraversalForm(traversal);
- final Edge edge = traversal.next();
- assertEquals("knows", edge.label());
- assertEquals(convertToVertexId("vadas"), edge.inVertex().id());
- assertEquals(convertToVertexId("marko"), edge.outVertex().id());
- assertEquals(0.5d, edge.<Double>value("weight"), 0.0001d);
- assertFalse(traversal.hasNext());
- }
-
- @Test
- @LoadGraphWith(MODERN)
- public void g_VX4X_out_asXhereX_hasXlang_javaX_backXhereX_name() {
- final Traversal<Vertex, String> traversal = get_g_VX4X_out_asXhereX_hasXlang_javaX_backXhereX_name(convertToVertexId("josh"));
- printTraversalForm(traversal);
- int counter = 0;
- final Set<String> names = new HashSet<>();
- while (traversal.hasNext()) {
- counter++;
- names.add(traversal.next());
- }
- assertEquals(2, counter);
- assertEquals(2, names.size());
- assertTrue(names.contains("ripple"));
- assertTrue(names.contains("lop"));
- }
-
- @Test
- @LoadGraphWith(MODERN)
- public void g_VX1X_outEXknowsX_hasXweight_1X_asXhereX_inV_hasXname_joshX_backXhereX() {
- final List<Traversal<Vertex, Edge>> traversals = Arrays.asList(
- get_g_VX1X_outEXknowsX_hasXweight_1X_asXhereX_inV_hasXname_joshX_backXhereX(convertToVertexId("marko")),
- get_g_VX1X_outEXknowsX_asXhereX_hasXweight_1X_inV_hasXname_joshX_backXhereX(convertToVertexId("marko")),
- get_g_VX1X_outEXknowsX_asXhereX_hasXweight_1X_asXfakeX_inV_hasXname_joshX_backXhereX(convertToVertexId("marko")));
- traversals.forEach(traversal -> {
- printTraversalForm(traversal);
- assertTrue(traversal.hasNext());
- assertTrue(traversal.hasNext());
- final Edge edge = traversal.next();
- assertEquals("knows", edge.label());
- assertEquals(1.0d, edge.<Double>value("weight"), 0.00001d);
- assertFalse(traversal.hasNext());
- assertFalse(traversal.hasNext());
- });
- }
-
- @Test
- @LoadGraphWith(MODERN)
- public void g_V_asXhereXout_name_backXhereX() {
- Traversal<Vertex, Vertex> traversal = get_g_V_asXhereXout_name_backXhereX();
- printTraversalForm(traversal);
- super.checkResults(new HashMap<Vertex, Long>() {{
- put(convertToVertex(graph, "marko"), 3l);
- put(convertToVertex(graph, "josh"), 2l);
- put(convertToVertex(graph, "peter"), 1l);
- }}, traversal);
- }
-
- @Test
- @LoadGraphWith(MODERN)
- public void g_V_outXcreatedX_unionXasXprojectX_inXcreatedX_hasXname_markoX_backXprojectX__asXprojectX_inXcreatedX_inXknowsX_hasXname_markoX_backXprojectXX_groupCount_byXnameX() {
- List<Traversal<Vertex, Map<String, Long>>> traversals = Arrays.asList(get_g_V_outXcreatedX_unionXasXprojectX_inXcreatedX_hasXname_markoX_backXprojectX__asXprojectX_inXcreatedX_inXknowsX_hasXname_markoX_backXprojectXX_groupCount_byXnameX());
- traversals.forEach(traversal -> {
- printTraversalForm(traversal);
- assertTrue(traversal.hasNext());
- final Map<String, Long> map = traversal.next();
- assertFalse(traversal.hasNext());
- assertEquals(2, map.size());
- assertEquals(1l, map.get("ripple").longValue());
- assertEquals(6l, map.get("lop").longValue());
- });
- }
-
- @UseEngine(TraversalEngine.Type.STANDARD)
- @UseEngine(TraversalEngine.Type.COMPUTER)
- public static class Traversals extends BackTest {
- @Override
- public Traversal<Vertex, Vertex> get_g_VX1X_asXhereX_out_backXhereX(final Object v1Id) {
- return g.V(v1Id).as("here").out().back("here");
- }
-
- @Override
- public Traversal<Vertex, Vertex> get_g_VX4X_out_asXhereX_hasXlang_javaX_backXhereX(final Object v4Id) {
- return g.V(v4Id).out().as("here").has("lang", "java").back("here");
- }
-
- @Override
- public Traversal<Vertex, String> get_g_VX4X_out_asXhereX_hasXlang_javaX_backXhereX_name(final Object v4Id) {
- return g.V(v4Id).out().as("here").has("lang", "java").back("here").values("name");
- }
-
- @Override
- public Traversal<Vertex, Edge> get_g_VX1X_outE_asXhereX_inV_hasXname_vadasX_backXhereX(final Object v1Id) {
- return g.V(v1Id).outE().as("here").inV().has("name", "vadas").back("here");
- }
-
- @Override
- public Traversal<Vertex, Edge> get_g_VX1X_outEXknowsX_hasXweight_1X_asXhereX_inV_hasXname_joshX_backXhereX(final Object v1Id) {
- return g.V(v1Id).outE("knows").has("weight", 1.0d).as("here").inV().has("name", "josh").back("here");
- }
-
- @Override
- public Traversal<Vertex, Edge> get_g_VX1X_outEXknowsX_asXhereX_hasXweight_1X_inV_hasXname_joshX_backXhereX(final Object v1Id) {
- return g.V(v1Id).outE("knows").as("here").has("weight", 1.0d).inV().has("name", "josh").<Edge>back("here");
- }
-
- @Override
- public Traversal<Vertex, Edge> get_g_VX1X_outEXknowsX_asXhereX_hasXweight_1X_asXfakeX_inV_hasXname_joshX_backXhereX(final Object v1Id) {
- return g.V(v1Id).outE("knows").as("here").has("weight", 1.0d).as("fake").inV().has("name", "josh").<Edge>back("here");
- }
-
- @Override
- public Traversal<Vertex, Vertex> get_g_V_asXhereXout_name_backXhereX() {
- return g.V().as("here").out().values("name").back("here");
- }
-
- @Override
- public Traversal<Vertex, Map<String, Long>> get_g_V_outXcreatedX_unionXasXprojectX_inXcreatedX_hasXname_markoX_backXprojectX__asXprojectX_inXcreatedX_inXknowsX_hasXname_markoX_backXprojectXX_groupCount_byXnameX() {
- return (Traversal) g.V().out("created")
- .union(as("project").in("created").has("name", "marko").back("project"),
- as("project").in("created").in("knows").has("name", "marko").back("project")).groupCount().by("name");
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5081a2b5/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SelectTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SelectTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SelectTest.java
index cc6de20..7cb07f1 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SelectTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SelectTest.java
@@ -25,6 +25,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
import org.apache.tinkerpop.gremlin.process.UseEngine;
import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
+import org.apache.tinkerpop.gremlin.structure.Edge;
import org.apache.tinkerpop.gremlin.structure.Order;
import org.apache.tinkerpop.gremlin.structure.Vertex;
import org.junit.Ignore;
@@ -34,6 +35,7 @@ import java.util.*;
import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.CREW;
import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.as;
import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.values;
import static org.junit.Assert.*;
@@ -65,6 +67,26 @@ public abstract class SelectTest extends AbstractGremlinProcessTest {
public abstract Traversal<Vertex, Map<String, Object>> get_g_V_hasLabelXpersonX_asXpersonX_localXbothE_label_groupCountX_asXrelationsX_select_byXnameX_by();
+ // below we original back()-tests
+
+ public abstract Traversal<Vertex, Vertex> get_g_VX1X_asXhereX_out_selectXhereX(final Object v1Id);
+
+ public abstract Traversal<Vertex, Vertex> get_g_VX4X_out_asXhereX_hasXlang_javaX_selectXhereX(final Object v4Id);
+
+ public abstract Traversal<Vertex, String> get_g_VX4X_out_asXhereX_hasXlang_javaX_selectXhereX_name(final Object v4Id);
+
+ public abstract Traversal<Vertex, Edge> get_g_VX1X_outE_asXhereX_inV_hasXname_vadasX_selectXhereX(final Object v1Id);
+
+ public abstract Traversal<Vertex, Edge> get_g_VX1X_outEXknowsX_hasXweight_1X_asXhereX_inV_hasXname_joshX_selectXhereX(final Object v1Id);
+
+ public abstract Traversal<Vertex, Edge> get_g_VX1X_outEXknowsX_asXhereX_hasXweight_1X_inV_hasXname_joshX_selectXhereX(final Object v1Id);
+
+ public abstract Traversal<Vertex, Edge> get_g_VX1X_outEXknowsX_asXhereX_hasXweight_1X_asXfakeX_inV_hasXname_joshX_selectXhereX(final Object v1Id);
+
+ public abstract Traversal<Vertex, Vertex> get_g_V_asXhereXout_name_selectXhereX();
+
+ public abstract Traversal<Vertex, Map<String, Long>> get_g_V_outXcreatedX_unionXasXprojectX_inXcreatedX_hasXname_markoX_selectXprojectX__asXprojectX_inXcreatedX_inXknowsX_hasXname_markoX_selectXprojectXX_groupCount_byXnameX();
+
@Test
@LoadGraphWith(MODERN)
public void g_VX1X_asXaX_outXknowsX_asXbX_select() {
@@ -114,7 +136,7 @@ public abstract class SelectTest extends AbstractGremlinProcessTest {
@Test
@LoadGraphWith(MODERN)
- @IgnoreEngine(TraversalEngine.Type.COMPUTER)
+ //@IgnoreEngine(TraversalEngine.Type.COMPUTER)
public void g_VX1X_asXaX_outXknowsX_asXbX_selectXaX_byXnameX() {
final Traversal<Vertex, String> traversal = get_g_VX1X_asXaX_outXknowsX_asXbX_selectXaX_byXnameX(convertToVertexId("marko"));
printTraversalForm(traversal);
@@ -206,8 +228,8 @@ public abstract class SelectTest extends AbstractGremlinProcessTest {
}
@Test
- @Ignore
@LoadGraphWith(MODERN)
+ @Ignore("There is a HashMap to Element cast problem happening here for some reason in both OLTP and OLAP") // TODO: dkuppitz this has been ignored for some time now -- don't know if the test is bad or the code is bad.
@IgnoreEngine(TraversalEngine.Type.COMPUTER)
public void g_V_hasLabelXpersonX_asXpersonX_localXbothE_label_groupCountX_asXrelationsX_select_byXnameX_by() {
final Traversal<Vertex, Map<String, Object>> traversal = get_g_V_hasLabelXpersonX_asXpersonX_localXbothE_label_groupCountX_asXrelationsX_select_byXnameX_by();
@@ -249,6 +271,114 @@ public abstract class SelectTest extends AbstractGremlinProcessTest {
assertEquals(4, persons.size());
}
+ //
+
+ @Test
+ @LoadGraphWith(MODERN)
+ public void g_VX1X_asXhereX_out_selectXhereX() {
+ final Traversal<Vertex, Vertex> traversal = get_g_VX1X_asXhereX_out_selectXhereX(convertToVertexId("marko"));
+ printTraversalForm(traversal);
+ int counter = 0;
+ while (traversal.hasNext()) {
+ counter++;
+ assertEquals("marko", traversal.next().<String>value("name"));
+ }
+ assertEquals(3, counter);
+ }
+
+
+ @Test
+ @LoadGraphWith(MODERN)
+ public void g_VX4X_out_asXhereX_hasXlang_javaX_selectXhereX() {
+ final Traversal<Vertex, Vertex> traversal = get_g_VX4X_out_asXhereX_hasXlang_javaX_selectXhereX(convertToVertexId("josh"));
+ printTraversalForm(traversal);
+ int counter = 0;
+ while (traversal.hasNext()) {
+ counter++;
+ final Vertex vertex = traversal.next();
+ assertEquals("java", vertex.<String>value("lang"));
+ assertTrue(vertex.value("name").equals("ripple") || vertex.value("name").equals("lop"));
+ }
+ assertEquals(2, counter);
+ }
+
+ @Test
+ @LoadGraphWith(MODERN)
+ public void g_VX1X_outE_asXhereX_inV_hasXname_vadasX_selectXhereX() {
+ final Traversal<Vertex, Edge> traversal = get_g_VX1X_outE_asXhereX_inV_hasXname_vadasX_selectXhereX(convertToVertexId("marko"));
+ printTraversalForm(traversal);
+ final Edge edge = traversal.next();
+ assertEquals("knows", edge.label());
+ assertEquals(convertToVertexId("vadas"), edge.inVertex().id());
+ assertEquals(convertToVertexId("marko"), edge.outVertex().id());
+ assertEquals(0.5d, edge.<Double>value("weight"), 0.0001d);
+ assertFalse(traversal.hasNext());
+ }
+
+ @Test
+ @LoadGraphWith(MODERN)
+ public void g_VX4X_out_asXhereX_hasXlang_javaX_selectXhereX_name() {
+ final Traversal<Vertex, String> traversal = get_g_VX4X_out_asXhereX_hasXlang_javaX_selectXhereX_name(convertToVertexId("josh"));
+ printTraversalForm(traversal);
+ int counter = 0;
+ final Set<String> names = new HashSet<>();
+ while (traversal.hasNext()) {
+ counter++;
+ names.add(traversal.next());
+ }
+ assertEquals(2, counter);
+ assertEquals(2, names.size());
+ assertTrue(names.contains("ripple"));
+ assertTrue(names.contains("lop"));
+ }
+
+ @Test
+ @LoadGraphWith(MODERN)
+ public void g_VX1X_outEXknowsX_hasXweight_1X_asXhereX_inV_hasXname_joshX_selectXhereX() {
+ final List<Traversal<Vertex, Edge>> traversals = Arrays.asList(
+ get_g_VX1X_outEXknowsX_hasXweight_1X_asXhereX_inV_hasXname_joshX_selectXhereX(convertToVertexId("marko")),
+ get_g_VX1X_outEXknowsX_asXhereX_hasXweight_1X_inV_hasXname_joshX_selectXhereX(convertToVertexId("marko")),
+ get_g_VX1X_outEXknowsX_asXhereX_hasXweight_1X_asXfakeX_inV_hasXname_joshX_selectXhereX(convertToVertexId("marko")));
+ traversals.forEach(traversal -> {
+ printTraversalForm(traversal);
+ assertTrue(traversal.hasNext());
+ assertTrue(traversal.hasNext());
+ final Edge edge = traversal.next();
+ assertEquals("knows", edge.label());
+ assertEquals(1.0d, edge.<Double>value("weight"), 0.00001d);
+ assertFalse(traversal.hasNext());
+ assertFalse(traversal.hasNext());
+ });
+ }
+
+ @Test
+ @LoadGraphWith(MODERN)
+ public void g_V_asXhereXout_name_selectXhereX() {
+ Traversal<Vertex, Vertex> traversal = get_g_V_asXhereXout_name_selectXhereX();
+ printTraversalForm(traversal);
+ super.checkResults(new HashMap<Vertex, Long>() {{
+ put(convertToVertex(graph, "marko"), 3l);
+ put(convertToVertex(graph, "josh"), 2l);
+ put(convertToVertex(graph, "peter"), 1l);
+ }}, traversal);
+ }
+
+ @Test
+ @LoadGraphWith(MODERN)
+ @IgnoreEngine(TraversalEngine.Type.STANDARD) // TODO: dkuppitz this fails on OLTP, but passes on OLAP
+ public void g_V_outXcreatedX_unionXasXprojectX_inXcreatedX_hasXname_markoX_selectXprojectX__asXprojectX_inXcreatedX_inXknowsX_hasXname_markoX_selectXprojectXX_groupCount_byXnameX() {
+ List<Traversal<Vertex, Map<String, Long>>> traversals = Arrays.asList(get_g_V_outXcreatedX_unionXasXprojectX_inXcreatedX_hasXname_markoX_selectXprojectX__asXprojectX_inXcreatedX_inXknowsX_hasXname_markoX_selectXprojectXX_groupCount_byXnameX());
+ traversals.forEach(traversal -> {
+ printTraversalForm(traversal);
+ assertTrue(traversal.hasNext());
+ final Map<String, Long> map = traversal.next();
+ assertFalse(traversal.hasNext());
+ assertEquals(2, map.size());
+ assertEquals(1l, map.get("ripple").longValue());
+ assertEquals(6l, map.get("lop").longValue());
+ });
+ }
+
@UseEngine(TraversalEngine.Type.STANDARD)
@UseEngine(TraversalEngine.Type.COMPUTER)
public static class Traversals extends SelectTest {
@@ -306,5 +436,54 @@ public abstract class SelectTest extends AbstractGremlinProcessTest {
public Traversal<Vertex, Map<String, Object>> get_g_V_hasLabelXpersonX_asXpersonX_localXbothE_label_groupCountX_asXrelationsX_select_byXnameX_by() {
return g.V().hasLabel("person").as("person").local(__.bothE().label().groupCount()).as("relations").select().by("name").by();
}
+
+ //
+
+ @Override
+ public Traversal<Vertex, Vertex> get_g_VX1X_asXhereX_out_selectXhereX(final Object v1Id) {
+ return g.V(v1Id).as("here").out().select("here");
+ }
+
+ @Override
+ public Traversal<Vertex, Vertex> get_g_VX4X_out_asXhereX_hasXlang_javaX_selectXhereX(final Object v4Id) {
+ return g.V(v4Id).out().as("here").has("lang", "java").select("here");
+ }
+
+ @Override
+ public Traversal<Vertex, String> get_g_VX4X_out_asXhereX_hasXlang_javaX_selectXhereX_name(final Object v4Id) {
+ return g.V(v4Id).out().as("here").has("lang", "java").select("here").values("name");
+ }
+
+ @Override
+ public Traversal<Vertex, Edge> get_g_VX1X_outE_asXhereX_inV_hasXname_vadasX_selectXhereX(final Object v1Id) {
+ return g.V(v1Id).outE().as("here").inV().has("name", "vadas").select("here");
+ }
+
+ @Override
+ public Traversal<Vertex, Edge> get_g_VX1X_outEXknowsX_hasXweight_1X_asXhereX_inV_hasXname_joshX_selectXhereX(final Object v1Id) {
+ return g.V(v1Id).outE("knows").has("weight", 1.0d).as("here").inV().has("name", "josh").select("here");
+ }
+
+ @Override
+ public Traversal<Vertex, Edge> get_g_VX1X_outEXknowsX_asXhereX_hasXweight_1X_inV_hasXname_joshX_selectXhereX(final Object v1Id) {
+ return g.V(v1Id).outE("knows").as("here").has("weight", 1.0d).inV().has("name", "josh").<Edge>select("here");
+ }
+
+ @Override
+ public Traversal<Vertex, Edge> get_g_VX1X_outEXknowsX_asXhereX_hasXweight_1X_asXfakeX_inV_hasXname_joshX_selectXhereX(final Object v1Id) {
+ return g.V(v1Id).outE("knows").as("here").has("weight", 1.0d).as("fake").inV().has("name", "josh").<Edge>select("here");
+ }
+
+ @Override
+ public Traversal<Vertex, Vertex> get_g_V_asXhereXout_name_selectXhereX() {
+ return g.V().as("here").out().values("name").select("here");
+ }
+
+ @Override
+ public Traversal<Vertex, Map<String, Long>> get_g_V_outXcreatedX_unionXasXprojectX_inXcreatedX_hasXname_markoX_selectXprojectX__asXprojectX_inXcreatedX_inXknowsX_hasXname_markoX_selectXprojectXX_groupCount_byXnameX() {
+ return (Traversal) g.V().out("created")
+ .union(as("project").in("created").has("name", "marko").select("project"),
+ as("project").in("created").in("knows").has("name", "marko").select("project")).groupCount().by("name");
+ }
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5081a2b5/hadoop-gremlin/conf/hadoop-gryo.properties
----------------------------------------------------------------------
diff --git a/hadoop-gremlin/conf/hadoop-gryo.properties b/hadoop-gremlin/conf/hadoop-gryo.properties
index 428cb5c..0484327 100644
--- a/hadoop-gremlin/conf/hadoop-gryo.properties
+++ b/hadoop-gremlin/conf/hadoop-gryo.properties
@@ -35,9 +35,6 @@ mapred.map.child.java.opts=-Xmx1024m
mapred.reduce.child.java.opts=-Xmx1024m
giraph.numInputThreads=4
giraph.numComputeThreads=4
-giraph.maxMessagesInMemory=100000
-# giraph.vertexOutputFormatThreadSafe=true
-# giraph.numOutputThreads=4
# giraph.maxPartitionsInMemory=1
# giraph.userPartitionCount=2
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5081a2b5/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/IOClasses.java
----------------------------------------------------------------------
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/IOClasses.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/IOClasses.java
index 4efd98c..504e25d 100644
--- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/IOClasses.java
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/IOClasses.java
@@ -30,7 +30,7 @@ import java.util.List;
/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
*/
-public class IOClasses {
+public final class IOClasses {
public static List<Class> getGryoClasses(final GryoMapper mapper) {
return mapper.getRegisteredClasses();
[3/3] incubator-tinkerpop git commit: Refactor IdManager
configuration in TinkerGraph.
Posted by sp...@apache.org.
Refactor IdManager configuration in TinkerGraph.
Provides for less cut/paste of similar code and improved readability of constructor.
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/3aa7e215
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/3aa7e215
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/3aa7e215
Branch: refs/heads/TINKERPOP3-581
Commit: 3aa7e215381723f29e982a54bd076816bf081e36
Parents: 975f0a1
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Apr 10 13:56:01 2015 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri Apr 10 13:56:01 2015 -0400
----------------------------------------------------------------------
.../tinkergraph/structure/TinkerGraph.java | 58 ++++++++------------
1 file changed, 22 insertions(+), 36 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/3aa7e215/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraph.java
----------------------------------------------------------------------
diff --git a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraph.java b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraph.java
index 07cab24..aacc223 100644
--- a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraph.java
+++ b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraph.java
@@ -86,9 +86,9 @@ public class TinkerGraph implements Graph {
private final static TinkerGraph EMPTY_GRAPH = new TinkerGraph(EMPTY_CONFIGURATION);
- protected IdManager<?> vertexIdManager;
- protected IdManager<?> edgeIdManager;
- protected IdManager<?> vertexPropertyIdManager;
+ protected final IdManager<?> vertexIdManager;
+ protected final IdManager<?> edgeIdManager;
+ protected final IdManager<?> vertexPropertyIdManager;
private final Configuration configuration;
@@ -97,39 +97,9 @@ public class TinkerGraph implements Graph {
*/
private TinkerGraph(final Configuration configuration) {
this.configuration = configuration;
-
- final String vertexIdManagerConfigValue = configuration.getString(CONFIG_VERTEX_ID, DefaultIdManager.ANY.name());
- try {
- vertexIdManager = DefaultIdManager.valueOf(vertexIdManagerConfigValue);
- } catch (IllegalArgumentException iae) {
- try {
- vertexIdManager = (IdManager) Class.forName(vertexIdManagerConfigValue).newInstance();
- } catch (Exception ex) {
- throw new IllegalStateException(String.format("Could not configure TinkerGraph vertex id manager with %s", vertexIdManagerConfigValue));
- }
- }
-
- final String edgeIdManagerConfigValue = configuration.getString(CONFIG_EDGE_ID, DefaultIdManager.ANY.name());
- try {
- edgeIdManager = DefaultIdManager.valueOf(edgeIdManagerConfigValue);
- } catch (IllegalArgumentException iae) {
- try {
- edgeIdManager = (IdManager) Class.forName(edgeIdManagerConfigValue).newInstance();
- } catch (Exception ex) {
- throw new IllegalStateException(String.format("Could not configure TinkerGraph edge id manager with %s", edgeIdManagerConfigValue));
- }
- }
-
- final String vertexPropIdManagerConfigValue = configuration.getString(CONFIG_VERTEX_PROPERTY_ID, DefaultIdManager.ANY.name());
- try {
- vertexPropertyIdManager = DefaultIdManager.valueOf(vertexPropIdManagerConfigValue);
- } catch (IllegalArgumentException iae) {
- try {
- vertexPropertyIdManager = (IdManager) Class.forName(vertexPropIdManagerConfigValue).newInstance();
- } catch (Exception ex) {
- throw new IllegalStateException(String.format("Could not configure TinkerGraph vertex property id manager with %s", vertexPropIdManagerConfigValue));
- }
- }
+ vertexIdManager = selectIdManager(configuration, CONFIG_VERTEX_ID, Vertex.class);
+ edgeIdManager = selectIdManager(configuration, CONFIG_EDGE_ID, Edge.class);
+ vertexPropertyIdManager = selectIdManager(configuration, CONFIG_VERTEX_PROPERTY_ID, VertexProperty.class);
}
public static TinkerGraph empty() {
@@ -426,6 +396,22 @@ public class TinkerGraph implements Graph {
}
/**
+ * Construct an {@link TinkerGraph.IdManager} from the TinkerGraph {@link Configuration}.
+ */
+ private static IdManager<?> selectIdManager(final Configuration config, final String configKey, final Class<? extends Element> clazz) {
+ final String vertexIdManagerConfigValue = config.getString(configKey, DefaultIdManager.ANY.name());
+ try {
+ return DefaultIdManager.valueOf(vertexIdManagerConfigValue);
+ } catch (IllegalArgumentException iae) {
+ try {
+ return (IdManager) Class.forName(vertexIdManagerConfigValue).newInstance();
+ } catch (Exception ex) {
+ throw new IllegalStateException(String.format("Could not configure TinkerGraph %s id manager with %s", clazz.getSimpleName(), vertexIdManagerConfigValue));
+ }
+ }
+ }
+
+ /**
* TinkerGraph will use an implementation of this interface to generate identifiers when a user does not supply
* them and to handle identifier conversions when querying to provide better flexibility with respect to
* handling different data types that mean the same thing. For example, the
[2/3] incubator-tinkerpop git commit: Merge remote-tracking branch
'origin/master' into TINKERPOP3-581
Posted by sp...@apache.org.
Merge remote-tracking branch 'origin/master' into TINKERPOP3-581
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/975f0a1b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/975f0a1b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/975f0a1b
Branch: refs/heads/TINKERPOP3-581
Commit: 975f0a1b21fe36993d506f80212fccb2f77894be
Parents: a4c62be 5081a2b
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Apr 10 13:32:12 2015 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri Apr 10 13:32:12 2015 -0400
----------------------------------------------------------------------
CHANGELOG.asciidoc | 5 +-
docs/src/the-traversal.asciidoc | 34 ++-
.../traversal/dsl/graph/GraphTraversal.java | 5 -
.../gremlin/process/traversal/dsl/graph/__.java | 4 -
.../process/traversal/step/map/BackStep.java | 64 ------
.../traversal/traverser/util/TraverserSet.java | 7 +-
.../tinkerpop/gremlin/structure/Graph.java | 4 +-
.../step/filter/GroovyRangeTest.groovy | 36 ---
.../traversal/step/map/GroovyBackTest.groovy | 146 ------------
.../traversal/step/map/GroovySelectTest.groovy | 112 +++++++++-
.../process/GroovyProcessComputerSuite.java | 2 -
.../process/GroovyProcessStandardSuite.java | 4 +-
.../tinkerpop/gremlin/AbstractGremlinTest.java | 2 +-
.../gremlin/process/ProcessComputerSuite.java | 6 +-
.../gremlin/process/ProcessStandardSuite.java | 4 +-
.../traversal/step/filter/RangeTest.java | 79 +------
.../process/traversal/step/map/BackTest.java | 220 -------------------
.../process/traversal/step/map/SelectTest.java | 183 ++++++++++++++-
hadoop-gremlin/conf/hadoop-gryo.properties | 3 -
.../gremlin/hadoop/structure/io/IOClasses.java | 2 +-
20 files changed, 329 insertions(+), 593 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/975f0a1b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Graph.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/975f0a1b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/AbstractGremlinTest.java
----------------------------------------------------------------------