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 2018/05/21 17:14:48 UTC

[01/22] tinkerpop git commit: All glvs build on integration tests phase, but don't need to be bound to skipIntegrationTests. Much easier to just bind to skipTests. CTR [Forced Update!]

Repository: tinkerpop
Updated Branches:
  refs/heads/TINKERPOP-1968 949cffec8 -> b6a8f737c (forced update)


All glvs build on integration tests phase, but don't need to be bound to skipIntegrationTests. Much easier to just bind to skipTests. CTR


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/7c696076
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/7c696076
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/7c696076

Branch: refs/heads/TINKERPOP-1968
Commit: 7c696076dd8c20eda465869ef8f275bbf5c976bc
Parents: e398373
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Mon May 21 09:20:30 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon May 21 09:20:30 2018 -0400

----------------------------------------------------------------------
 .travis.yml                | 6 +++---
 gremlin-javascript/pom.xml | 2 +-
 2 files changed, 4 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/7c696076/.travis.yml
----------------------------------------------------------------------
diff --git a/.travis.yml b/.travis.yml
index 6c98950..1c15c15 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -28,7 +28,7 @@ before_install:
 jobs:
   include:
     - script: "mvn clean install -Dci --batch-mode -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn"
-    - script: "touch gremlin-dotnet/src/.glv && touch gremlin-dotnet/test/.glv && mvn clean install -q -DskipTests && mvn verify -pl :gremlin-dotnet,:gremlin-dotnet-tests -P gremlin-dotnet -DskipIntegrationTests=false"
-    - script: "touch gremlin-python/.glv && mvn clean install -q -DskipTests && mvn verify -pl gremlin-python -DskipIntegrationTests=false"
-    - script: "mvn clean install -q -DskipTests && mvn verify -pl :gremlin-javascript -DskipIntegrationTests=false"
+    - script: "touch gremlin-dotnet/src/.glv && touch gremlin-dotnet/test/.glv && mvn clean install -q -DskipTests && mvn verify -pl :gremlin-dotnet,:gremlin-dotnet-tests -P gremlin-dotnet"
+    - script: "touch gremlin-python/.glv && mvn clean install -q -DskipTests && mvn verify -pl gremlin-python"
+    - script: "mvn clean install -q -DskipTests && mvn verify -pl :gremlin-javascript"
     - script: "mvn clean install -q -DskipTests && mvn verify -pl :spark-gremlin -DskipIntegrationTests=false"

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/7c696076/gremlin-javascript/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-javascript/pom.xml b/gremlin-javascript/pom.xml
index 4736576..a820f3b 100644
--- a/gremlin-javascript/pom.xml
+++ b/gremlin-javascript/pom.xml
@@ -212,7 +212,7 @@ limitations under the License.
                     </execution>
                 </executions>
                 <configuration>
-                    <skip>${skipIntegrationTests}</skip>
+                    <skip>${skipTests}</skip>
                     <workingDirectory>src/main/javascript/gremlin-javascript</workingDirectory>
                     <nodeVersion>v6.12.3</nodeVersion>
                 </configuration>


[03/22] tinkerpop git commit: TINKERPOP-1595 Updated changelog

Posted by sp...@apache.org.
TINKERPOP-1595 Updated changelog


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/d4893b82
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/d4893b82
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/d4893b82

Branch: refs/heads/TINKERPOP-1968
Commit: d4893b828ef1bead0cda91a7bb111f5b31a8d91d
Parents: 628d5df
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Tue Apr 24 08:10:12 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon May 21 12:32:57 2018 -0400

----------------------------------------------------------------------
 CHANGELOG.asciidoc | 1 +
 1 file changed, 1 insertion(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d4893b82/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index b286dcb..155809e 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -32,6 +32,7 @@ image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/ima
 * Fixed bug where path history was not being preserved for keys in mutations.
 * Bumped to httpclient 4.5.5.
 * Bumped to Groovy 2.4.15 - fixes bug with `Lambda` construction.
+* Improved performance of `TraversalVertexProgram` and related infrastructure.
 * Improved performance of GraphSON deserialization of `Bytecode`.
 * Improved performance of traversal construction.
 


[19/22] tinkerpop git commit: TINKERPOP-1968 Removed embedded list test from ignored validation

Posted by sp...@apache.org.
TINKERPOP-1968 Removed embedded list test from ignored validation


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/5c2a94fe
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/5c2a94fe
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/5c2a94fe

Branch: refs/heads/TINKERPOP-1968
Commit: 5c2a94fe672f0355a9bde358d11a5affaaaa8a78
Parents: 88f54f2
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Mon May 21 07:07:20 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon May 21 13:14:24 2018 -0400

----------------------------------------------------------------------
 .../org/apache/tinkerpop/gremlin/process/FeatureCoverageTest.java  | 2 --
 1 file changed, 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/5c2a94fe/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/process/FeatureCoverageTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/process/FeatureCoverageTest.java b/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/process/FeatureCoverageTest.java
index ceef0d6..181cd17 100644
--- a/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/process/FeatureCoverageTest.java
+++ b/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/process/FeatureCoverageTest.java
@@ -105,8 +105,6 @@ public class FeatureCoverageTest {
             // GLV suite doesn't support property identifiers and related assertions
             "g_V_hasXageX_properties_hasXid_nameIdX_value",
             "g_V_hasXageX_properties_hasXid_nameIdAsStringX_value",
-            // assertion doesn't seem to want to work right for embedded lists
-            "g_V_asXa_bX_out_asXcX_path_selectXkeysX",
             // ugh - BigInteger?
             "g_withSackXBigInteger_TEN_powX1000X_assignX_V_localXoutXknowsX_barrierXnormSackXX_inXknowsX_barrier_sack",
             // ugh - clone


[07/22] tinkerpop git commit: TINKERPOP-1595 Refactored reflective lookups for clone()

Posted by sp...@apache.org.
TINKERPOP-1595 Refactored reflective lookups for clone()

Rather than iterate all methods to find clone() just call getMethod() and call that if found. Nothing seems to be exercising this bit of code in our test suite. I forced it by adding clone() temporarily to RangeBiOperator and it worked without issue. Not sure how else to test this.


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/a5d9ecd0
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/a5d9ecd0
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/a5d9ecd0

Branch: refs/heads/TINKERPOP-1968
Commit: a5d9ecd03130b2615916b5659e5d5b3e11bedc2f
Parents: 55c6fb5
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Tue Apr 24 08:03:28 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon May 21 12:32:57 2018 -0400

----------------------------------------------------------------------
 .../gremlin/process/computer/MemoryComputeKey.java   | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a5d9ecd0/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/MemoryComputeKey.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/MemoryComputeKey.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/MemoryComputeKey.java
index 70adf3d..a9b1532 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/MemoryComputeKey.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/MemoryComputeKey.java
@@ -79,14 +79,17 @@ public final class MemoryComputeKey<A> implements Serializable, Cloneable {
     public MemoryComputeKey<A> clone() {
         try {
             final MemoryComputeKey<A> clone = (MemoryComputeKey<A>) super.clone();
-            for (final Method method : this.reducer.getClass().getMethods()) {
-                if (method.getName().equals("clone") && 0 == method.getParameterCount()) {
-                    clone.reducer = (BinaryOperator<A>) method.invoke(this.reducer);
-                    break;
-                }
+
+            try {
+                final Method cloneMethod = this.reducer.getClass().getMethod("clone");
+                if (cloneMethod != null)
+                    clone.reducer = (BinaryOperator<A>) cloneMethod.invoke(this.reducer);
+            } catch(Exception ignored) {
+
             }
+
             return clone;
-        } catch (final IllegalAccessException | InvocationTargetException | CloneNotSupportedException e) {
+        } catch (final CloneNotSupportedException e) {
             throw new IllegalStateException(e.getMessage(), e);
         }
     }


[05/22] tinkerpop git commit: TINKERPOP-1595 Removed usage of deprecated graph computer method

Posted by sp...@apache.org.
TINKERPOP-1595 Removed usage of deprecated graph computer method


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/1f99d68a
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/1f99d68a
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/1f99d68a

Branch: refs/heads/TINKERPOP-1968
Commit: 1f99d68abdae87b8ea8e83ece6e3e3268063802a
Parents: 7c69607
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Tue Apr 24 07:59:58 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon May 21 12:32:57 2018 -0400

----------------------------------------------------------------------
 .../process/computer/traversal/step/map/VertexProgramStep.java     | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/1f99d68a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/VertexProgramStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/VertexProgramStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/VertexProgramStep.java
index d005940..b32ef82 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/VertexProgramStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/VertexProgramStep.java
@@ -72,7 +72,7 @@ public abstract class VertexProgramStep extends AbstractStep<ComputerResult, Com
                 final Traverser.Admin<ComputerResult> traverser = this.starts.next();
                 final Graph graph = traverser.get().graph();
                 final Memory memory = traverser.get().memory();
-                future = this.generateComputer(graph).program(this.generateProgram(graph, memory)).submit();
+                future = this.getComputer().apply(graph).program(this.generateProgram(graph, memory)).submit();
                 final ComputerResult result = future.get();
                 this.processMemorySideEffects(result.memory());
                 return traverser.split(result, this);


[08/22] tinkerpop git commit: TINKERPOP-1595 Removed stream() usage

Posted by sp...@apache.org.
TINKERPOP-1595 Removed stream() usage


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/55c6fb51
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/55c6fb51
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/55c6fb51

Branch: refs/heads/TINKERPOP-1968
Commit: 55c6fb51faefedf8191a59f5ba7c6975f83f52c3
Parents: 31c4c36
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Tue Apr 24 08:02:31 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon May 21 12:32:57 2018 -0400

----------------------------------------------------------------------
 .../traversal/step/map/TraversalVertexProgramStep.java    | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/55c6fb51/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/TraversalVertexProgramStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/TraversalVertexProgramStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/TraversalVertexProgramStep.java
index e866ce2..a49cc27 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/TraversalVertexProgramStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/TraversalVertexProgramStep.java
@@ -32,6 +32,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequire
 import org.apache.tinkerpop.gremlin.process.traversal.util.PureTraversal;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
+import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
 
 import java.util.Collections;
 import java.util.List;
@@ -73,11 +74,10 @@ public final class TraversalVertexProgramStep extends VertexProgramStep implemen
     public TraversalVertexProgram generateProgram(final Graph graph, final Memory memory) {
         final Traversal.Admin<?, ?> computerSpecificTraversal = this.computerTraversal.getPure();
         final TraversalStrategies computerSpecificStrategies = this.getTraversal().getStrategies().clone();
-        TraversalStrategies.GlobalCache.getStrategies(graph.getClass())
-                .toList()
-                .stream()
-                .filter(s -> s instanceof TraversalStrategy.ProviderOptimizationStrategy)
-                .forEach(computerSpecificStrategies::addStrategies);
+
+        IteratorUtils.filter(TraversalStrategies.GlobalCache.getStrategies(graph.getClass()).toList(),
+                s -> s instanceof TraversalStrategy.ProviderOptimizationStrategy).forEach(computerSpecificStrategies::addStrategies);
+
         computerSpecificTraversal.setStrategies(computerSpecificStrategies);
         computerSpecificTraversal.setSideEffects(new MemoryTraversalSideEffects(this.getTraversal().getSideEffects()));
         computerSpecificTraversal.setParent(this);


[22/22] tinkerpop git commit: TINKERPOP-1968 Open up a formerly ignored test

Posted by sp...@apache.org.
TINKERPOP-1968 Open up a formerly ignored test


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/ffe96b2e
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/ffe96b2e
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/ffe96b2e

Branch: refs/heads/TINKERPOP-1968
Commit: ffe96b2ea44e361d2891631b4c426510d3085730
Parents: cf25784
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Mon May 21 08:32:03 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon May 21 13:14:24 2018 -0400

----------------------------------------------------------------------
 gremlin-test/features/map/Vertex.feature | 19 ++++++++++++++++---
 1 file changed, 16 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ffe96b2e/gremlin-test/features/map/Vertex.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/map/Vertex.feature b/gremlin-test/features/map/Vertex.feature
index 8642693..3f2a63b 100644
--- a/gremlin-test/features/map/Vertex.feature
+++ b/gremlin-test/features/map/Vertex.feature
@@ -449,12 +449,25 @@ Feature: Step - V(), E(), out(), in(), both(), inE(), outE(), bothE()
       | v[vadas] |
       | v[josh] |
 
+  # this test deviates from the setup of the java test, but the intent is the same. the java test drops lop and then
+  # tries to query it as part of the group of ids. here, rather than drop, we simply use an id that doesn't exist
+  # which is simulated by an edge identifier.
   Scenario: g_VX1_2_3_4X_name
-    Given an unsupported test
-    Then nothing should happen because
+    Given the modern graph
+    And using the parameter v1Id defined as "v[marko].id"
+    And using the parameter v2Id defined as "v[vadas].id"
+    And using the parameter v3Id defined as "e[marko-knows->josh].id"
+    And using the parameter v4Id defined as "v[josh].id"
+    And the traversal of
       """
-      the test manipulates a static dataset which is not supported by the language of the feature files"
+      g.V(v1Id, v2Id, v3Id, v4Id).values("name")
       """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | marko |
+      | vadas |
+      | josh |
 
   Scenario: g_V_hasLabelXpersonX_V_hasLabelXsoftwareX_name
     Given the modern graph


[10/22] tinkerpop git commit: TINKERPOP-1968 Make Pop tests more GLV friendly

Posted by sp...@apache.org.
TINKERPOP-1968 Make Pop tests more GLV friendly

The java/groovy tests were nicer before, but they don't translate to GLV tests well. Had to change them to get them off the ignore list.


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/d9c462ee
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/d9c462ee
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/d9c462ee

Branch: refs/heads/TINKERPOP-1968
Commit: d9c462ee335396af633f865a0803d70281d23e8f
Parents: 59c0ad0
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Sat May 19 07:16:09 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon May 21 13:14:23 2018 -0400

----------------------------------------------------------------------
 .../traversal/step/map/GroovySelectTest.groovy  |  80 +++++-
 gremlin-test/features/map/Select.feature        | 146 ++++++++++-
 .../process/traversal/step/map/SelectTest.java  | 245 ++++++++++++++++---
 .../gremlin/process/FeatureCoverageTest.java    |   5 -
 4 files changed, 419 insertions(+), 57 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d9c462ee/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 89fc691..1ae322d 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
@@ -172,27 +172,83 @@ public abstract class GroovySelectTest {
         // TINKERPOP-619: select should not throw
 
         @Override
-        public Traversal<Vertex, Object> get_g_V_selectXaX(final Pop pop) {
-            final String root = "g.V."
-            new ScriptTraversal<>(g, "gremlin-groovy", root + (null == pop ? "select('a')" : "select(${pop}, 'a')"))
+        public Traversal<Vertex, Object> get_g_V_selectXaX() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.select('a')")
         }
 
         @Override
-        public Traversal<Vertex, Map<String, Object>> get_g_V_selectXa_bX(final Pop pop) {
-            final String root = "g.V."
-            new ScriptTraversal<>(g, "gremlin-groovy", root + (null == pop ? "select('a', 'b')" : "select(${pop}, 'a', 'b')"))
+        public Traversal<Vertex, Map<String, Object>> get_g_V_selectXa_bX() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.select('a', 'b')")
         }
 
         @Override
-        public Traversal<Vertex, Object> get_g_V_valueMap_selectXpop_aX(final Pop pop) {
-            final String root = "g.V.valueMap."
-            new ScriptTraversal<>(g, "gremlin-groovy", root + (null == pop ? "select('a')" : "select(${pop}, 'a')"))
+        public Traversal<Vertex, Object> get_g_V_valueMap_selectXaX() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.valueMap().select('a')")
         }
 
         @Override
-        public Traversal<Vertex, Map<String, Object>> get_g_V_valueMap_selectXpop_a_bX(final Pop pop) {
-            final String root = "g.V.valueMap."
-            new ScriptTraversal<>(g, "gremlin-groovy", root + (null == pop ? "select('a', 'b')" : "select(${pop}, 'a', 'b')"))
+        public Traversal<Vertex, Map<String, Object>> get_g_V_valueMap_selectXa_bX() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.valueMap().select('a', 'b')")
+        }
+
+        @Override
+        public Traversal<Vertex, Object> get_g_V_selectXfirst_aX() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.select(Pop.first, 'a')")
+        }
+
+        @Override
+        public Traversal<Vertex, Map<String, Object>> get_g_V_selectXfirst_a_bX() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.select(Pop.first, 'a', 'b')")
+        }
+
+        @Override
+        public Traversal<Vertex, Object> get_g_V_valueMap_selectXfirst_aX() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.valueMap().select(Pop.first, 'a')")
+        }
+
+        @Override
+        public Traversal<Vertex, Map<String, Object>> get_g_V_valueMap_selectXfirst_a_bX() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.valueMap().select(Pop.first, 'a', 'b')")
+        }
+
+        @Override
+        public Traversal<Vertex, Object> get_g_V_selectXlast_aX() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.select(Pop.last, 'a')")
+        }
+
+        @Override
+        public Traversal<Vertex, Map<String, Object>> get_g_V_selectXlast_a_bX() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.select(Pop.last, 'a', 'b')")
+        }
+
+        @Override
+        public Traversal<Vertex, Object> get_g_V_valueMap_selectXlast_aX() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.valueMap().select(Pop.last, 'a')")
+        }
+
+        @Override
+        public Traversal<Vertex, Map<String, Object>> get_g_V_valueMap_selectXlast_a_bX() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.valueMap().select(Pop.last, 'a', 'b')")
+        }
+
+        @Override
+        public Traversal<Vertex, Object> get_g_V_selectXall_aX() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.select(Pop.all, 'a')")
+        }
+
+        @Override
+        public Traversal<Vertex, Map<String, Object>> get_g_V_selectXall_a_bX() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.select(Pop.all, 'a', 'b')")
+        }
+
+        @Override
+        public Traversal<Vertex, Object> get_g_V_valueMap_selectXall_aX() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.valueMap().select(Pop.all, 'a')")
+        }
+
+        @Override
+        public Traversal<Vertex, Map<String, Object>> get_g_V_valueMap_selectXall_a_bX() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.valueMap().select(Pop.all, 'a', 'b')")
         }
 
         // when labels don't exist

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d9c462ee/gremlin-test/features/map/Select.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/map/Select.feature b/gremlin-test/features/map/Select.feature
index 35d9322..023b2a4 100644
--- a/gremlin-test/features/map/Select.feature
+++ b/gremlin-test/features/map/Select.feature
@@ -514,4 +514,148 @@ Feature: Step - select()
     Then the result should be unordered
       | result |
       | d[2].l |
-      | d[2].l |
\ No newline at end of file
+      | d[2].l |
+
+  Scenario: g_V_selectXaX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().select("a")
+      """
+    When iterated to list
+    Then the result should be empty
+
+  Scenario: g_V_selectXa_bX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().select("a","b")
+      """
+    When iterated to list
+    Then the result should be empty
+
+  Scenario: g_V_valueMap_selectXaX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().valueMap().select("a")
+      """
+    When iterated to list
+    Then the result should be empty
+
+  Scenario: g_V_valueMap_selectXa_bX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().valueMap().select("a","b")
+      """
+    When iterated to list
+    Then the result should be empty
+
+  Scenario: g_V_selectXfirst_aX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().select(Pop.first, "a")
+      """
+    When iterated to list
+    Then the result should be empty
+
+  Scenario: g_V_selectXfirst_a_bX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().select(Pop.first, "a","b")
+      """
+    When iterated to list
+    Then the result should be empty
+
+  Scenario: g_V_valueMap_selectXfirst_aX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().valueMap().select(Pop.first, "a")
+      """
+    When iterated to list
+    Then the result should be empty
+
+  Scenario: g_V_valueMap_selectXfirst_a_bX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().valueMap().select(Pop.first, "a","b")
+      """
+    When iterated to list
+    Then the result should be empty
+
+  Scenario: g_V_selectXlast_aX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().select(Pop.last, "a")
+      """
+    When iterated to list
+    Then the result should be empty
+
+  Scenario: g_V_selectXlast_a_bX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().select(Pop.last, "a","b")
+      """
+    When iterated to list
+    Then the result should be empty
+
+  Scenario: g_V_valueMap_selectXlast_aX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().valueMap().select(Pop.last, "a")
+      """
+    When iterated to list
+    Then the result should be empty
+
+  Scenario: g_V_valueMap_selectXlast_a_bX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().valueMap().select(Pop.last, "a","b")
+      """
+    When iterated to list
+    Then the result should be empty
+
+  Scenario: g_V_selectXall_aX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().select(Pop.all, "a")
+      """
+    When iterated to list
+    Then the result should be empty
+
+  Scenario: g_V_selectXall_a_bX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().select(Pop.all, "a","b")
+      """
+    When iterated to list
+    Then the result should be empty
+
+  Scenario: g_V_valueMap_selectXall_aX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().valueMap().select(Pop.all, "a")
+      """
+    When iterated to list
+    Then the result should be empty
+
+  Scenario: g_V_valueMap_selectXall_a_bX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().valueMap().select(Pop.all, "a","b")
+      """
+    When iterated to list
+    Then the result should be empty
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d9c462ee/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 c0486d0..ddbd036 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
@@ -24,7 +24,6 @@ import org.apache.tinkerpop.gremlin.process.GremlinProcessRunner;
 import org.apache.tinkerpop.gremlin.process.traversal.Order;
 import org.apache.tinkerpop.gremlin.process.traversal.Pop;
 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.__;
 import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
@@ -109,13 +108,37 @@ public abstract class SelectTest extends AbstractGremlinProcessTest {
 
     // TINKERPOP-619: select should not throw
 
-    public abstract Traversal<Vertex, Object> get_g_V_selectXaX(final Pop pop);
+    public abstract Traversal<Vertex, Object> get_g_V_selectXaX();
 
-    public abstract Traversal<Vertex, Map<String, Object>> get_g_V_selectXa_bX(final Pop pop);
+    public abstract Traversal<Vertex, Map<String, Object>> get_g_V_selectXa_bX();
 
-    public abstract Traversal<Vertex, Object> get_g_V_valueMap_selectXpop_aX(final Pop pop);
+    public abstract Traversal<Vertex, Object> get_g_V_valueMap_selectXaX();
 
-    public abstract Traversal<Vertex, Map<String, Object>> get_g_V_valueMap_selectXpop_a_bX(final Pop pop);
+    public abstract Traversal<Vertex, Map<String, Object>> get_g_V_valueMap_selectXa_bX();
+
+    public abstract Traversal<Vertex, Object> get_g_V_selectXfirst_aX();
+
+    public abstract Traversal<Vertex, Map<String, Object>> get_g_V_selectXfirst_a_bX();
+
+    public abstract Traversal<Vertex, Object> get_g_V_valueMap_selectXfirst_aX();
+
+    public abstract Traversal<Vertex, Map<String, Object>> get_g_V_valueMap_selectXfirst_a_bX();
+
+    public abstract Traversal<Vertex, Object> get_g_V_selectXlast_aX();
+
+    public abstract Traversal<Vertex, Map<String, Object>> get_g_V_selectXlast_a_bX();
+
+    public abstract Traversal<Vertex, Object> get_g_V_valueMap_selectXlast_aX();
+
+    public abstract Traversal<Vertex, Map<String, Object>> get_g_V_valueMap_selectXlast_a_bX();
+
+    public abstract Traversal<Vertex, Object> get_g_V_selectXall_aX();
+
+    public abstract Traversal<Vertex, Map<String, Object>> get_g_V_selectXall_a_bX();
+
+    public abstract Traversal<Vertex, Object> get_g_V_valueMap_selectXall_aX();
+
+    public abstract Traversal<Vertex, Map<String, Object>> get_g_V_valueMap_selectXall_a_bX();
 
     public abstract Traversal<Vertex, Vertex> get_g_VX1X_asXaX_repeatXout_asXaXX_timesX2X_selectXfirst_aX(final Object v1Id);
 
@@ -502,41 +525,129 @@ public abstract class SelectTest extends AbstractGremlinProcessTest {
     @Test
     @LoadGraphWith(MODERN)
     public void g_V_selectXaX() {
-        POPS.forEach(pop -> {
-            final Traversal<Vertex, Object> traversal = get_g_V_selectXaX(pop);
-            printTraversalForm(traversal);
-            assertEquals(Collections.emptyList(), traversal.toList());
-        });
+        final Traversal<Vertex, Object> traversal = get_g_V_selectXaX();
+        printTraversalForm(traversal);
+        assertEquals(Collections.emptyList(), traversal.toList());
     }
 
     @Test
     @LoadGraphWith(MODERN)
     public void g_V_selectXa_bX() {
-        POPS.forEach(pop -> {
-            final Traversal<Vertex, Map<String, Object>> traversal = get_g_V_selectXa_bX(pop);
-            printTraversalForm(traversal);
-            assertEquals(Collections.emptyList(), traversal.toList());
-        });
+        final Traversal<Vertex, Map<String, Object>> traversal = get_g_V_selectXa_bX();
+        printTraversalForm(traversal);
+        assertEquals(Collections.emptyList(), traversal.toList());
+    }
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void g_V_valueMap_selectXaX() {
+        final Traversal<Vertex, Object> traversal = get_g_V_valueMap_selectXaX();
+        printTraversalForm(traversal);
+        assertEquals(Collections.emptyList(), traversal.toList());
+    }
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void g_V_valueMap_selectXa_bX() {
+        final Traversal<Vertex, Map<String, Object>> traversal = get_g_V_valueMap_selectXa_bX();
+        printTraversalForm(traversal);
+        assertEquals(Collections.emptyList(), traversal.toList());
+    }
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void g_V_selectXfirst_aX() {
+        final Traversal<Vertex, Object> traversal = get_g_V_selectXfirst_aX();
+        printTraversalForm(traversal);
+        assertEquals(Collections.emptyList(), traversal.toList());
+    }
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void g_V_selectXfirst_a_bX() {
+        final Traversal<Vertex, Map<String, Object>> traversal = get_g_V_selectXfirst_a_bX();
+        printTraversalForm(traversal);
+        assertEquals(Collections.emptyList(), traversal.toList());
+    }
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void g_V_valueMap_selectXfirst_aX() {
+        final Traversal<Vertex, Object> traversal = get_g_V_valueMap_selectXfirst_aX();
+        printTraversalForm(traversal);
+        assertEquals(Collections.emptyList(), traversal.toList());
+    }
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void g_V_valueMap_selectXfirst_a_bX() {
+        final Traversal<Vertex, Map<String, Object>> traversal = get_g_V_valueMap_selectXfirst_a_bX();
+        printTraversalForm(traversal);
+        assertEquals(Collections.emptyList(), traversal.toList());
+    }
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void g_V_selectXlast_aX() {
+        final Traversal<Vertex, Object> traversal = get_g_V_selectXlast_aX();
+        printTraversalForm(traversal);
+        assertEquals(Collections.emptyList(), traversal.toList());
+    }
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void g_V_selectXlast_a_bX() {
+        final Traversal<Vertex, Map<String, Object>> traversal = get_g_V_selectXlast_a_bX();
+        printTraversalForm(traversal);
+        assertEquals(Collections.emptyList(), traversal.toList());
+    }
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void g_V_valueMap_selectXlast_aX() {
+        final Traversal<Vertex, Object> traversal = get_g_V_valueMap_selectXlast_aX();
+        printTraversalForm(traversal);
+        assertEquals(Collections.emptyList(), traversal.toList());
+    }
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void g_V_valueMap_selectXlast_a_bX() {
+        final Traversal<Vertex, Map<String, Object>> traversal = get_g_V_valueMap_selectXlast_a_bX();
+        printTraversalForm(traversal);
+        assertEquals(Collections.emptyList(), traversal.toList());
+    }
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void g_V_selectXall_aX() {
+        final Traversal<Vertex, Object> traversal = get_g_V_selectXall_aX();
+        printTraversalForm(traversal);
+        assertEquals(Collections.emptyList(), traversal.toList());
+    }
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void g_V_selectXall_a_bX() {
+        final Traversal<Vertex, Map<String, Object>> traversal = get_g_V_selectXall_a_bX();
+        printTraversalForm(traversal);
+        assertEquals(Collections.emptyList(), traversal.toList());
     }
 
     @Test
     @LoadGraphWith(MODERN)
-    public void g_V_valueMap_selectXpop_aX() {
-        POPS.forEach(pop -> {
-            final Traversal<Vertex, Object> traversal = get_g_V_valueMap_selectXpop_aX(pop);
-            printTraversalForm(traversal);
-            assertEquals(Collections.emptyList(), traversal.toList());
-        });
+    public void g_V_valueMap_selectXall_aX() {
+        final Traversal<Vertex, Object> traversal = get_g_V_valueMap_selectXall_aX();
+        printTraversalForm(traversal);
+        assertEquals(Collections.emptyList(), traversal.toList());
     }
 
     @Test
     @LoadGraphWith(MODERN)
-    public void g_V_valueMap_selectXpop_a_bX() {
-        POPS.forEach(pop -> {
-            final Traversal<Vertex, Map<String, Object>> traversal = get_g_V_valueMap_selectXpop_a_bX(pop);
-            printTraversalForm(traversal);
-            assertEquals(Collections.emptyList(), traversal.toList());
-        });
+    public void g_V_valueMap_selectXall_a_bX() {
+        final Traversal<Vertex, Map<String, Object>> traversal = get_g_V_valueMap_selectXall_a_bX();
+        printTraversalForm(traversal);
+        assertEquals(Collections.emptyList(), traversal.toList());
     }
 
     // when labels don't exist
@@ -788,27 +899,83 @@ public abstract class SelectTest extends AbstractGremlinProcessTest {
         // TINKERPOP-619: select should not throw
 
         @Override
-        public Traversal<Vertex, Object> get_g_V_selectXaX(final Pop pop) {
-            final GraphTraversal<Vertex, Vertex> root = g.V();
-            return null == pop ? root.select("a") : root.select(pop, "a");
+        public Traversal<Vertex, Object> get_g_V_selectXaX() {
+            return g.V().select("a");
+        }
+
+        @Override
+        public Traversal<Vertex, Map<String, Object>> get_g_V_selectXa_bX() {
+            return g.V().select("a", "b");
+        }
+
+        @Override
+        public Traversal<Vertex, Object> get_g_V_valueMap_selectXaX() {
+            return g.V().valueMap().select("a");
+        }
+
+        @Override
+        public Traversal<Vertex, Map<String, Object>> get_g_V_valueMap_selectXa_bX() {
+            return g.V().valueMap().select("a", "b");
+        }
+
+        @Override
+        public Traversal<Vertex, Object> get_g_V_selectXfirst_aX() {
+            return g.V().select(Pop.first, "a");
+        }
+
+        @Override
+        public Traversal<Vertex, Map<String, Object>> get_g_V_selectXfirst_a_bX() {
+            return g.V().select(Pop.first, "a", "b");
+        }
+
+        @Override
+        public Traversal<Vertex, Object> get_g_V_valueMap_selectXfirst_aX() {
+            return g.V().valueMap().select(Pop.first, "a");
+        }
+
+        @Override
+        public Traversal<Vertex, Map<String, Object>> get_g_V_valueMap_selectXfirst_a_bX() {
+            return g.V().valueMap().select(Pop.first, "a", "b");
+        }
+
+        @Override
+        public Traversal<Vertex, Object> get_g_V_selectXlast_aX() {
+            return g.V().select(Pop.last, "a");
+        }
+
+        @Override
+        public Traversal<Vertex, Map<String, Object>> get_g_V_selectXlast_a_bX() {
+            return g.V().select(Pop.last, "a", "b");
+        }
+
+        @Override
+        public Traversal<Vertex, Object> get_g_V_valueMap_selectXlast_aX() {
+            return g.V().valueMap().select(Pop.last, "a");
+        }
+
+        @Override
+        public Traversal<Vertex, Map<String, Object>> get_g_V_valueMap_selectXlast_a_bX() {
+            return g.V().valueMap().select(Pop.last, "a", "b");
+        }
+
+        @Override
+        public Traversal<Vertex, Object> get_g_V_selectXall_aX() {
+            return g.V().select(Pop.all, "a");
         }
 
         @Override
-        public Traversal<Vertex, Map<String, Object>> get_g_V_selectXa_bX(final Pop pop) {
-            final GraphTraversal<Vertex, Vertex> root = g.V();
-            return null == pop ? root.select("a", "b") : root.select(pop, "a", "b");
+        public Traversal<Vertex, Map<String, Object>> get_g_V_selectXall_a_bX() {
+            return g.V().select(Pop.all, "a", "b");
         }
 
         @Override
-        public Traversal<Vertex, Object> get_g_V_valueMap_selectXpop_aX(final Pop pop) {
-            final GraphTraversal<Vertex, Map<String, Object>> root = g.V().valueMap();
-            return null == pop ? root.select("a") : root.select(pop, "a");
+        public Traversal<Vertex, Object> get_g_V_valueMap_selectXall_aX() {
+            return g.V().valueMap().select(Pop.all, "a");
         }
 
         @Override
-        public Traversal<Vertex, Map<String, Object>> get_g_V_valueMap_selectXpop_a_bX(final Pop pop) {
-            final GraphTraversal<Vertex, Map<String, Object>> root = g.V().valueMap();
-            return null == pop ? root.select("a", "b") : root.select(pop, "a", "b");
+        public Traversal<Vertex, Map<String, Object>> get_g_V_valueMap_selectXall_a_bX() {
+            return g.V().valueMap().select(Pop.all, "a", "b");
         }
 
         // when labels don't exist

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d9c462ee/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/process/FeatureCoverageTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/process/FeatureCoverageTest.java b/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/process/FeatureCoverageTest.java
index 670cae9..5c2d8ed 100644
--- a/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/process/FeatureCoverageTest.java
+++ b/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/process/FeatureCoverageTest.java
@@ -105,11 +105,6 @@ public class FeatureCoverageTest {
             // GLV suite doesn't support property identifiers and related assertions
             "g_V_hasXageX_properties_hasXid_nameIdX_value",
             "g_V_hasXageX_properties_hasXid_nameIdAsStringX_value",
-            // Pop tests not organized right for GLVs
-            "g_V_valueMap_selectXpop_aX",
-            "g_V_selectXa_bX",
-            "g_V_valueMap_selectXpop_a_bX",
-            "g_V_selectXaX",
             // assertion doesn't seem to want to work right for embedded lists
             "g_V_asXa_bX_out_asXcX_path_selectXkeysX",
             // ugh - BigInteger?


[18/22] tinkerpop git commit: TINKERPOP-1968 Embedded list tests only pass for js at this point

Posted by sp...@apache.org.
TINKERPOP-1968 Embedded list tests only pass for js at this point

Creating issues for .net and python.


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/c42b8b67
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/c42b8b67
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/c42b8b67

Branch: refs/heads/TINKERPOP-1968
Commit: c42b8b678ba4b09cb7c927d4051cb89ded2c9dd6
Parents: 1729732
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Mon May 21 06:57:36 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon May 21 13:14:24 2018 -0400

----------------------------------------------------------------------
 .../Gherkin/GherkinTestRunner.cs                  |  5 ++++-
 .../Gherkin/IgnoreException.cs                    |  6 +++++-
 .../src/main/jython/radish/feature_steps.py       |  2 +-
 gremlin-test/features/map/Select.feature          | 18 +++++++++++++++++-
 gremlin-test/features/sideEffect/Group.feature    |  1 -
 5 files changed, 27 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c42b8b67/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/GherkinTestRunner.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/GherkinTestRunner.cs b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/GherkinTestRunner.cs
index 6d38ccc..d5eac93 100644
--- a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/GherkinTestRunner.cs
+++ b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/GherkinTestRunner.cs
@@ -38,7 +38,10 @@ namespace Gremlin.Net.IntegrationTest.Gherkin
     public class GherkinTestRunner
     {
         private static readonly IDictionary<string, IgnoreReason> IgnoredScenarios =
-            new Dictionary<string, IgnoreReason>();
+            new Dictionary<string, IgnoreReason>
+            {
+                { "g_V_asXa_bX_out_asXcX_path_selectXkeysX", IgnoreReason.EmbeddedListAssertion }
+            };
         
         private static class Keywords
         {

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c42b8b67/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/IgnoreException.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/IgnoreException.cs b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/IgnoreException.cs
index 860c11d..368713d 100644
--- a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/IgnoreException.cs
+++ b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/IgnoreException.cs
@@ -40,6 +40,9 @@ namespace Gremlin.Net.IntegrationTest.Gherkin
             string reasonSuffix = null;
             switch (reason)
             {
+                case IgnoreReason.EmbeddedListAssertion:
+                    reasonSuffix = "This test returns an embedded list in the result and the Gherkin processor does not parse that correctly";
+                    break;
                 case IgnoreReason.NoReason:
                     reasonSuffix = "";
                     break;
@@ -50,6 +53,7 @@ namespace Gremlin.Net.IntegrationTest.Gherkin
     
     public enum IgnoreReason
     {
-        NoReason
+        NoReason,
+        EmbeddedListAssertion
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c42b8b67/gremlin-python/src/main/jython/radish/feature_steps.py
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/jython/radish/feature_steps.py b/gremlin-python/src/main/jython/radish/feature_steps.py
index fab35fd..5067d1b 100644
--- a/gremlin-python/src/main/jython/radish/feature_steps.py
+++ b/gremlin-python/src/main/jython/radish/feature_steps.py
@@ -43,7 +43,7 @@ inV = __.inV
 project = __.project
 tail = __.tail
 
-ignores = []
+ignores = ["g.V().as(\"a\", \"b\").out().as(\"c\").path().select(Column.keys)"]
 
 
 @given("the {graph_name:w} graph")

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c42b8b67/gremlin-test/features/map/Select.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/map/Select.feature b/gremlin-test/features/map/Select.feature
index 023b2a4..dffa464 100644
--- a/gremlin-test/features/map/Select.feature
+++ b/gremlin-test/features/map/Select.feature
@@ -658,4 +658,20 @@ Feature: Step - select()
       g.V().valueMap().select(Pop.all, "a","b")
       """
     When iterated to list
-    Then the result should be empty
\ No newline at end of file
+    Then the result should be empty
+
+  Scenario: g_V_asXa_bX_out_asXcX_path_selectXkeysX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().as("a", "b").out().as("c").path().select(Column.keys)
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | l[l[a,b],l[c]] |
+      | l[l[a,b],l[c]] |
+      | l[l[a,b],l[c]] |
+      | l[l[a,b],l[c]] |
+      | l[l[a,b],l[c]] |
+      | l[l[a,b],l[c]] |
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c42b8b67/gremlin-test/features/sideEffect/Group.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/sideEffect/Group.feature b/gremlin-test/features/sideEffect/Group.feature
index 94d2191..cd2a5ce 100644
--- a/gremlin-test/features/sideEffect/Group.feature
+++ b/gremlin-test/features/sideEffect/Group.feature
@@ -161,7 +161,6 @@ Feature: Step - group()
       | ripple |
       | lop |
 
-  # TODO: can we change the traversal to allow for a better assertion
   Scenario: g_V_hasLabelXsongX_group_byXnameX_byXproperties_groupCount_byXlabelXX
     Given the grateful graph
     And the traversal of


[16/22] tinkerpop git commit: TINKERPOP-1968 Stop ignoring test that passes for python GLV

Posted by sp...@apache.org.
TINKERPOP-1968 Stop ignoring test that passes for python GLV


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/17297326
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/17297326
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/17297326

Branch: refs/heads/TINKERPOP-1968
Commit: 172973263ea34fc10935ecf77badef3691b03399
Parents: d9c462e
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Sat May 19 07:57:07 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon May 21 13:14:24 2018 -0400

----------------------------------------------------------------------
 gremlin-python/src/main/jython/radish/feature_steps.py | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/17297326/gremlin-python/src/main/jython/radish/feature_steps.py
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/jython/radish/feature_steps.py b/gremlin-python/src/main/jython/radish/feature_steps.py
index 80137b0..fab35fd 100644
--- a/gremlin-python/src/main/jython/radish/feature_steps.py
+++ b/gremlin-python/src/main/jython/radish/feature_steps.py
@@ -43,9 +43,7 @@ inV = __.inV
 project = __.project
 tail = __.tail
 
-ignores = [
-    "g.V(v1Id).out().inject(v2).values(\"name\")",  # bug in attachment won't connect v2
-           ]
+ignores = []
 
 
 @given("the {graph_name:w} graph")


[12/22] tinkerpop git commit: TINKERPOP-1968 Added edge ids to sink and grateful generator

Posted by sp...@apache.org.
TINKERPOP-1968 Added edge ids to sink and grateful generator

Edge ids should have always been statically defined - not sure how/why that was missed. Also added grateful dead dataset to TinkerFactory to make that easier to programmatically setup.


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/615d6ea7
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/615d6ea7
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/615d6ea7

Branch: refs/heads/TINKERPOP-1968
Commit: 615d6ea7126c23325cbe7ed78a58c9102dd6649e
Parents: f36eb4f
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri May 18 14:34:44 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon May 21 13:14:23 2018 -0400

----------------------------------------------------------------------
 CHANGELOG.asciidoc                              |   1 +
 data/tinkerpop-sink-typed.json                  |   6 +-
 data/tinkerpop-sink-v2d0-typed.json             |   6 +-
 data/tinkerpop-sink-v2d0.json                   |   6 +-
 data/tinkerpop-sink.json                        |   6 +-
 data/tinkerpop-sink.kryo                        | Bin 234 -> 240 bytes
 .../io/graphson/tinkerpop-sink-typed.json       |   6 +-
 .../io/graphson/tinkerpop-sink-v2d0-typed.json  |   6 +-
 .../io/graphson/tinkerpop-sink-v2d0.json        |   6 +-
 .../structure/io/graphson/tinkerpop-sink.json   |   6 +-
 .../structure/io/gryo/tinkerpop-sink.kryo       | Bin 234 -> 240 bytes
 .../tinkergraph/structure/TinkerFactory.java    |  82 ++++++++++++++++++-
 12 files changed, 104 insertions(+), 27 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/615d6ea7/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index 21fde2c..b23657b 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -25,6 +25,7 @@ image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/ima
 
 * Removed recursive handling of streaming results from Gremlin-Python driver to avoid max recursion depth errors.
 * Improved performance of `TraversalVertexProgram` and related infrastructure.
+* Added `createGratefulDead()`to `TinkerFactory` to help make it easier to try to instantiate that toy graph.
 * Fixed bug in `GroovyTranslator` that didn't properly handle empty `Map` objects.
 
 [[release-3-2-9]]

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/615d6ea7/data/tinkerpop-sink-typed.json
----------------------------------------------------------------------
diff --git a/data/tinkerpop-sink-typed.json b/data/tinkerpop-sink-typed.json
index 2e83384..9f16788 100644
--- a/data/tinkerpop-sink-typed.json
+++ b/data/tinkerpop-sink-typed.json
@@ -1,3 +1,3 @@
-{"@class":"java.util.HashMap","id":2000,"label":"message","inE":{"@class":"java.util.HashMap","link":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":5,"outV":2000}]]},"outE":{"@class":"java.util.HashMap","link":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":4,"inV":2001},{"@class":"java.util.HashMap","id":5,"inV":2000}]]},"properties":{"@class":"java.util.HashMap","name":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",2],"value":"a"}]]}}
-{"@class":"java.util.HashMap","id":2001,"label":"message","inE":{"@class":"java.util.HashMap","link":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":4,"outV":2000}]]},"properties":{"@class":"java.util.HashMap","name":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",3],"value":"b"}]]}}
-{"@class":"java.util.HashMap","id":1000,"label":"loops","inE":{"@class":"java.util.HashMap","self":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":1,"outV":1000}]]},"outE":{"@class":"java.util.HashMap","self":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":1,"inV":1000}]]},"properties":{"@class":"java.util.HashMap","name":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",0],"value":"loop"}]]}}
+{"@class":"java.util.HashMap","id":2000,"label":"message","inE":{"@class":"java.util.HashMap","link":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":2003,"outV":2000}]]},"outE":{"@class":"java.util.HashMap","link":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":2002,"inV":2001},{"@class":"java.util.HashMap","id":2003,"inV":2000}]]},"properties":{"@class":"java.util.HashMap","name":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",1],"value":"a"}]]}}
+{"@class":"java.util.HashMap","id":2001,"label":"message","inE":{"@class":"java.util.HashMap","link":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":2002,"outV":2000}]]},"properties":{"@class":"java.util.HashMap","name":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",2],"value":"b"}]]}}
+{"@class":"java.util.HashMap","id":1000,"label":"loops","inE":{"@class":"java.util.HashMap","self":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":1001,"outV":1000}]]},"outE":{"@class":"java.util.HashMap","self":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":1001,"inV":1000}]]},"properties":{"@class":"java.util.HashMap","name":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",0],"value":"loop"}]]}}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/615d6ea7/data/tinkerpop-sink-v2d0-typed.json
----------------------------------------------------------------------
diff --git a/data/tinkerpop-sink-v2d0-typed.json b/data/tinkerpop-sink-v2d0-typed.json
index 7a27853..906d74a 100644
--- a/data/tinkerpop-sink-v2d0-typed.json
+++ b/data/tinkerpop-sink-v2d0-typed.json
@@ -1,3 +1,3 @@
-{"id":{"@type":"g:Int32","@value":2000},"label":"message","inE":{"link":[{"id":{"@type":"g:Int32","@value":5},"outV":{"@type":"g:Int32","@value":2000}}]},"outE":{"link":[{"id":{"@type":"g:Int32","@value":4},"inV":{"@type":"g:Int32","@value":2001}},{"id":{"@type":"g:Int32","@value":5},"inV":{"@type":"g:Int32","@value":2000}}]},"properties":{"name":[{"id":{"@type":"g:Int64","@value":2},"value":"a"}]}}
-{"id":{"@type":"g:Int32","@value":2001},"label":"message","inE":{"link":[{"id":{"@type":"g:Int32","@value":4},"outV":{"@type":"g:Int32","@value":2000}}]},"properties":{"name":[{"id":{"@type":"g:Int64","@value":3},"value":"b"}]}}
-{"id":{"@type":"g:Int32","@value":1000},"label":"loops","inE":{"self":[{"id":{"@type":"g:Int32","@value":1},"outV":{"@type":"g:Int32","@value":1000}}]},"outE":{"self":[{"id":{"@type":"g:Int32","@value":1},"inV":{"@type":"g:Int32","@value":1000}}]},"properties":{"name":[{"id":{"@type":"g:Int64","@value":0},"value":"loop"}]}}
+{"id":{"@type":"g:Int32","@value":2000},"label":"message","inE":{"link":[{"id":{"@type":"g:Int32","@value":2003},"outV":{"@type":"g:Int32","@value":2000}}]},"outE":{"link":[{"id":{"@type":"g:Int32","@value":2002},"inV":{"@type":"g:Int32","@value":2001}},{"id":{"@type":"g:Int32","@value":2003},"inV":{"@type":"g:Int32","@value":2000}}]},"properties":{"name":[{"id":{"@type":"g:Int64","@value":1},"value":"a"}]}}
+{"id":{"@type":"g:Int32","@value":2001},"label":"message","inE":{"link":[{"id":{"@type":"g:Int32","@value":2002},"outV":{"@type":"g:Int32","@value":2000}}]},"properties":{"name":[{"id":{"@type":"g:Int64","@value":2},"value":"b"}]}}
+{"id":{"@type":"g:Int32","@value":1000},"label":"loops","inE":{"self":[{"id":{"@type":"g:Int32","@value":1001},"outV":{"@type":"g:Int32","@value":1000}}]},"outE":{"self":[{"id":{"@type":"g:Int32","@value":1001},"inV":{"@type":"g:Int32","@value":1000}}]},"properties":{"name":[{"id":{"@type":"g:Int64","@value":0},"value":"loop"}]}}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/615d6ea7/data/tinkerpop-sink-v2d0.json
----------------------------------------------------------------------
diff --git a/data/tinkerpop-sink-v2d0.json b/data/tinkerpop-sink-v2d0.json
index 420e089..4d4811f 100644
--- a/data/tinkerpop-sink-v2d0.json
+++ b/data/tinkerpop-sink-v2d0.json
@@ -1,3 +1,3 @@
-{"id":2000,"label":"message","inE":{"link":[{"id":5,"outV":2000}]},"outE":{"link":[{"id":4,"inV":2001},{"id":5,"inV":2000}]},"properties":{"name":[{"id":2,"value":"a"}]}}
-{"id":2001,"label":"message","inE":{"link":[{"id":4,"outV":2000}]},"properties":{"name":[{"id":3,"value":"b"}]}}
-{"id":1000,"label":"loops","inE":{"self":[{"id":1,"outV":1000}]},"outE":{"self":[{"id":1,"inV":1000}]},"properties":{"name":[{"id":0,"value":"loop"}]}}
+{"id":2000,"label":"message","inE":{"link":[{"id":2003,"outV":2000}]},"outE":{"link":[{"id":2002,"inV":2001},{"id":2003,"inV":2000}]},"properties":{"name":[{"id":1,"value":"a"}]}}
+{"id":2001,"label":"message","inE":{"link":[{"id":2002,"outV":2000}]},"properties":{"name":[{"id":2,"value":"b"}]}}
+{"id":1000,"label":"loops","inE":{"self":[{"id":1001,"outV":1000}]},"outE":{"self":[{"id":1001,"inV":1000}]},"properties":{"name":[{"id":0,"value":"loop"}]}}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/615d6ea7/data/tinkerpop-sink.json
----------------------------------------------------------------------
diff --git a/data/tinkerpop-sink.json b/data/tinkerpop-sink.json
index 420e089..4d4811f 100644
--- a/data/tinkerpop-sink.json
+++ b/data/tinkerpop-sink.json
@@ -1,3 +1,3 @@
-{"id":2000,"label":"message","inE":{"link":[{"id":5,"outV":2000}]},"outE":{"link":[{"id":4,"inV":2001},{"id":5,"inV":2000}]},"properties":{"name":[{"id":2,"value":"a"}]}}
-{"id":2001,"label":"message","inE":{"link":[{"id":4,"outV":2000}]},"properties":{"name":[{"id":3,"value":"b"}]}}
-{"id":1000,"label":"loops","inE":{"self":[{"id":1,"outV":1000}]},"outE":{"self":[{"id":1,"inV":1000}]},"properties":{"name":[{"id":0,"value":"loop"}]}}
+{"id":2000,"label":"message","inE":{"link":[{"id":2003,"outV":2000}]},"outE":{"link":[{"id":2002,"inV":2001},{"id":2003,"inV":2000}]},"properties":{"name":[{"id":1,"value":"a"}]}}
+{"id":2001,"label":"message","inE":{"link":[{"id":2002,"outV":2000}]},"properties":{"name":[{"id":2,"value":"b"}]}}
+{"id":1000,"label":"loops","inE":{"self":[{"id":1001,"outV":1000}]},"outE":{"self":[{"id":1001,"inV":1000}]},"properties":{"name":[{"id":0,"value":"loop"}]}}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/615d6ea7/data/tinkerpop-sink.kryo
----------------------------------------------------------------------
diff --git a/data/tinkerpop-sink.kryo b/data/tinkerpop-sink.kryo
index ae68674..8db5f4f 100644
Binary files a/data/tinkerpop-sink.kryo and b/data/tinkerpop-sink.kryo differ

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/615d6ea7/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/tinkerpop-sink-typed.json
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/tinkerpop-sink-typed.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/tinkerpop-sink-typed.json
index 2e83384..9f16788 100644
--- a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/tinkerpop-sink-typed.json
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/tinkerpop-sink-typed.json
@@ -1,3 +1,3 @@
-{"@class":"java.util.HashMap","id":2000,"label":"message","inE":{"@class":"java.util.HashMap","link":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":5,"outV":2000}]]},"outE":{"@class":"java.util.HashMap","link":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":4,"inV":2001},{"@class":"java.util.HashMap","id":5,"inV":2000}]]},"properties":{"@class":"java.util.HashMap","name":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",2],"value":"a"}]]}}
-{"@class":"java.util.HashMap","id":2001,"label":"message","inE":{"@class":"java.util.HashMap","link":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":4,"outV":2000}]]},"properties":{"@class":"java.util.HashMap","name":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",3],"value":"b"}]]}}
-{"@class":"java.util.HashMap","id":1000,"label":"loops","inE":{"@class":"java.util.HashMap","self":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":1,"outV":1000}]]},"outE":{"@class":"java.util.HashMap","self":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":1,"inV":1000}]]},"properties":{"@class":"java.util.HashMap","name":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",0],"value":"loop"}]]}}
+{"@class":"java.util.HashMap","id":2000,"label":"message","inE":{"@class":"java.util.HashMap","link":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":2003,"outV":2000}]]},"outE":{"@class":"java.util.HashMap","link":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":2002,"inV":2001},{"@class":"java.util.HashMap","id":2003,"inV":2000}]]},"properties":{"@class":"java.util.HashMap","name":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",1],"value":"a"}]]}}
+{"@class":"java.util.HashMap","id":2001,"label":"message","inE":{"@class":"java.util.HashMap","link":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":2002,"outV":2000}]]},"properties":{"@class":"java.util.HashMap","name":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",2],"value":"b"}]]}}
+{"@class":"java.util.HashMap","id":1000,"label":"loops","inE":{"@class":"java.util.HashMap","self":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":1001,"outV":1000}]]},"outE":{"@class":"java.util.HashMap","self":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":1001,"inV":1000}]]},"properties":{"@class":"java.util.HashMap","name":["java.util.ArrayList",[{"@class":"java.util.HashMap","id":["java.lang.Long",0],"value":"loop"}]]}}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/615d6ea7/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/tinkerpop-sink-v2d0-typed.json
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/tinkerpop-sink-v2d0-typed.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/tinkerpop-sink-v2d0-typed.json
index 7a27853..906d74a 100644
--- a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/tinkerpop-sink-v2d0-typed.json
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/tinkerpop-sink-v2d0-typed.json
@@ -1,3 +1,3 @@
-{"id":{"@type":"g:Int32","@value":2000},"label":"message","inE":{"link":[{"id":{"@type":"g:Int32","@value":5},"outV":{"@type":"g:Int32","@value":2000}}]},"outE":{"link":[{"id":{"@type":"g:Int32","@value":4},"inV":{"@type":"g:Int32","@value":2001}},{"id":{"@type":"g:Int32","@value":5},"inV":{"@type":"g:Int32","@value":2000}}]},"properties":{"name":[{"id":{"@type":"g:Int64","@value":2},"value":"a"}]}}
-{"id":{"@type":"g:Int32","@value":2001},"label":"message","inE":{"link":[{"id":{"@type":"g:Int32","@value":4},"outV":{"@type":"g:Int32","@value":2000}}]},"properties":{"name":[{"id":{"@type":"g:Int64","@value":3},"value":"b"}]}}
-{"id":{"@type":"g:Int32","@value":1000},"label":"loops","inE":{"self":[{"id":{"@type":"g:Int32","@value":1},"outV":{"@type":"g:Int32","@value":1000}}]},"outE":{"self":[{"id":{"@type":"g:Int32","@value":1},"inV":{"@type":"g:Int32","@value":1000}}]},"properties":{"name":[{"id":{"@type":"g:Int64","@value":0},"value":"loop"}]}}
+{"id":{"@type":"g:Int32","@value":2000},"label":"message","inE":{"link":[{"id":{"@type":"g:Int32","@value":2003},"outV":{"@type":"g:Int32","@value":2000}}]},"outE":{"link":[{"id":{"@type":"g:Int32","@value":2002},"inV":{"@type":"g:Int32","@value":2001}},{"id":{"@type":"g:Int32","@value":2003},"inV":{"@type":"g:Int32","@value":2000}}]},"properties":{"name":[{"id":{"@type":"g:Int64","@value":1},"value":"a"}]}}
+{"id":{"@type":"g:Int32","@value":2001},"label":"message","inE":{"link":[{"id":{"@type":"g:Int32","@value":2002},"outV":{"@type":"g:Int32","@value":2000}}]},"properties":{"name":[{"id":{"@type":"g:Int64","@value":2},"value":"b"}]}}
+{"id":{"@type":"g:Int32","@value":1000},"label":"loops","inE":{"self":[{"id":{"@type":"g:Int32","@value":1001},"outV":{"@type":"g:Int32","@value":1000}}]},"outE":{"self":[{"id":{"@type":"g:Int32","@value":1001},"inV":{"@type":"g:Int32","@value":1000}}]},"properties":{"name":[{"id":{"@type":"g:Int64","@value":0},"value":"loop"}]}}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/615d6ea7/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/tinkerpop-sink-v2d0.json
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/tinkerpop-sink-v2d0.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/tinkerpop-sink-v2d0.json
index 420e089..4d4811f 100644
--- a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/tinkerpop-sink-v2d0.json
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/tinkerpop-sink-v2d0.json
@@ -1,3 +1,3 @@
-{"id":2000,"label":"message","inE":{"link":[{"id":5,"outV":2000}]},"outE":{"link":[{"id":4,"inV":2001},{"id":5,"inV":2000}]},"properties":{"name":[{"id":2,"value":"a"}]}}
-{"id":2001,"label":"message","inE":{"link":[{"id":4,"outV":2000}]},"properties":{"name":[{"id":3,"value":"b"}]}}
-{"id":1000,"label":"loops","inE":{"self":[{"id":1,"outV":1000}]},"outE":{"self":[{"id":1,"inV":1000}]},"properties":{"name":[{"id":0,"value":"loop"}]}}
+{"id":2000,"label":"message","inE":{"link":[{"id":2003,"outV":2000}]},"outE":{"link":[{"id":2002,"inV":2001},{"id":2003,"inV":2000}]},"properties":{"name":[{"id":1,"value":"a"}]}}
+{"id":2001,"label":"message","inE":{"link":[{"id":2002,"outV":2000}]},"properties":{"name":[{"id":2,"value":"b"}]}}
+{"id":1000,"label":"loops","inE":{"self":[{"id":1001,"outV":1000}]},"outE":{"self":[{"id":1001,"inV":1000}]},"properties":{"name":[{"id":0,"value":"loop"}]}}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/615d6ea7/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/tinkerpop-sink.json
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/tinkerpop-sink.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/tinkerpop-sink.json
index 420e089..4d4811f 100644
--- a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/tinkerpop-sink.json
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/tinkerpop-sink.json
@@ -1,3 +1,3 @@
-{"id":2000,"label":"message","inE":{"link":[{"id":5,"outV":2000}]},"outE":{"link":[{"id":4,"inV":2001},{"id":5,"inV":2000}]},"properties":{"name":[{"id":2,"value":"a"}]}}
-{"id":2001,"label":"message","inE":{"link":[{"id":4,"outV":2000}]},"properties":{"name":[{"id":3,"value":"b"}]}}
-{"id":1000,"label":"loops","inE":{"self":[{"id":1,"outV":1000}]},"outE":{"self":[{"id":1,"inV":1000}]},"properties":{"name":[{"id":0,"value":"loop"}]}}
+{"id":2000,"label":"message","inE":{"link":[{"id":2003,"outV":2000}]},"outE":{"link":[{"id":2002,"inV":2001},{"id":2003,"inV":2000}]},"properties":{"name":[{"id":1,"value":"a"}]}}
+{"id":2001,"label":"message","inE":{"link":[{"id":2002,"outV":2000}]},"properties":{"name":[{"id":2,"value":"b"}]}}
+{"id":1000,"label":"loops","inE":{"self":[{"id":1001,"outV":1000}]},"outE":{"self":[{"id":1001,"inV":1000}]},"properties":{"name":[{"id":0,"value":"loop"}]}}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/615d6ea7/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/tinkerpop-sink.kryo
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/tinkerpop-sink.kryo b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/tinkerpop-sink.kryo
index ae68674..8db5f4f 100644
Binary files a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/tinkerpop-sink.kryo and b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/tinkerpop-sink.kryo differ

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/615d6ea7/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerFactory.java
----------------------------------------------------------------------
diff --git a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerFactory.java b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerFactory.java
index ef1ee7f..3a47f17 100644
--- a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerFactory.java
+++ b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerFactory.java
@@ -24,8 +24,18 @@ import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSo
 import org.apache.tinkerpop.gremlin.structure.T;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.VertexProperty;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoIo;
+
+import java.io.File;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import static org.apache.tinkerpop.gremlin.structure.io.IoCore.gryo;
 
 /**
+ * Helps create a variety of different toy graphs for testing and learning purposes.
+ *
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  * @author Stephen Mallette (http://stephen.genoprime.com)
  */
@@ -33,6 +43,9 @@ public final class TinkerFactory {
 
     private TinkerFactory() {}
 
+    /**
+     * Create the "classic" graph which was the original toy graph from TinkerPop 2.x.
+     */
     public static TinkerGraph createClassic() {
         final Configuration conf = new BaseConfiguration();
         conf.setProperty(TinkerGraph.GREMLIN_TINKERGRAPH_VERTEX_ID_MANAGER, TinkerGraph.DefaultIdManager.INTEGER.name());
@@ -43,6 +56,9 @@ public final class TinkerFactory {
         return g;
     }
 
+    /**
+     * Generate the graph in {@link #createClassic()} into an existing graph.
+     */
     public static void generateClassic(final TinkerGraph g) {
         final Vertex marko = g.addVertex(T.id, 1, "name", "marko", "age", 29);
         final Vertex vadas = g.addVertex(T.id, 2, "name", "vadas", "age", 27);
@@ -58,12 +74,19 @@ public final class TinkerFactory {
         peter.addEdge("created", lop, T.id, 12, "weight", 0.2f);
     }
 
+    /**
+     * Create the "modern" graph which has the same structure as the "classic" graph from TinkerPop 2.x but includes
+     * 3.x features like vertex labels.
+     */
     public static TinkerGraph createModern() {
         final TinkerGraph g = getTinkerGraphWithNumberManager();
         generateModern(g);
         return g;
     }
 
+    /**
+     * Generate the graph in {@link #createModern()} into an existing graph.
+     */
     public static void generateModern(final TinkerGraph g) {
         final Vertex marko = g.addVertex(T.id, 1, T.label, "person", "name", "marko", "age", 29);
         final Vertex vadas = g.addVertex(T.id, 2, T.label, "person", "name", "vadas", "age", 27);
@@ -79,6 +102,10 @@ public final class TinkerFactory {
         peter.addEdge("created", lop, T.id, 12, "weight", 0.2d);
     }
 
+    /**
+     * Create the "the crew" graph which is a TinkerPop 3.x toy graph showcasing many 3.x features like meta-properties,
+     * multi-properties and graph variables.
+     */
     public static TinkerGraph createTheCrew() {
         final Configuration conf = getNumberIdManagerConfiguration();
         conf.setProperty(TinkerGraph.GREMLIN_TINKERGRAPH_DEFAULT_VERTEX_PROPERTY_CARDINALITY, VertexProperty.Cardinality.list.name());
@@ -87,6 +114,9 @@ public final class TinkerFactory {
         return g;
     }
 
+    /**
+     * Generate the graph in {@link #createTheCrew()} into an existing graph.
+     */
     public static void generateTheCrew(final TinkerGraph g) {
         final Vertex marko = g.addVertex(T.id, 1, T.label, "person", "name", "marko");
         final Vertex stephen = g.addVertex(T.id, 7, T.label, "person", "name", "stephen");
@@ -137,21 +167,67 @@ public final class TinkerFactory {
         g.variables().set("comment", "this graph was created to provide examples and test coverage for tinkerpop3 api advances");
     }
 
+    /**
+     * Creates the "kitchen sink" graph which is a collection of structures (e.g. self-loops) that aren't represented
+     * in other graphs and are useful for various testing scenarios.
+     */
     public static TinkerGraph createKitchenSink() {
         final TinkerGraph g = getTinkerGraphWithNumberManager();
         generateKitchenSink(g);
         return g;
     }
 
+    /**
+     * Generate the graph in {@link #createKitchenSink()} into an existing graph.
+     */
     public static void generateKitchenSink(final TinkerGraph graph) {
         final GraphTraversalSource g = graph.traversal();
         g.addV("loops").property(T.id, 1000).property("name", "loop").as("me").
-          addE("self").to("me").
+          addE("self").to("me").property(T.id, 1001).
           iterate();
         g.addV("message").property(T.id, 2000).property("name", "a").as("a").
           addV("message").property(T.id, 2001).property("name", "b").as("b").
-          addE("link").from("a").to("b").
-          addE("link").from("a").to("a").iterate();
+          addE("link").from("a").to("b").property(T.id, 2002).
+          addE("link").from("a").to("a").property(T.id, 2003).iterate();
+    }
+
+    /**
+     * Creates the "grateful dead" graph which is a larger graph than most of the toy graphs but has real-world
+     * structure and application and is therefore useful for demonstrating more complex traversals. Unlike the
+     * other graphs, this creation process relies on a local data files for creation. Specifically, it requires
+     * {@code grateful-dead.kryo} to be present. It will check the following common directories in the listed order
+     * to try to load this graph: {@code ./}, {@code data/}, {@code ../data/} as these are the common places to find
+     * this file from normal TinkerPop packaging. If the file cannot be found in those directories an
+     * {@code IllegalStateException}.
+     */
+    public static TinkerGraph createGratefulDead() {
+        final TinkerGraph g = getTinkerGraphWithNumberManager();
+        generateGratefulDead(g);
+        return g;
+    }
+
+    /**
+     * Generate the graph in {@link #createGratefulDead()} into an existing graph.
+     */
+    public static void generateGratefulDead(final TinkerGraph graph) {
+        final String fileName = "grateful-dead.kryo";
+        final List<String> files = Arrays.asList(fileName,
+                "data/" + fileName,
+                ".." + File.separator + "data" + File.separator + fileName);
+
+        for (String fn : files) {
+            final File f = new File(fn);
+            if (f.exists()) {
+                try {
+                    graph.io(gryo()).readGraph(fn);
+                } catch (Exception ex) {
+                    throw new IllegalStateException(ex);
+                }
+            }
+        }
+
+        if (!graph.vertices().hasNext())
+            throw new IllegalStateException("grateful-dead.kryo cannot be found");
     }
 
     private static TinkerGraph getTinkerGraphWithNumberManager() {


[09/22] tinkerpop git commit: TINKERPOP-1595 Fixed up changelog as this moved to 3.2.10

Posted by sp...@apache.org.
TINKERPOP-1595 Fixed up changelog as this moved to 3.2.10


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/f36eb4f3
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/f36eb4f3
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/f36eb4f3

Branch: refs/heads/TINKERPOP-1968
Commit: f36eb4f34caf6be0298d47f1d6c34c072402ecf3
Parents: c76e3af
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Apr 27 10:33:58 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon May 21 12:33:23 2018 -0400

----------------------------------------------------------------------
 CHANGELOG.asciidoc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f36eb4f3/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index 155809e..21fde2c 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -24,6 +24,7 @@ image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/ima
 === TinkerPop 3.2.10 (Release Date: NOT OFFICIALLY RELEASED YET)
 
 * Removed recursive handling of streaming results from Gremlin-Python driver to avoid max recursion depth errors.
+* Improved performance of `TraversalVertexProgram` and related infrastructure.
 * Fixed bug in `GroovyTranslator` that didn't properly handle empty `Map` objects.
 
 [[release-3-2-9]]
@@ -32,7 +33,6 @@ image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/ima
 * Fixed bug where path history was not being preserved for keys in mutations.
 * Bumped to httpclient 4.5.5.
 * Bumped to Groovy 2.4.15 - fixes bug with `Lambda` construction.
-* Improved performance of `TraversalVertexProgram` and related infrastructure.
 * Improved performance of GraphSON deserialization of `Bytecode`.
 * Improved performance of traversal construction.
 


[15/22] tinkerpop git commit: TINKERPOP-1968 Minor change to loading Grateful from TinkerFactory

Posted by sp...@apache.org.
TINKERPOP-1968 Minor change to loading Grateful from TinkerFactory

Decided to load it from a resources in tinkergraph-gremlin. Seemed to better than relying on the local file system.


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/59c0ad0a
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/59c0ad0a
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/59c0ad0a

Branch: refs/heads/TINKERPOP-1968
Commit: 59c0ad0a51dba1050ca1610c92d6661a097b4e2d
Parents: fe1ec47
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri May 18 18:39:39 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon May 21 13:14:23 2018 -0400

----------------------------------------------------------------------
 .../the-gremlin-console/index.asciidoc          |   5 ++-
 .../upgrade/release-3.2.x-incubating.asciidoc   |   8 +++++
 tinkergraph-gremlin/pom.xml                     |  19 +++++++++++
 .../tinkergraph/structure/TinkerFactory.java    |  32 ++++---------------
 .../tinkergraph/structure/grateful-dead.kryo    | Bin 0 -> 332226 bytes
 5 files changed, 36 insertions(+), 28 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/59c0ad0a/docs/src/tutorials/the-gremlin-console/index.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/tutorials/the-gremlin-console/index.asciidoc b/docs/src/tutorials/the-gremlin-console/index.asciidoc
index da8bac3..cc090d9 100644
--- a/docs/src/tutorials/the-gremlin-console/index.asciidoc
+++ b/docs/src/tutorials/the-gremlin-console/index.asciidoc
@@ -117,9 +117,8 @@ However, if you find that a larger graph might be helpful, there is another opti
 
 [gremlin-groovy]
 ----
-graph = TinkerGraph.open()
-graph.io(gryo()).readGraph('data/grateful-dead.kryo')
-graph
+graph = TinkerFactory.createGratefulDead()
+g = graph.traversal()
 ----
 
 The Grateful Dead graph ships with the Gremlin Console and the data can be found in several formats (along with the

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/59c0ad0a/docs/src/upgrade/release-3.2.x-incubating.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/upgrade/release-3.2.x-incubating.asciidoc b/docs/src/upgrade/release-3.2.x-incubating.asciidoc
index 112ce22..ccdf51a 100644
--- a/docs/src/upgrade/release-3.2.x-incubating.asciidoc
+++ b/docs/src/upgrade/release-3.2.x-incubating.asciidoc
@@ -27,6 +27,14 @@ image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/ima
 
 Please see the link:https://github.com/apache/tinkerpop/blob/3.2.10/CHANGELOG.asciidoc#release-3-2-10[changelog] for a complete list of all the modifications that are part of this release.
 
+=== Upgrading for Users
+
+==== TinkerFactory.createGratefulDead()
+
+The Grateful Dead dataset has been with TinkerPop since the early days of 1.x. It has always been available as a
+packaged dataset that needed to be loaded through the various IO options available, while other toy graphs had the
+benefit of `TinkerFactory` to help get them bootstrapped. For 3.2.10, Grateful Dead is now more conveniently loaded
+via that same method as the other toy graphs with `TinkerFactory.createGratefulDead()`.
 
 == TinkerPop 3.2.9
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/59c0ad0a/tinkergraph-gremlin/pom.xml
----------------------------------------------------------------------
diff --git a/tinkergraph-gremlin/pom.xml b/tinkergraph-gremlin/pom.xml
index 1ff0aa0..1432ac5 100644
--- a/tinkergraph-gremlin/pom.xml
+++ b/tinkergraph-gremlin/pom.xml
@@ -127,6 +127,25 @@ limitations under the License.
                                 </configuration>
                             </execution>
                             <execution>
+                                <id>copy-gratefuldead-to-tinkergraph-resources</id>
+                                <phase>prepare-package</phase>
+                                <goals>
+                                    <goal>copy-resources</goal>
+                                </goals>
+                                <configuration>
+                                    <outputDirectory>src/main/resources/org/apache/tinkerpop/gremlin/tinkergraph/structure</outputDirectory>
+                                    <resources>
+                                        <resource>
+                                            <directory>${io.tmp.dir}</directory>
+                                            <filtering>false</filtering>
+                                            <includes>
+                                                <exclude>grateful-dead.kryo</exclude>
+                                            </includes>
+                                        </resource>
+                                    </resources>
+                                </configuration>
+                            </execution>
+                            <execution>
                                 <id>copy-gio-from-tmp-to-resources</id>
                                 <phase>prepare-package</phase>
                                 <goals>

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/59c0ad0a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerFactory.java
----------------------------------------------------------------------
diff --git a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerFactory.java b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerFactory.java
index 3a47f17..6c0f1b2 100644
--- a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerFactory.java
+++ b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerFactory.java
@@ -24,11 +24,10 @@ import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSo
 import org.apache.tinkerpop.gremlin.structure.T;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.VertexProperty;
-import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoIo;
 
 import java.io.File;
+import java.io.InputStream;
 import java.util.Arrays;
-import java.util.Collections;
 import java.util.List;
 
 import static org.apache.tinkerpop.gremlin.structure.io.IoCore.gryo;
@@ -193,12 +192,7 @@ public final class TinkerFactory {
 
     /**
      * Creates the "grateful dead" graph which is a larger graph than most of the toy graphs but has real-world
-     * structure and application and is therefore useful for demonstrating more complex traversals. Unlike the
-     * other graphs, this creation process relies on a local data files for creation. Specifically, it requires
-     * {@code grateful-dead.kryo} to be present. It will check the following common directories in the listed order
-     * to try to load this graph: {@code ./}, {@code data/}, {@code ../data/} as these are the common places to find
-     * this file from normal TinkerPop packaging. If the file cannot be found in those directories an
-     * {@code IllegalStateException}.
+     * structure and application and is therefore useful for demonstrating more complex traversals.
      */
     public static TinkerGraph createGratefulDead() {
         final TinkerGraph g = getTinkerGraphWithNumberManager();
@@ -210,24 +204,12 @@ public final class TinkerFactory {
      * Generate the graph in {@link #createGratefulDead()} into an existing graph.
      */
     public static void generateGratefulDead(final TinkerGraph graph) {
-        final String fileName = "grateful-dead.kryo";
-        final List<String> files = Arrays.asList(fileName,
-                "data/" + fileName,
-                ".." + File.separator + "data" + File.separator + fileName);
-
-        for (String fn : files) {
-            final File f = new File(fn);
-            if (f.exists()) {
-                try {
-                    graph.io(gryo()).readGraph(fn);
-                } catch (Exception ex) {
-                    throw new IllegalStateException(ex);
-                }
-            }
+        final InputStream stream = TinkerFactory.class.getResourceAsStream("grateful-dead.kryo");
+        try {
+            graph.io(gryo()).reader().create().readGraph(stream, graph);
+        } catch (Exception ex) {
+            throw new IllegalStateException(ex);
         }
-
-        if (!graph.vertices().hasNext())
-            throw new IllegalStateException("grateful-dead.kryo cannot be found");
     }
 
     private static TinkerGraph getTinkerGraphWithNumberManager() {

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/59c0ad0a/tinkergraph-gremlin/src/main/resources/org/apache/tinkerpop/gremlin/tinkergraph/structure/grateful-dead.kryo
----------------------------------------------------------------------
diff --git a/tinkergraph-gremlin/src/main/resources/org/apache/tinkerpop/gremlin/tinkergraph/structure/grateful-dead.kryo b/tinkergraph-gremlin/src/main/resources/org/apache/tinkerpop/gremlin/tinkergraph/structure/grateful-dead.kryo
new file mode 100644
index 0000000..57fa587
Binary files /dev/null and b/tinkergraph-gremlin/src/main/resources/org/apache/tinkerpop/gremlin/tinkergraph/structure/grateful-dead.kryo differ


[02/22] tinkerpop git commit: TINKERPOP-1595 Cleaned up exception handling for giraph

Posted by sp...@apache.org.
TINKERPOP-1595 Cleaned up exception handling for giraph

Some really specific exception handling of deserialization errors in Giraph were causing tests to hang. Corrected those problems and commented heavily.


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/c76e3af9
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/c76e3af9
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/c76e3af9

Branch: refs/heads/TINKERPOP-1968
Commit: c76e3af951ceeedf90459de7e5506220d276c4dd
Parents: d4893b8
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Apr 27 10:31:15 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon May 21 12:32:57 2018 -0400

----------------------------------------------------------------------
 .../giraph/process/computer/GiraphGraphComputer.java |  9 ++++++++-
 .../process/computer/util/VertexProgramHelper.java   | 15 +++++++++++++--
 2 files changed, 21 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c76e3af9/giraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/giraph/process/computer/GiraphGraphComputer.java
----------------------------------------------------------------------
diff --git a/giraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/giraph/process/computer/GiraphGraphComputer.java b/giraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/giraph/process/computer/GiraphGraphComputer.java
index b06b40a..6cd85de 100644
--- a/giraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/giraph/process/computer/GiraphGraphComputer.java
+++ b/giraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/giraph/process/computer/GiraphGraphComputer.java
@@ -22,6 +22,7 @@ import org.apache.commons.configuration.BaseConfiguration;
 import org.apache.commons.configuration.Configuration;
 import org.apache.commons.configuration.FileConfiguration;
 import org.apache.commons.configuration.PropertiesConfiguration;
+import org.apache.commons.lang.exception.ExceptionUtils;
 import org.apache.giraph.conf.GiraphConfiguration;
 import org.apache.giraph.conf.GiraphConstants;
 import org.apache.giraph.job.GiraphJob;
@@ -166,7 +167,13 @@ public final class GiraphGraphComputer extends AbstractHadoopGraphComputer imple
                 try {
                     VertexProgram.createVertexProgram(this.hadoopGraph, ConfUtil.makeApacheConfiguration(this.giraphConfiguration));
                 } catch (final IllegalStateException e) {
-                    if (e.getCause() instanceof NumberFormatException)
+                    // NumberFormatException is likely no longer a possibility here after 3.2.9 as the internal
+                    // serialization format for traversals changed from a delimited list of bytes as a string to a
+                    // base64 encoded string. under the base64 model we shouldn't see NumberFormatException anymore
+                    // but i left it here for now, just in case there's something i'm not seeing. see
+                    // VertexProgramHelper.deserialize() for more information related to this handling
+                    final Throwable root = ExceptionUtils.getRootCause(e);
+                    if (root instanceof NumberFormatException || root instanceof IOException || root instanceof ClassNotFoundException)
                         throw new NotSerializableException("The provided traversal is not serializable and thus, can not be distributed across the cluster");
                 }
                 // remove historic combiners in configuration propagation (this occurs when job chaining)

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c76e3af9/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/VertexProgramHelper.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/VertexProgramHelper.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/VertexProgramHelper.java
index a1c299d..2297c90 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/VertexProgramHelper.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/VertexProgramHelper.java
@@ -72,8 +72,19 @@ public final class VertexProgramHelper {
 
     public static <T> T deserialize(final Configuration configuration, final String key) {
         try {
-
-            return (T) Serializer.deserializeObject(Base64.getDecoder().decode(configuration.getString(key).getBytes()));
+            // a bit of a weird double try-catch here. Base64 can throw an IllegalArgumentException if given some
+            // bad data to deserialize. that needs to be caught and then re-cast as a IOException so that downstream
+            // systems can better catch and react to the error. giraph is the big hassle here it seems - see
+            // GiraphGraphComputer.run() for more related notes on this specifically where
+            // VertexProgram.createVertexProgram() is called as it has special handling for errors related to
+            // deserialization. if not handled properly, giraph will hang in tests. i don't want to over-tweak this
+            // code too much for two reasons (1) dont want to alter method signatures too much or mess with existing
+            // logic within 3.2.x (2) giraph is dead in 3.4.x so no point to trying to make this a ton more elegant.
+            try {
+                return (T) Serializer.deserializeObject(Base64.getDecoder().decode(configuration.getString(key).getBytes()));
+            } catch (IllegalArgumentException iae) {
+                throw new IOException(iae.getMessage());
+            }
         } catch (final IOException | ClassNotFoundException e) {
             throw new IllegalArgumentException(e.getMessage(), e);
         }


[13/22] tinkerpop git commit: TINKERPOP-1968 Enabled GLV tests for self loops

Posted by sp...@apache.org.
TINKERPOP-1968 Enabled GLV tests for self loops


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/784e851f
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/784e851f
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/784e851f

Branch: refs/heads/TINKERPOP-1968
Commit: 784e851fb0daa2ee7228d84d9ebac0b1c3feb132
Parents: d116ad5
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri May 18 14:39:53 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon May 21 13:14:23 2018 -0400

----------------------------------------------------------------------
 .../traversal/step/map/GroovyVertexTest.groovy  |  8 +++---
 gremlin-test/features/map/Vertex.feature        | 26 ++++++++++++++++++-
 .../process/traversal/step/map/VertexTest.java  | 27 ++++++++++----------
 .../gremlin/process/FeatureCoverageTest.java    |  3 ---
 4 files changed, 42 insertions(+), 22 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/784e851f/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyVertexTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyVertexTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyVertexTest.groovy
index ff6275d..cd43ad0 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyVertexTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyVertexTest.groovy
@@ -185,13 +185,13 @@ public abstract class GroovyVertexTest {
         }
 
         @Override
-        public Traversal<Vertex, Edge> get_g_V_bothEXselfX() {
-            new ScriptTraversal<>(g, "gremlin-groovy", "g.V().bothE('self')")
+        public Traversal<Vertex, Edge> get_g_V_hasLabelXloopsX_bothEXselfX() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V().hasLabel('loops').bothE('self')")
         }
 
         @Override
-        public Traversal<Vertex, Vertex> get_g_V_bothXselfX() {
-            new ScriptTraversal<>(g, "gremlin-groovy", "g.V().both('self')")
+        public Traversal<Vertex, Vertex> get_g_V_hasLabelXloopsX_bothXselfX() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V().hasLabel('loops').both('self')")
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/784e851f/gremlin-test/features/map/Vertex.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/map/Vertex.feature b/gremlin-test/features/map/Vertex.feature
index 569fb6f..8642693 100644
--- a/gremlin-test/features/map/Vertex.feature
+++ b/gremlin-test/features/map/Vertex.feature
@@ -472,4 +472,28 @@ Feature: Step - V(), E(), out(), in(), both(), inE(), outE(), bothE()
       | ripple |
       | ripple |
       | ripple |
-      | ripple |
\ No newline at end of file
+      | ripple |
+
+  Scenario: g_V_hasLabelXloopsX_bothEXselfX
+    Given the sink graph
+    And the traversal of
+    """
+    g.V().hasLabel("loops").bothE("self")
+    """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | e[loop-self->loop] |
+      | e[loop-self->loop] |
+
+  Scenario: g_V_hasLabelXloopsX_bothXselfX
+    Given the sink graph
+    And the traversal of
+    """
+    g.V().hasLabel("loops").both("self")
+    """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | v[loop] |
+      | v[loop] |

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/784e851f/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/VertexTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/VertexTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/VertexTest.java
index 8a57535..7908952 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/VertexTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/VertexTest.java
@@ -41,6 +41,7 @@ import java.util.Map;
 import java.util.Set;
 
 import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
+import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.SINK;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
@@ -113,9 +114,9 @@ public abstract class VertexTest extends AbstractGremlinProcessTest {
 
     public abstract Traversal<Vertex, String> get_g_V_hasLabelXpersonX_V_hasLabelXsoftwareX_name();
 
-    public abstract Traversal<Vertex, Edge> get_g_V_bothEXselfX();
+    public abstract Traversal<Vertex, Edge> get_g_V_hasLabelXloopsX_bothEXselfX();
 
-    public abstract Traversal<Vertex, Vertex> get_g_V_bothXselfX();
+    public abstract Traversal<Vertex, Vertex> get_g_V_hasLabelXloopsX_bothXselfX();
 
     // GRAPH VERTEX/EDGE
 
@@ -575,10 +576,9 @@ public abstract class VertexTest extends AbstractGremlinProcessTest {
     }
 
     @Test
-    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
-    public void g_V_bothEXselfX() {
-        g.addV().as("a").addE("self").to("a").iterate();
-        final Traversal<Vertex, Edge> traversal = get_g_V_bothEXselfX();
+    @LoadGraphWith(SINK)
+    public void g_V_hasLabelXloopsX_bothEXselfX() {
+        final Traversal<Vertex, Edge> traversal = get_g_V_hasLabelXloopsX_bothEXselfX();
         printTraversalForm(traversal);
 
         List<Edge> edges = traversal.toList();
@@ -587,10 +587,9 @@ public abstract class VertexTest extends AbstractGremlinProcessTest {
     }
 
     @Test
-    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
-    public void g_V_bothXselfX() {
-        g.addV().as("a").addE("self").to("a").iterate();
-        final Traversal<Vertex, Vertex> traversal = get_g_V_bothXselfX();
+    @LoadGraphWith(SINK)
+    public void g_V_hasLabelXloopsX_bothXselfX() {
+        final Traversal<Vertex, Vertex> traversal = get_g_V_hasLabelXloopsX_bothXselfX();
         printTraversalForm(traversal);
 
         List<Vertex> vertices = traversal.toList();
@@ -751,13 +750,13 @@ public abstract class VertexTest extends AbstractGremlinProcessTest {
         }
 
         @Override
-        public Traversal<Vertex, Edge> get_g_V_bothEXselfX() {
-            return g.V().bothE("self");
+        public Traversal<Vertex, Edge> get_g_V_hasLabelXloopsX_bothEXselfX() {
+            return g.V().hasLabel("loops").bothE("self");
         }
 
         @Override
-        public Traversal<Vertex, Vertex> get_g_V_bothXselfX() {
-            return g.V().both("self");
+        public Traversal<Vertex, Vertex> get_g_V_hasLabelXloopsX_bothXselfX() {
+            return g.V().hasLabel("loops").both("self");
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/784e851f/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/process/FeatureCoverageTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/process/FeatureCoverageTest.java b/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/process/FeatureCoverageTest.java
index 28c6d77..00391bf 100644
--- a/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/process/FeatureCoverageTest.java
+++ b/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/process/FeatureCoverageTest.java
@@ -127,9 +127,6 @@ public class FeatureCoverageTest {
             "g_V_selectXaX",
             // assertion doesn't seem to want to work right for embedded lists
             "g_V_asXa_bX_out_asXcX_path_selectXkeysX",
-            // probably need TINKERPOP-1877
-            "g_V_bothEXselfX",
-            "g_V_bothXselfX",
             // ugh - BigInteger?
             "g_withSackXBigInteger_TEN_powX1000X_assignX_V_localXoutXknowsX_barrierXnormSackXX_inXknowsX_barrier_sack",
             // ugh - clone


[17/22] tinkerpop git commit: TINKERPOP-1968 Have one method of ignoring tests.

Posted by sp...@apache.org.
TINKERPOP-1968 Have one method of ignoring tests.

Tests that should be ignored are "unsupported" in the .feature files. The validator doesn't need a second level of filtering for that.


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/cf257840
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/cf257840
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/cf257840

Branch: refs/heads/TINKERPOP-1968
Commit: cf257840a43f4b180d789321f3a2b4e7a2d77c50
Parents: 5c2a94f
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Mon May 21 07:46:07 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon May 21 13:14:24 2018 -0400

----------------------------------------------------------------------
 gremlin-test/features/map/AddVertex.feature     | 16 ++++++++++++-
 gremlin-test/features/map/Properties.feature    | 16 ++++++++++++-
 gremlin-test/features/sideEffect/Sack.feature   | 24 +++++++++++++++++++-
 .../gremlin/process/FeatureCoverageTest.java    | 16 -------------
 4 files changed, 53 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/cf257840/gremlin-test/features/map/AddVertex.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/map/AddVertex.feature b/gremlin-test/features/map/AddVertex.feature
index 996521b..c684b3b 100644
--- a/gremlin-test/features/map/AddVertex.feature
+++ b/gremlin-test/features/map/AddVertex.feature
@@ -334,4 +334,18 @@ Feature: Step - addV()
     Then the result should be unordered
       | result |
       | marko |
-    And the graph should return 2 for count of "g.V().has(\"name\",\"marko\")"
\ No newline at end of file
+    And the graph should return 2 for count of "g.V().has(\"name\",\"marko\")"
+
+  Scenario: g_V_addVXlabel_animal_age_0X
+    Given an unsupported test
+    Then nothing should happen because
+      """
+      This API is deprecated - will not test.
+      """
+
+  Scenario: g_addVXlabel_person_name_stephenX
+    Given an unsupported test
+    Then nothing should happen because
+      """
+      This API is deprecated - will not test.
+      """
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/cf257840/gremlin-test/features/map/Properties.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/map/Properties.feature b/gremlin-test/features/map/Properties.feature
index 5e61615..52376ec 100644
--- a/gremlin-test/features/map/Properties.feature
+++ b/gremlin-test/features/map/Properties.feature
@@ -65,4 +65,18 @@ Feature: Step - properties()
       | josh  |
       | d[32].i |
       | peter |
-      | d[35].i |
\ No newline at end of file
+      | d[35].i |
+
+  Scenario: g_V_hasXageX_properties_hasXid_nameIdX_value
+    Given an unsupported test
+    Then nothing should happen because
+      """
+      GLV suite doesn't support property identifiers and related assertions
+      """
+
+  Scenario: g_V_hasXageX_properties_hasXid_nameIdAsStringX_value
+    Given an unsupported test
+    Then nothing should happen because
+      """
+      GLV suite doesn't support property identifiers and related assertions
+      """
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/cf257840/gremlin-test/features/sideEffect/Sack.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/sideEffect/Sack.feature b/gremlin-test/features/sideEffect/Sack.feature
index 8d97c0c..aaf248d 100644
--- a/gremlin-test/features/sideEffect/Sack.feature
+++ b/gremlin-test/features/sideEffect/Sack.feature
@@ -108,4 +108,26 @@ Feature: Step - sack()
     Then the result should be unordered
       | result |
       | d[1.0].m |
-      | d[1.0].m |
\ No newline at end of file
+      | d[1.0].m |
+
+  Scenario: g_withSackXBigInteger_TEN_powX1000X_assignX_V_localXoutXknowsX_barrierXnormSackXX_inXknowsX_barrier_sack
+    Given an unsupported test
+    Then nothing should happen because
+      """
+      GLV Suite does not support BigInteger assignments at this time.
+      """
+
+  Scenario: g_withSackXmap__map_cloneX_V_out_out_sackXmap_a_nameX_sack
+    Given an unsupported test
+    Then nothing should happen because
+      """
+      This test is bound pretty tightly to the JVM in that it requires a UnaryOperator cast to get the right
+      withSack() method called. Not sure how that would work with a GLV.
+      """
+
+  Scenario: g_withSackX2X_V_sackXdivX_byXconstantX3_0XX_sack
+    Given an unsupported test
+    Then nothing should happen because
+      """
+      Something strange happens with rounding that prevents GLVs from asserting this result properly.
+      """
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/cf257840/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/process/FeatureCoverageTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/process/FeatureCoverageTest.java b/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/process/FeatureCoverageTest.java
index 181cd17..503df77 100644
--- a/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/process/FeatureCoverageTest.java
+++ b/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/process/FeatureCoverageTest.java
@@ -53,7 +53,6 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.map.MaxTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.MeanTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.MinTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.OrderTest;
-import org.apache.tinkerpop.gremlin.process.traversal.step.map.PageRankTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.PathTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.ProjectTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.PropertiesTest;
@@ -98,20 +97,6 @@ public class FeatureCoverageTest {
 
     private static Pattern scenarioName = Pattern.compile("^\\s*Scenario:\\s*(.*)$");
 
-    private static final List<String> testToIgnore = Arrays.asList(
-            // deprecated tests
-            "g_V_addVXlabel_animal_age_0X",
-            "g_addVXlabel_person_name_stephenX",
-            // GLV suite doesn't support property identifiers and related assertions
-            "g_V_hasXageX_properties_hasXid_nameIdX_value",
-            "g_V_hasXageX_properties_hasXid_nameIdAsStringX_value",
-            // ugh - BigInteger?
-            "g_withSackXBigInteger_TEN_powX1000X_assignX_V_localXoutXknowsX_barrierXnormSackXX_inXknowsX_barrier_sack",
-            // ugh - clone
-            "g_withSackXmap__map_cloneX_V_out_out_sackXmap_a_nameX_sack",
-            // wont round right or something
-            "g_withSackX2X_V_sackXdivX_byXconstantX3_0XX_sack");
-
     @Test
     public void shouldImplementAllProcessTestsAsFeatures() throws Exception {
 
@@ -193,7 +178,6 @@ public class FeatureCoverageTest {
                                            t.getSimpleName().replace("Test", "") + ".feature";
             final Set<String> testMethods = Stream.of(t.getDeclaredMethods())
                     .filter(m -> m.isAnnotationPresent(Test.class))
-                    .filter(m -> !testToIgnore.contains(m.getName()))
                     .map(Method::getName).collect(Collectors.toSet());
 
             final File featureFile = new File(featureFileName);


[21/22] tinkerpop git commit: TINKERPOP-1968 Javascript doesn't handle embedded list assertions.

Posted by sp...@apache.org.
TINKERPOP-1968 Javascript doesn't handle embedded list assertions.

Had to ignore this test for now.


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/b6a8f737
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/b6a8f737
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/b6a8f737

Branch: refs/heads/TINKERPOP-1968
Commit: b6a8f737cb4acdbb4ee6504094d11727e25d1564
Parents: ffe96b2
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Mon May 21 08:56:15 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon May 21 13:14:24 2018 -0400

----------------------------------------------------------------------
 .../javascript/gremlin-javascript/test/cucumber/feature-steps.js  | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b6a8f737/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/feature-steps.js
----------------------------------------------------------------------
diff --git a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/feature-steps.js b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/feature-steps.js
index c4eaebc..53f457d 100644
--- a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/feature-steps.js
+++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/feature-steps.js
@@ -55,12 +55,13 @@ const parsers = [
 
 const ignoreReason = {
   lambdaNotSupported: 'Lambdas are not supported on gremlin-javascript',
+  embeddedListAssertion: '"This test returns an embedded list in the result and the Gherkin processor does not parse that correctly"',
   needsFurtherInvestigation: '',
 };
 
 const ignoredScenarios = {
   // An associative array containing the scenario name as key, for example:
-  // 'g_V_branchXlabel_eq_person': new IgnoreError(ignoreReason.lambdaNotSupported),
+  'g_V_asXa_bX_out_asXcX_path_selectXkeysX': new IgnoreError(ignoreReason.embeddedListAssertion),
 };
 
 defineSupportCode(function(methods) {


[06/22] tinkerpop git commit: TINKERPOP-1595 Changed vertex program serialization to base64 encoded

Posted by sp...@apache.org.
TINKERPOP-1595 Changed vertex program serialization to base64 encoded

This approach shows to be faster than writing the bytes as an array of string values and deserializing with regex based parsing.


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/628d5df1
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/628d5df1
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/628d5df1

Branch: refs/heads/TINKERPOP-1968
Commit: 628d5df128e428dcb33638309dd78bc95cd69707
Parents: a5d9ecd
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Tue Apr 24 08:06:56 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon May 21 12:32:57 2018 -0400

----------------------------------------------------------------------
 .../process/computer/util/VertexProgramHelper.java     | 13 ++++---------
 1 file changed, 4 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/628d5df1/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/VertexProgramHelper.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/VertexProgramHelper.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/VertexProgramHelper.java
index bc67866..a1c299d 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/VertexProgramHelper.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/VertexProgramHelper.java
@@ -28,7 +28,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.map.VertexStep;
 import org.apache.tinkerpop.gremlin.util.Serializer;
 
 import java.io.IOException;
-import java.util.Arrays;
+import java.util.Base64;
 import java.util.HashSet;
 import java.util.Set;
 
@@ -64,8 +64,7 @@ public final class VertexProgramHelper {
         if (configuration instanceof AbstractConfiguration)
             ((AbstractConfiguration) configuration).setDelimiterParsingDisabled(true);
         try {
-            final String byteString = Arrays.toString(Serializer.serializeObject(object));
-            configuration.setProperty(key, byteString.substring(1, byteString.length() - 1));
+            configuration.setProperty(key, Base64.getEncoder().encodeToString(Serializer.serializeObject(object)));
         } catch (final IOException e) {
             throw new IllegalArgumentException(e.getMessage(), e);
         }
@@ -73,12 +72,8 @@ public final class VertexProgramHelper {
 
     public static <T> T deserialize(final Configuration configuration, final String key) {
         try {
-            final String[] stringBytes = configuration.getString(key).split(",");
-            byte[] bytes = new byte[stringBytes.length];
-            for (int i = 0; i < stringBytes.length; i++) {
-                bytes[i] = Byte.valueOf(stringBytes[i].trim());
-            }
-            return (T) Serializer.deserializeObject(bytes);
+
+            return (T) Serializer.deserializeObject(Base64.getDecoder().decode(configuration.getString(key).getBytes()));
         } catch (final IOException | ClassNotFoundException e) {
             throw new IllegalArgumentException(e.getMessage(), e);
         }


[04/22] tinkerpop git commit: TINKERPOP-1595 Removed stream() usage

Posted by sp...@apache.org.
TINKERPOP-1595 Removed stream() usage


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/31c4c36a
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/31c4c36a
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/31c4c36a

Branch: refs/heads/TINKERPOP-1968
Commit: 31c4c36ad44f15c041f49bec821619603f4929e5
Parents: 1f99d68
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Tue Apr 24 08:00:48 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon May 21 12:32:57 2018 -0400

----------------------------------------------------------------------
 .../process/computer/traversal/TraversalVertexProgram.java  | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/31c4c36a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalVertexProgram.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalVertexProgram.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalVertexProgram.java
index 8694974..eb56484 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalVertexProgram.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalVertexProgram.java
@@ -176,12 +176,11 @@ public final class TraversalVertexProgram implements VertexProgram<TraverserSet<
                         this.traversal.get().getParent().asStep().getNextStep() instanceof EmptyStep ||  // same as above, but if using TraversalVertexProgramStep directly
                         (this.traversal.get().getParent().asStep().getNextStep() instanceof ProfileStep && // same as above, but needed for profiling
                                 this.traversal.get().getParent().asStep().getNextStep().getNextStep() instanceof ComputerResultStep));
+
         // determine how to store halted traversers
-        this.haltedTraverserStrategy = ((HaltedTraverserStrategy) this.traversal.get().getStrategies().toList()
-                .stream()
-                .filter(strategy -> strategy instanceof HaltedTraverserStrategy)
-                .findAny()
-                .orElse(HaltedTraverserStrategy.reference()));
+        final Iterator<?> itty = IteratorUtils.filter(this.traversal.get().getStrategies().toList(), strategy -> strategy instanceof HaltedTraverserStrategy).iterator();
+        this.haltedTraverserStrategy = itty.hasNext() ? (HaltedTraverserStrategy) itty.next() : HaltedTraverserStrategy.reference();
+
         // register traversal side-effects in memory
         this.memoryComputeKeys.addAll(MemoryTraversalSideEffects.getMemoryComputeKeys(this.traversal.get()));
         // register MapReducer memory compute keys


[20/22] tinkerpop git commit: TINKERPOP-1968 PageRank tests aren't currently part of the required tests

Posted by sp...@apache.org.
TINKERPOP-1968 PageRank tests aren't currently part of the required tests


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/88f54f23
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/88f54f23
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/88f54f23

Branch: refs/heads/TINKERPOP-1968
Commit: 88f54f237d6c733a05694f2fb587defd6ed1278a
Parents: c42b8b6
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Mon May 21 07:06:35 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon May 21 13:14:24 2018 -0400

----------------------------------------------------------------------
 .../org/apache/tinkerpop/gremlin/process/FeatureCoverageTest.java  | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/88f54f23/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/process/FeatureCoverageTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/process/FeatureCoverageTest.java b/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/process/FeatureCoverageTest.java
index 5c2d8ed..ceef0d6 100644
--- a/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/process/FeatureCoverageTest.java
+++ b/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/process/FeatureCoverageTest.java
@@ -157,7 +157,7 @@ public class FeatureCoverageTest {
                 MeanTest.class,
                 MinTest.class,
                 OrderTest.class,
-                PageRankTest.class,
+                //PageRankTest.class,
                 PathTest.class,
                 // PeerPressureTest.class,
                 // ProfileTest.class,


[14/22] tinkerpop git commit: TINKERPOP-1968 Configured all the match() tests for GLV

Posted by sp...@apache.org.
TINKERPOP-1968 Configured all the match() tests for GLV

These were ignored because grateful dead wasn't an available graph, buuuuut it's been available for a while now so i'm not sure why those weren't setup.


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/fe1ec478
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/fe1ec478
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/fe1ec478

Branch: refs/heads/TINKERPOP-1968
Commit: fe1ec47886b2d1aa2d8a99539026779f6d1e03b5
Parents: 784e851
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri May 18 16:17:11 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon May 21 13:14:23 2018 -0400

----------------------------------------------------------------------
 .../ModernGraphTypeInformation.cs               |   3 +-
 gremlin-test/features/map/Match.feature         | 134 ++++++++++++++
 gremlin-test/features/map/Order.feature         | 173 +++++++++++++++++++
 gremlin-test/features/map/Properties.feature    |  14 ++
 .../gremlin/process/FeatureCoverageTest.java    |  16 --
 5 files changed, 323 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fe1ec478/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/TraversalEvaluation/ModernGraphTypeInformation.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/TraversalEvaluation/ModernGraphTypeInformation.cs b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/TraversalEvaluation/ModernGraphTypeInformation.cs
index 327a50a..7489b44 100644
--- a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/TraversalEvaluation/ModernGraphTypeInformation.cs
+++ b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/TraversalEvaluation/ModernGraphTypeInformation.cs
@@ -39,7 +39,8 @@ namespace Gremlin.Net.IntegrationTest.Gherkin.TraversalEvaluation
             {"lang", typeof(string)},
             {"weight", typeof(float)},
             {"foo", typeof(object)}, // used when for invalid property key lookups
-            {"friendWeight", typeof(float)}  // used in an AddVertex.feature test
+            {"friendWeight", typeof(float)},  // used in an AddVertex.feature test
+            {"performances", typeof(int)} // grateful dead graph
         };
         
         /// <summary>

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fe1ec478/gremlin-test/features/map/Match.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/map/Match.feature b/gremlin-test/features/map/Match.feature
index 55dffcf..73afd71 100644
--- a/gremlin-test/features/map/Match.feature
+++ b/gremlin-test/features/map/Match.feature
@@ -393,3 +393,137 @@ Feature: Step - match()
       | d[0].l |
       | d[0].l |
 
+  Scenario: g_V_matchXa_0sungBy_b__a_0writtenBy_c__b_writtenBy_d__c_sungBy_d__d_hasXname_GarciaXX
+    Given the grateful graph
+    And the traversal of
+      """
+      g.V().match(__.as("a").in("sungBy").as("b"),
+                  __.as("a").in("writtenBy").as("c"),
+                  __.as("b").out("writtenBy").as("d"),
+                  __.as("c").out("sungBy").as("d"),
+                  __.as("d").has("name", "Garcia"))
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | m[{"a":"v[Garcia]","b":"v[CREAM PUFF WAR]","c":"v[CREAM PUFF WAR]","d":"v[Garcia]"}] |
+      | m[{"a":"v[Garcia]","b":"v[CREAM PUFF WAR]","c":"v[CRYPTICAL ENVELOPMENT]","d":"v[Garcia]"}] |
+      | m[{"a":"v[Garcia]","b":"v[CRYPTICAL ENVELOPMENT]","c":"v[CREAM PUFF WAR]","d":"v[Garcia]"}] |
+      | m[{"a":"v[Garcia]","b":"v[CRYPTICAL ENVELOPMENT]","c":"v[CRYPTICAL ENVELOPMENT]","d":"v[Garcia]"}] |
+      | m[{"a":"v[Grateful_Dead]","b":"v[CANT COME DOWN]","c":"v[DOWN SO LONG]","d":"v[Garcia]"}] |
+      | m[{"a":"v[Grateful_Dead]","b":"v[THE ONLY TIME IS NOW]","c":"v[DOWN SO LONG]","d":"v[Garcia]"}] |
+
+  Scenario: g_V_matchXa_hasXsong_name_sunshineX__a_mapX0followedBy_weight_meanX_b__a_0followedBy_c__c_filterXweight_whereXgteXbXXX_outV_dX_selectXdX_byXnameX
+    Given the grateful graph
+    And the traversal of
+      """
+      g.V().match(__.as("a").has("song", "name", "HERE COMES SUNSHINE"),
+                  __.as("a").map(__.inE("followedBy").values("weight").mean()).as("b"),
+                  __.as("a").inE("followedBy").as("c"),
+                  __.as("c").filter(__.values("weight").where(P.gte("b"))).outV().as("d")).
+            select("d").by("name")
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | THE MUSIC NEVER STOPPED |
+      | PROMISED LAND           |
+      | PLAYING IN THE BAND     |
+      | CASEY JONES             |
+      | BIG RIVER               |
+      | EL PASO                 |
+      | LIBERTY                 |
+      | LOOKS LIKE RAIN         |
+
+  Scenario: g_V_matchXa_0sungBy_b__a_0sungBy_c__b_writtenBy_d__c_writtenBy_e__d_hasXname_George_HarisonX__e_hasXname_Bob_MarleyXX
+    Given the grateful graph
+    And the traversal of
+      """
+      g.V().match(__.as("a").in("sungBy").as("b"),
+                  __.as("a").in("sungBy").as("c"),
+                  __.as("b").out("writtenBy").as("d"),
+                  __.as("c").out("writtenBy").as("e"),
+                  __.as("d").has("name", "George_Harrison"),
+                  __.as("e").has("name", "Bob_Marley"))
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | m[{"a":"v[Garcia]","b":"v[I WANT TO TELL YOU]","c":"v[STIR IT UP]","d":"v[George_Harrison]","e":"v[Bob_Marley]"}] |
+
+  Scenario: g_V_matchXa_hasXname_GarciaX__a_0writtenBy_b__a_0sungBy_bX
+    Given the grateful graph
+    And the traversal of
+      """
+      g.V().match(__.as("a").has("name", "Garcia"),
+                  __.as("a").in("writtenBy").as("b"),
+                  __.as("a").in("sungBy").as("b"))
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | m[{"a":"v[Garcia]","b":"v[CREAM PUFF WAR]"}] |
+      | m[{"a":"v[Garcia]","b":"v[CRYPTICAL ENVELOPMENT]"}] |
+
+  Scenario: g_V_hasLabelXsongsX_matchXa_name_b__a_performances_cX_selectXb_cX_count
+    Given the grateful graph
+    And the traversal of
+      """
+       g.V().hasLabel("song").match(
+                    __.as("a").values("name").as("b"),
+                    __.as("a").values("performances").as("c")).select("b", "c").count()
+      """
+    When iterated to list
+    Then the result should be ordered
+      | result |
+      | d[584].l |
+
+  Scenario: g_V_matchXa_followedBy_count_isXgtX10XX_b__a_0followedBy_count_isXgtX10XX_bX_count
+    Given the grateful graph
+    And the traversal of
+      """
+      g.V().match(__.as("a").out("followedBy").count().is(P.gt(10)).as("b"),
+                  __.as("a").in("followedBy").count().is(P.gt(10)).as("b")).count()
+      """
+    When iterated to list
+    Then the result should be ordered
+      | result |
+      | d[6].l |
+
+  Scenario: g_V_matchXa_0sungBy_b__a_0writtenBy_c__b_writtenBy_dX_whereXc_sungBy_dX_whereXd_hasXname_GarciaXX
+    Given the grateful graph
+    And the traversal of
+      """
+      g.V().match(__.as("a").in("sungBy").as("b"),
+                  __.as("a").in("writtenBy").as("c"),
+                  __.as("b").out("writtenBy").as("d")).
+            where(__.as("c").out("sungBy").as("d")).
+            where(__.as("d").has("name", "Garcia"))
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | m[{"a":"v[Garcia]","b":"v[CREAM PUFF WAR]","c":"v[CREAM PUFF WAR]","d":"v[Garcia]"}] |
+      | m[{"a":"v[Garcia]","b":"v[CREAM PUFF WAR]","c":"v[CRYPTICAL ENVELOPMENT]","d":"v[Garcia]"}] |
+      | m[{"a":"v[Garcia]","b":"v[CRYPTICAL ENVELOPMENT]","c":"v[CREAM PUFF WAR]","d":"v[Garcia]"}] |
+      | m[{"a":"v[Garcia]","b":"v[CRYPTICAL ENVELOPMENT]","c":"v[CRYPTICAL ENVELOPMENT]","d":"v[Garcia]"}] |
+      | m[{"a":"v[Grateful_Dead]","b":"v[CANT COME DOWN]","c":"v[DOWN SO LONG]","d":"v[Garcia]"}] |
+      | m[{"a":"v[Grateful_Dead]","b":"v[THE ONLY TIME IS NOW]","c":"v[DOWN SO LONG]","d":"v[Garcia]"}] |
+
+  Scenario: g_V_matchXa_hasXname_GarciaX__a_0writtenBy_b__b_followedBy_c__c_writtenBy_d__whereXd_neqXaXXX
+    Given the grateful graph
+    And the traversal of
+      """
+      g.V().match(__.as("a").has("name", "Garcia"),
+                  __.as("a").in("writtenBy").as("b"),
+                  __.as("b").out("followedBy").as("c"),
+                  __.as("c").out("writtenBy").as("d"),
+                  __.where("d", P.neq("a")))
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | m[{"a":"v[Garcia]","b":"v[CRYPTICAL ENVELOPMENT]","c":"v[DRUMS]","d":"v[Grateful_Dead]"}] |
+      | m[{"a":"v[Garcia]","b":"v[CRYPTICAL ENVELOPMENT]","c":"v[THE OTHER ONE]","d":"v[Weir]"}] |
+      | m[{"a":"v[Garcia]","b":"v[CRYPTICAL ENVELOPMENT]","c":"v[WHARF RAT]","d":"v[Hunter]"}] |
+

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fe1ec478/gremlin-test/features/map/Order.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/map/Order.feature b/gremlin-test/features/map/Order.feature
index 6dd8ac4..d800812 100644
--- a/gremlin-test/features/map/Order.feature
+++ b/gremlin-test/features/map/Order.feature
@@ -323,3 +323,176 @@ Feature: Step - order()
       | result |
       | m[{"3":"d[87].i","2":"d[58].i","1":"d[29].i","4":"d[29].i"}] |
 
+  Scenario: g_V_hasXsong_name_OHBOYX_outXfollowedByX_outXfollowedByX_order_byXperformancesX_byXsongType_incrX
+    Given the grateful graph
+    And the traversal of
+      """
+      g.V().has("song", "name", "OH BOY").out("followedBy").out("followedBy").order().by("performances").by("songType", Order.decr)
+      """
+    When iterated to list
+    Then the result should be ordered
+      | result |
+      | v[THE BOXER] |
+      | v[BARBRY ALLEN] |
+      | v[OLLIN ARRAGEED] |
+      | v[GOOD TIME BLUES] |
+      | v[TOM THUMB BLUES] |
+      | v[GIMME SOME LOVIN] |
+      | v[SATISFACTION] |
+      | v[MAYBE YOU KNOW HOW I FEEL] |
+      | v[SPACE] |
+      | v[THIS COULD BE THE LAST TIME] |
+      | v[CHANTING BY THE GYOTO MONKS] |
+      | v[SILENT WAY JAM] |
+      | v[STRONGER THAN DIRT] |
+      | v[MOJO] |
+      | v[FUNICULI FUNICULA] |
+      | v[QUINN THE ESKIMO] |
+      | v[LUCY IN THE SKY] |
+      | v[LOVE THE ONE YOURE WITH] |
+      | v[CHINESE BONES] |
+      | v[OH BOY] |
+      | v[BLACK QUEEN] |
+      | v[BLUES FOR ALLAH] |
+      | v[IF I HAD THE WORLD TO GIVE] |
+      | v[HEY JUDE] |
+      | v[WILLIE AND THE HAND JIVE] |
+      | v[ITS ALL TOO MUCH] |
+      | v[WHY DONT WE DO IT IN THE ROAD] |
+      | v[UNBROKEN CHAIN] |
+      | v[DONT NEED LOVE] |
+      | v[NOBODYS FAULT BUT MINE] |
+      | v[HEAVEN HELP THE FOOL] |
+      | v[BLOW AWAY] |
+      | v[JAM] |
+      | v[SUNSHINE DAYDREAM] |
+      | v[I WILL TAKE YOU HOME] |
+      | v[SAMBA IN THE RAIN] |
+      | v[ON THE ROAD AGAIN] |
+      | v[SPANISH JAM] |
+      | v[EASY TO LOVE YOU] |
+      | v[DEATH DONT HAVE NO MERCY] |
+      | v[SPOONFUL] |
+      | v[CAUTION] |
+      | v[THE RACE IS ON] |
+      | v[SMOKESTACK LIGHTNING] |
+      | v[COMES A TIME] |
+      | v[STANDING ON THE MOON] |
+      | v[KNOCKING ON HEAVENS DOOR] |
+      | v[PICASSO MOON] |
+      | v[FOOLISH HEART] |
+      | v[WAY TO GO HOME] |
+      | v[THE ELEVEN] |
+      | v[VICTIM OR THE CRIME] |
+      | v[PASSENGER] |
+      | v[PASSENGER] |
+      | v[MY BROTHER ESAU] |
+      | v[HELP ON THE WAY] |
+      | v[LAZY LIGHTNING] |
+      | v[CHINA DOLL] |
+      | v[ME AND BOBBY MCGEE] |
+      | v[ALL ALONG THE WATCHTOWER] |
+      | v[CRYPTICAL ENVELOPMENT] |
+      | v[ALABAMA GETAWAY] |
+      | v[CRAZY FINGERS] |
+      | v[CRAZY FINGERS] |
+      | v[WHEN I PAINT MY MASTERPIECE] |
+      | v[LOST SAILOR] |
+      | v[LOST SAILOR] |
+      | v[BLACK THROATED WIND] |
+      | v[IT MUST HAVE BEEN THE ROSES] |
+      | v[IT MUST HAVE BEEN THE ROSES] |
+      | v[BOX OF RAIN] |
+      | v[SHAKEDOWN STREET] |
+      | v[SHAKEDOWN STREET] |
+      | v[IKO IKO] |
+      | v[IKO IKO] |
+      | v[FEEL LIKE A STRANGER] |
+      | v[TOUCH OF GREY] |
+      | v[TOUCH OF GREY] |
+      | v[BROKEDOWN PALACE] |
+      | v[HELL IN A BUCKET] |
+      | v[DARK STAR] |
+      | v[DARK STAR] |
+      | v[FRANKLINS TOWER] |
+      | v[SAINT OF CIRCUMSTANCE] |
+      | v[SAINT OF CIRCUMSTANCE] |
+      | v[THE MUSIC NEVER STOPPED] |
+      | v[COLD RAIN AND SNOW] |
+      | v[FIRE ON THE MOUNTAIN] |
+      | v[MORNING DEW] |
+      | v[THE WHEEL] |
+      | v[THROWING STONES] |
+      | v[I NEED A MIRACLE] |
+      | v[I NEED A MIRACLE] |
+      | v[ALTHEA] |
+      | v[LITTLE RED ROOSTER] |
+      | v[LET IT GROW] |
+      | v[LET IT GROW] |
+      | v[GOING DOWN THE ROAD FEELING BAD] |
+      | v[BIRDSONG] |
+      | v[TERRAPIN STATION] |
+      | v[TERRAPIN STATION] |
+      | v[MAMA TRIED] |
+      | v[FRIEND OF THE DEVIL] |
+      | v[FRIEND OF THE DEVIL] |
+      | v[SCARLET BEGONIAS] |
+      | v[SCARLET BEGONIAS] |
+      | v[BEAT IT ON DOWN THE LINE] |
+      | v[HES GONE] |
+      | v[STELLA BLUE] |
+      | v[UNCLE JOHNS BAND] |
+      | v[UNCLE JOHNS BAND] |
+      | v[CASSIDY] |
+      | v[ONE MORE SATURDAY NIGHT] |
+      | v[BLACK PETER] |
+      | v[BROWN EYED WOMEN] |
+      | v[SUGAREE] |
+      | v[SAMSON AND DELILAH] |
+      | v[SAMSON AND DELILAH] |
+      | v[EYES OF THE WORLD] |
+      | v[EYES OF THE WORLD] |
+      | v[EL PASO] |
+      | v[ESTIMATED PROPHET] |
+      | v[WHARF RAT] |
+      | v[BERTHA] |
+      | v[BIG RIVER] |
+      | v[LOOKS LIKE RAIN] |
+      | v[AROUND AND AROUND] |
+      | v[PROMISED LAND] |
+      | v[GOOD LOVING] |
+      | v[MEXICALI BLUES] |
+      | v[NEW MINGLEWOOD BLUES] |
+      | v[JACK STRAW] |
+      | v[JACK STRAW] |
+      | v[TRUCKING] |
+      | v[TRUCKING] |
+      | v[NOT FADE AWAY] |
+      | v[CHINA CAT SUNFLOWER] |
+      | v[CHINA CAT SUNFLOWER] |
+      | v[PLAYING IN THE BAND] |
+      | v[PLAYING IN THE BAND] |
+      | v[THE OTHER ONE] |
+      | v[SUGAR MAGNOLIA] |
+      | v[SUGAR MAGNOLIA] |
+      | v[ME AND MY UNCLE] |
+
+  Scenario: g_V_hasLabelXsongX_order_byXperfomances_decrX_byXnameX_rangeX110_120X_name
+    Given the grateful graph
+    And the traversal of
+      """
+      g.V().hasLabel("song").order().by("performances", Order.decr).by("name").range(110, 120).values("name")
+      """
+    When iterated to list
+    Then the result should be ordered
+      | result |
+      | WANG DANG DOODLE |
+      | THE ELEVEN |
+      | WAY TO GO HOME |
+      | FOOLISH HEART |
+      | GIMME SOME LOVING |
+      | DUPREES DIAMOND BLUES |
+      | CORRINA |
+      | PICASSO MOON |
+      | KNOCKING ON HEAVENS DOOR |
+      | MEMPHIS BLUES |

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fe1ec478/gremlin-test/features/map/Properties.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/map/Properties.feature b/gremlin-test/features/map/Properties.feature
index 3c926fa..5e61615 100644
--- a/gremlin-test/features/map/Properties.feature
+++ b/gremlin-test/features/map/Properties.feature
@@ -17,6 +17,20 @@
 
 Feature: Step - properties()
 
+  Scenario: g_V_hasXageX_propertiesXnameX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().has("age").properties("name").value()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | marko |
+      | vadas |
+      | josh  |
+      | peter |
+
   Scenario: g_V_hasXageX_propertiesXname_ageX_value
     Given the modern graph
     And the traversal of

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fe1ec478/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/process/FeatureCoverageTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/process/FeatureCoverageTest.java b/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/process/FeatureCoverageTest.java
index 00391bf..670cae9 100644
--- a/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/process/FeatureCoverageTest.java
+++ b/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/process/FeatureCoverageTest.java
@@ -68,9 +68,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroupTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.InjectTest;
 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.SideEffectTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.StoreTest;
-import org.junit.Ignore;
 import org.junit.Test;
 
 import java.io.BufferedReader;
@@ -107,19 +105,6 @@ public class FeatureCoverageTest {
             // GLV suite doesn't support property identifiers and related assertions
             "g_V_hasXageX_properties_hasXid_nameIdX_value",
             "g_V_hasXageX_properties_hasXid_nameIdAsStringX_value",
-            "g_V_hasXageX_propertiesXnameX",
-            // grateful dead graph not supported in GLV suite
-            "g_V_matchXa_0sungBy_b__a_0writtenBy_c__b_writtenBy_d__c_sungBy_d__d_hasXname_GarciaXX",
-            "g_V_matchXa_hasXsong_name_sunshineX__a_mapX0followedBy_weight_meanX_b__a_0followedBy_c__c_filterXweight_whereXgteXbXXX_outV_dX_selectXdX_byXnameX",
-            "g_V_matchXa_0sungBy_b__a_0sungBy_c__b_writtenBy_d__c_writtenBy_e__d_hasXname_George_HarisonX__e_hasXname_Bob_MarleyXX",
-            "g_V_matchXa_hasXname_GarciaX__a_0writtenBy_b__a_0sungBy_bX",
-            "g_V_hasLabelXsongsX_matchXa_name_b__a_performances_cX_selectXb_cX_count",
-            "g_V_matchXa_hasXname_GarciaX__a_0writtenBy_b__b_followedBy_c__c_writtenBy_d__whereXd_neqXaXXX",
-            "g_V_matchXa_0sungBy_b__a_0writtenBy_c__b_writtenBy_dX_whereXc_sungBy_dX_whereXd_hasXname_GarciaXX",
-            "get_g_V_matchXa_followedBy_count_isXgtX10XX_b__a_0followedBy_count_isXgtX10XX_bX_count",
-            "g_V_matchXa_followedBy_count_isXgtX10XX_b__a_0followedBy_count_isXgtX10XX_bX_count",
-            "g_V_hasXsong_name_OHBOYX_outXfollowedByX_outXfollowedByX_order_byXperformancesX_byXsongType_incrX",
-            "g_V_hasLabelXsongX_order_byXperfomances_decrX_byXnameX_rangeX110_120X_name",
             // Pop tests not organized right for GLVs
             "g_V_valueMap_selectXpop_aX",
             "g_V_selectXa_bX",
@@ -135,7 +120,6 @@ public class FeatureCoverageTest {
             "g_withSackX2X_V_sackXdivX_byXconstantX3_0XX_sack");
 
     @Test
-    // @Ignore("As it stands we won't have all of these tests migrated initially so there is no point to running this in full - it can be flipped on later")
     public void shouldImplementAllProcessTestsAsFeatures() throws Exception {
 
         // TEMPORARY while test framework is under development - all tests should ultimately be included


[11/22] tinkerpop git commit: TINKERPOP-1968 Simplified gremlin server test configuration

Posted by sp...@apache.org.
TINKERPOP-1968 Simplified gremlin server test configuration

There was a fair bit of duplicated configuration for Gremlin Server testing - streamlined that to a single gremlin-server-integration.yaml file and script initializer. Tests had to become more specific as to the graphs that they were executing against as a result.


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/d116ad5c
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/d116ad5c
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/d116ad5c

Branch: refs/heads/TINKERPOP-1968
Commit: d116ad5c4e5d7ddf829fa6db4c9566d949db87ef
Parents: 615d6ea
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri May 18 14:38:04 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon May 21 13:14:23 2018 -0400

----------------------------------------------------------------------
 gremlin-dotnet/test/pom.xml                     |  2 +-
 gremlin-javascript/pom.xml                      |  2 +-
 .../test/integration/remote-connection-tests.js |  2 +-
 .../test/integration/traversal-test.js          |  2 +-
 gremlin-python/pom.xml                          |  2 +-
 .../src/main/jython/tests/conftest.py           |  6 +-
 .../src/main/jython/tests/driver/test_client.py | 14 ++---
 .../driver/test_driver_remote_connection.py     |  4 +-
 .../test_driver_remote_connection_threaded.py   |  4 +-
 gremlin-server/scripts/generate-all.groovy      | 63 --------------------
 gremlin-server/src/assembly/standalone.xml      |  3 -
 .../driver/remote/RemoteGraphProvider.java      |  2 +-
 .../server/GremlinResultSetIntegrateTest.java   | 34 +++++------
 .../server/GremlinServerHttpIntegrateTest.java  | 18 ++----
 .../gremlin/server/ServerTestHelper.java        |  7 ++-
 .../server/util/DefaultGraphManagerTest.java    | 32 +++++++---
 .../remote/gremlin-server-integration.yaml      | 56 -----------------
 .../server/gremlin-server-integration.yaml      | 11 +++-
 .../src/test/scripts/generate-all.groovy        | 31 +++++++++-
 .../src/test/scripts/neo4j-empty.properties     | 33 ++++++++++
 20 files changed, 139 insertions(+), 189 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d116ad5c/gremlin-dotnet/test/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/pom.xml b/gremlin-dotnet/test/pom.xml
index db1f8ad..f8d3118 100644
--- a/gremlin-dotnet/test/pom.xml
+++ b/gremlin-dotnet/test/pom.xml
@@ -143,7 +143,7 @@ limitations under the License.
                                         </property>
                                         <property>
                                             <name>settingsFile</name>
-                                            <value>${gremlin.server.dir}/src/test/resources/org/apache/tinkerpop/gremlin/driver/remote/gremlin-server-integration.yaml</value>
+                                            <value>${gremlin.server.dir}/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-integration.yaml</value>
                                         </property>
                                         <property>
                                             <name>executionName</name>

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d116ad5c/gremlin-javascript/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-javascript/pom.xml b/gremlin-javascript/pom.xml
index a820f3b..b01b2b9 100644
--- a/gremlin-javascript/pom.xml
+++ b/gremlin-javascript/pom.xml
@@ -114,7 +114,7 @@ limitations under the License.
                                 </property>
                                 <property>
                                     <name>settingsFile</name>
-                                    <value>${gremlin.server.dir}/src/test/resources/org/apache/tinkerpop/gremlin/driver/remote/gremlin-server-integration.yaml</value>
+                                    <value>${gremlin.server.dir}/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-integration.yaml</value>
                                 </property>
                                 <property>
                                     <name>executionName</name>

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d116ad5c/gremlin-javascript/src/main/javascript/gremlin-javascript/test/integration/remote-connection-tests.js
----------------------------------------------------------------------
diff --git a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/integration/remote-connection-tests.js b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/integration/remote-connection-tests.js
index 9e115be..afc0e58 100644
--- a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/integration/remote-connection-tests.js
+++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/integration/remote-connection-tests.js
@@ -31,7 +31,7 @@ let connection;
 
 describe('DriverRemoteConnection', function () {
   before(function () {
-    connection = helper.getConnection();
+    connection = helper.getConnection('gmodern');
     return connection.open();
   });
   after(function () {

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d116ad5c/gremlin-javascript/src/main/javascript/gremlin-javascript/test/integration/traversal-test.js
----------------------------------------------------------------------
diff --git a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/integration/traversal-test.js b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/integration/traversal-test.js
index 01dde62..920d998 100644
--- a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/integration/traversal-test.js
+++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/integration/traversal-test.js
@@ -33,7 +33,7 @@ let connection;
 
 describe('Traversal', function () {
   before(function () {
-    connection = helper.getConnection();
+    connection = helper.getConnection('gmodern');
     return connection.open();
   });
   after(function () {

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d116ad5c/gremlin-python/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-python/pom.xml b/gremlin-python/pom.xml
index a2ab516..13c3454 100644
--- a/gremlin-python/pom.xml
+++ b/gremlin-python/pom.xml
@@ -507,7 +507,7 @@ limitations under the License.
                                         </property>
                                         <property>
                                             <name>settingsFile</name>
-                                            <value>${gremlin.server.dir}/src/test/resources/org/apache/tinkerpop/gremlin/driver/remote/gremlin-server-integration.yaml</value>
+                                            <value>${gremlin.server.dir}/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-integration.yaml</value>
                                         </property>
                                         <property>
                                             <name>executionName</name>

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d116ad5c/gremlin-python/src/main/jython/tests/conftest.py
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/jython/tests/conftest.py b/gremlin-python/src/main/jython/tests/conftest.py
index 2cd4282..96ded16 100644
--- a/gremlin-python/src/main/jython/tests/conftest.py
+++ b/gremlin-python/src/main/jython/tests/conftest.py
@@ -38,7 +38,7 @@ def connection(request):
     executor = concurrent.futures.ThreadPoolExecutor(5)
     pool = queue.Queue()
     try:
-        conn = Connection('ws://localhost:45940/gremlin', 'g', protocol,
+        conn = Connection('ws://localhost:45940/gremlin', 'gmodern', protocol,
                           lambda: TornadoTransport(), executor, pool)
     except OSError:
         executor.shutdown()
@@ -53,7 +53,7 @@ def connection(request):
 @pytest.fixture
 def client(request):
     try:
-        client = Client('ws://localhost:45940/gremlin', 'g')
+        client = Client('ws://localhost:45940/gremlin', 'gmodern')
     except OSError:
         pytest.skip('Gremlin Server is not running')
     else:
@@ -65,7 +65,7 @@ def client(request):
 @pytest.fixture
 def remote_connection(request):
     try:
-        remote_conn = DriverRemoteConnection('ws://localhost:45940/gremlin', 'g')
+        remote_conn = DriverRemoteConnection('ws://localhost:45940/gremlin', 'gmodern')
     except OSError:
         pytest.skip('Gremlin Server is not running')
     else:

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d116ad5c/gremlin-python/src/main/jython/tests/driver/test_client.py
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/jython/tests/driver/test_client.py b/gremlin-python/src/main/jython/tests/driver/test_client.py
index f7b01ce..595aba0 100644
--- a/gremlin-python/src/main/jython/tests/driver/test_client.py
+++ b/gremlin-python/src/main/jython/tests/driver/test_client.py
@@ -28,7 +28,7 @@ __author__ = 'David M. Brown (davebshow@gmail.com)'
 def test_connection(connection):
     g = Graph().traversal()
     t = g.V()
-    message = RequestMessage('traversal', 'bytecode', {'gremlin': t.bytecode})
+    message = RequestMessage('traversal', 'bytecode', {'gremlin': t.bytecode, 'aliases': {'g': 'gmodern'}})
     results_set = connection.write(message).result()
     future = results_set.all()
     results = future.result()
@@ -51,7 +51,7 @@ def test_client_eval_traversal(client):
 def test_client_bytecode(client):
     g = Graph().traversal()
     t = g.V()
-    message = RequestMessage('traversal', 'bytecode', {'gremlin': t.bytecode})
+    message = RequestMessage('traversal', 'bytecode', {'gremlin': t.bytecode, 'aliases': {'g': 'gmodern'}})
     result_set = client.submit(message)
     assert len(result_set.all().result()) == 6
 
@@ -59,7 +59,7 @@ def test_client_bytecode(client):
 def test_iterate_result_set(client):
     g = Graph().traversal()
     t = g.V()
-    message = RequestMessage('traversal', 'bytecode', {'gremlin': t.bytecode})
+    message = RequestMessage('traversal', 'bytecode', {'gremlin': t.bytecode, 'aliases': {'g': 'gmodern'}})
     result_set = client.submit(message)
     results = []
     for result in result_set:
@@ -70,7 +70,7 @@ def test_iterate_result_set(client):
 def test_client_async(client):
     g = Graph().traversal()
     t = g.V()
-    message = RequestMessage('traversal', 'bytecode', {'gremlin': t.bytecode})
+    message = RequestMessage('traversal', 'bytecode', {'gremlin': t.bytecode, 'aliases': {'g': 'gmodern'}})
     future = client.submitAsync(message)
     result_set = future.result()
     assert len(result_set.all().result()) == 6
@@ -78,10 +78,10 @@ def test_client_async(client):
 
 def test_connection_share(client):
     # Overwrite fixture with pool_size=1 client
-    client = Client('ws://localhost:45940/gremlin', 'g', pool_size=1)
+    client = Client('ws://localhost:45940/gremlin', 'gmodern', pool_size=1)
     g = Graph().traversal()
     t = g.V()
-    message = RequestMessage('traversal', 'bytecode', {'gremlin': t.bytecode})
+    message = RequestMessage('traversal', 'bytecode', {'gremlin': t.bytecode, 'aliases': {'g': 'gmodern'}})
     future = client.submitAsync(message)
     future2 = client.submitAsync(message)
 
@@ -97,7 +97,7 @@ def test_connection_share(client):
 def test_multi_conn_pool(client):
     g = Graph().traversal()
     t = g.V()
-    message = RequestMessage('traversal', 'bytecode', {'gremlin': t.bytecode})
+    message = RequestMessage('traversal', 'bytecode', {'gremlin': t.bytecode, 'aliases': {'g': 'gmodern'}})
     future = client.submitAsync(message)
     future2 = client.submitAsync(message)
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d116ad5c/gremlin-python/src/main/jython/tests/driver/test_driver_remote_connection.py
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/jython/tests/driver/test_driver_remote_connection.py b/gremlin-python/src/main/jython/tests/driver/test_driver_remote_connection.py
index 1071493..cd9101e 100644
--- a/gremlin-python/src/main/jython/tests/driver/test_driver_remote_connection.py
+++ b/gremlin-python/src/main/jython/tests/driver/test_driver_remote_connection.py
@@ -37,7 +37,7 @@ __author__ = 'Marko A. Rodriguez (http://markorodriguez.com)'
 class TestDriverRemoteConnection(object):
     def test_traversals(self, remote_connection):
         statics.load_statics(globals())
-        assert "remoteconnection[ws://localhost:45940/gremlin,g]" == str(remote_connection)
+        assert "remoteconnection[ws://localhost:45940/gremlin,gmodern]" == str(remote_connection)
         g = Graph().traversal().withRemote(remote_connection)
 
         assert long(6) == g.V().count().toList()[0]
@@ -233,7 +233,7 @@ def test_in_tornado_app(remote_connection):
     @gen.coroutine
     def go():
         conn = DriverRemoteConnection(
-            'ws://localhost:45940/gremlin', 'g', pool_size=4)
+            'ws://localhost:45940/gremlin', 'gmodern', pool_size=4)
         g = Graph().traversal().withRemote(conn)
         yield gen.sleep(0)
         assert len(g.V().toList()) == 6

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d116ad5c/gremlin-python/src/main/jython/tests/driver/test_driver_remote_connection_threaded.py
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/jython/tests/driver/test_driver_remote_connection_threaded.py b/gremlin-python/src/main/jython/tests/driver/test_driver_remote_connection_threaded.py
index dffd442..49db930 100644
--- a/gremlin-python/src/main/jython/tests/driver/test_driver_remote_connection_threaded.py
+++ b/gremlin-python/src/main/jython/tests/driver/test_driver_remote_connection_threaded.py
@@ -41,6 +41,7 @@ def test_conns_in_threads(remote_connection):
     child.join()
     child2.join()
 
+
 def test_conn_in_threads(remote_connection):
     q = queue.Queue()
     child = Thread(target=_executor, args=(q, remote_connection))
@@ -53,13 +54,14 @@ def test_conn_in_threads(remote_connection):
     child.join()
     child2.join()
 
+
 def _executor(q, conn):
     close = False
     if not conn:
         # This isn't a fixture so close manually
         close = True
         conn = DriverRemoteConnection(
-            'ws://localhost:45940/gremlin', 'g', pool_size=4)
+            'ws://localhost:45940/gremlin', 'gmodern', pool_size=4)
     try:
         g = Graph().traversal().withRemote(conn)
         future = g.V().promise()

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d116ad5c/gremlin-server/scripts/generate-all.groovy
----------------------------------------------------------------------
diff --git a/gremlin-server/scripts/generate-all.groovy b/gremlin-server/scripts/generate-all.groovy
deleted file mode 100644
index 66b1cb4..0000000
--- a/gremlin-server/scripts/generate-all.groovy
+++ /dev/null
@@ -1,63 +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.
- */
-
-// an init script that returns a Map allows explicit setting of global bindings.
-def globals = [:]
-
-// Generates the modern graph into an "empty" TinkerGraph via LifeCycleHook.
-// Note that the name of the key in the "global" map is unimportant.
-globals << [hook : [
-  onStartUp: { ctx ->
-    TinkerFactory.generateClassic(classic)
-    TinkerFactory.generateModern(modern)
-    TinkerFactory.generateTheCrew(crew)
-    grateful.io(gryo()).readGraph('../data/grateful-dead.kryo')
-    TinkerFactory.generateKitchenSink(sink)
-
-    // a wild bit of trickery here. the process tests use an INTEGER id manager when LoadGraphWith is used. this
-    // closure provides a way to to manually override the various id managers for TinkerGraph - the graph on which
-    // all of these remote tests are executed - so that the tests will pass nicely. an alternative might have been
-    // to have a special test TinkerGraph config for setting up the id manager properly, but based on how we do
-    // things now, that test config would have been mixed in with release artifacts and there would have been ugly
-    // exclusions to make packaging work properly.
-    allowSetOfIdManager = { graph, idManagerFieldName ->
-        java.lang.reflect.Field idManagerField = graph.class.getDeclaredField(idManagerFieldName)
-        idManagerField.setAccessible(true)
-        java.lang.reflect.Field modifiersField = java.lang.reflect.Field.class.getDeclaredField("modifiers")
-        modifiersField.setAccessible(true)
-        modifiersField.setInt(idManagerField, modifiersField.getModifiers() & ~java.lang.reflect.Modifier.FINAL)
-
-        idManagerField.set(graph, TinkerGraph.DefaultIdManager.INTEGER)
-    }
-
-    [classic, modern, crew, sink].each{
-      allowSetOfIdManager(it, "vertexIdManager")
-      allowSetOfIdManager(it, "edgeIdManager")
-      allowSetOfIdManager(it, "vertexPropertyIdManager")
-    }
-  }
-] as LifeCycleHook]
-
-// add default TraversalSource instances for each graph instance
-globals << [gclassic : classic.traversal()]
-globals << [gmodern : modern.traversal()]
-globals << [gcrew : crew.traversal()]
-globals << [ggraph : graph.traversal()]
-globals << [ggrateful : grateful.traversal()]
-globals << [gsink : sink.traversal()]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d116ad5c/gremlin-server/src/assembly/standalone.xml
----------------------------------------------------------------------
diff --git a/gremlin-server/src/assembly/standalone.xml b/gremlin-server/src/assembly/standalone.xml
index cbb862e..f6a3641 100644
--- a/gremlin-server/src/assembly/standalone.xml
+++ b/gremlin-server/src/assembly/standalone.xml
@@ -38,9 +38,6 @@ limitations under the License.
         <fileSet>
             <directory>scripts</directory>
             <outputDirectory>/scripts</outputDirectory>
-            <excludes>
-                <exclude>generate-all.groovy</exclude>
-            </excludes>
         </fileSet>
         <fileSet>
             <directory>../target/docs/htmlsingle</directory>

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d116ad5c/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/driver/remote/RemoteGraphProvider.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/driver/remote/RemoteGraphProvider.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/driver/remote/RemoteGraphProvider.java
index 2c81078..8a1413a 100644
--- a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/driver/remote/RemoteGraphProvider.java
+++ b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/driver/remote/RemoteGraphProvider.java
@@ -122,7 +122,7 @@ public class RemoteGraphProvider extends AbstractGraphProvider implements AutoCl
     }
 
     public static void startServer() throws Exception {
-        final InputStream stream = RemoteGraphProvider.class.getResourceAsStream("gremlin-server-integration.yaml");
+        final InputStream stream = GremlinServer.class.getResourceAsStream("gremlin-server-integration.yaml");
         final Settings settings = Settings.read(stream);
         ServerTestHelper.rewritePathsInGremlinServerSettings(settings);
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d116ad5c/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinResultSetIntegrateTest.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinResultSetIntegrateTest.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinResultSetIntegrateTest.java
index d890b85..81d51df 100644
--- a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinResultSetIntegrateTest.java
+++ b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinResultSetIntegrateTest.java
@@ -69,12 +69,6 @@ public class GremlinResultSetIntegrateTest extends AbstractGremlinServerIntegrat
     private Cluster cluster;
     private Client client;
 
-    @Override
-    public Settings overrideSettings(final Settings settings) {
-        settings.scriptEngines.get("gremlin-groovy").scripts = Collections.singletonList("scripts/generate-modern.groovy");
-        return settings;
-    }
-
     @Before
     public void beforeTest() {
         final MessageSerializer serializer = new GryoMessageSerializerV1d0();
@@ -96,7 +90,7 @@ public class GremlinResultSetIntegrateTest extends AbstractGremlinServerIntegrat
     public void shouldHandleVertexResultFromTraversalBulked() throws Exception {
         final Graph graph = TinkerGraph.open();
         final GraphTraversalSource g = graph.traversal();
-        final Client aliased = client.alias("g");
+        final Client aliased = client.alias("gmodern");
         final ResultSet resultSetUnrolled = aliased.submit(g.V().both().barrier().both().barrier());
         final List<Result> results = resultSetUnrolled.all().get();
 
@@ -106,25 +100,25 @@ public class GremlinResultSetIntegrateTest extends AbstractGremlinServerIntegrat
 
     @Test
     public void shouldHandleNullResult() throws Exception {
-        final ResultSet results = client.submit("g.V().drop().iterate();null");
+        final ResultSet results = client.submit("gmodern.V().drop().iterate();null");
         assertNull(results.all().get().get(0).getObject());
     }
 
     @Test
     public void shouldHandleVoidResult() throws Exception {
-        final ResultSet results = client.submit("g.V().drop().iterate()");
+        final ResultSet results = client.submit("gmodern.V().drop().iterate()");
         assertEquals(0, results.all().get().size());
     }
 
     @Test
     public void shouldHandleEmptyResult() throws Exception {
-        final ResultSet results = client.submit("g.V(100,1000,1000)");
+        final ResultSet results = client.submit("gmodern.V(100,1000,1000)");
         assertEquals(0, results.all().get().size());
     }
 
     @Test
     public void shouldHandleVertexResult() throws Exception {
-        final ResultSet results = client.submit("g.V(1).next()");
+        final ResultSet results = client.submit("gmodern.V(1).next()");
         final Vertex v = results.all().get().get(0).getVertex();
         assertThat(v, instanceOf(DetachedVertex.class));
 
@@ -143,46 +137,46 @@ public class GremlinResultSetIntegrateTest extends AbstractGremlinServerIntegrat
     public void shouldHandleVertexResultWithLiteSerialization() throws Exception {
         final Cluster cluster = TestClientFactory.build().serializer(Serializers.GRYO_LITE_V1D0).create();
         final Client clientLite = cluster.connect();
-        final ResultSet results = clientLite.submit("g.V(1).next()");
+        final ResultSet results = clientLite.submit("gmodern.V(1).next()");
         final Vertex v = results.all().get().get(0).getVertex();
         assertThat(v, instanceOf(ReferenceVertex.class));
 
-        assertEquals(1L, v.id());
+        assertEquals(1, v.id());
         assertEquals("person", v.label());
         assertEquals(0, IteratorUtils.count(v.properties()));
     }
 
     @Test
     public void shouldHandleVertexPropertyResult() throws Exception {
-        final ResultSet results = client.submit("g.V().properties('name').next()");
+        final ResultSet results = client.submit("gmodern.V().properties('name').next()");
         final VertexProperty<String> v = results.all().get().get(0).getVertexProperty();
         assertThat(v, instanceOf(DetachedVertexProperty.class));
     }
 
     @Test
     public void shouldHandleEdgeResult() throws Exception {
-        final ResultSet results = client.submit("g.E().next()");
+        final ResultSet results = client.submit("gmodern.E().next()");
         final Edge e = results.all().get().get(0).getEdge();
         assertThat(e, instanceOf(DetachedEdge.class));
     }
 
     @Test
     public void shouldHandlePropertyResult() throws Exception {
-        final ResultSet results = client.submit("g.E().properties('weight').next()");
+        final ResultSet results = client.submit("gmodern.E().properties('weight').next()");
         final Property<Double> p = results.all().get().get(0).getProperty();
         assertThat(p, instanceOf(DetachedProperty.class));
     }
 
     @Test
     public void shouldHandlePathResult() throws Exception {
-        final ResultSet results = client.submit("g.V().out().path()");
+        final ResultSet results = client.submit("gmodern.V().out().path()");
         final Path p = results.all().get().get(0).getPath();
         assertThat(p, instanceOf(DetachedPath.class));
     }
 
     @Test
     public void shouldHandleTinkerGraphResult() throws Exception {
-        final ResultSet results = client.submit("graph");
+        final ResultSet results = client.submit("modern");
         final Graph graph = results.all().get().get(0).get(TinkerGraph.class);
 
         // test is "lossy for id" because TinkerGraph is configured by default to use the ANY id manager
@@ -193,7 +187,7 @@ public class GremlinResultSetIntegrateTest extends AbstractGremlinServerIntegrat
 
     @Test
     public void shouldHandleMapIteratedResult() throws Exception {
-        final ResultSet results = client.submit("g.V().groupCount().by(bothE().count())");
+        final ResultSet results = client.submit("gmodern.V().groupCount().by(bothE().count())");
         final List<Result> resultList = results.all().get();
         final Map m = resultList.get(0).get(HashMap.class);
         assertEquals(2, m.size());
@@ -203,7 +197,7 @@ public class GremlinResultSetIntegrateTest extends AbstractGremlinServerIntegrat
 
     @Test
     public void shouldHandleMapObjectResult() throws Exception {
-        final ResultSet results = client.submit("g.V().groupCount().by(bothE().count()).next()");
+        final ResultSet results = client.submit("gmodern.V().groupCount().by(bothE().count()).next()");
         final List<Result> resultList = results.all().get();
         assertEquals(2, resultList.size());
         final Map.Entry firstEntry = resultList.get(0).get(HashMap.Entry.class);

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d116ad5c/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerHttpIntegrateTest.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerHttpIntegrateTest.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerHttpIntegrateTest.java
index df7b734..1375521 100644
--- a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerHttpIntegrateTest.java
+++ b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerHttpIntegrateTest.java
@@ -70,12 +70,6 @@ public class GremlinServerHttpIntegrateTest extends AbstractGremlinServerIntegra
             case "should413OnPostWithResultTooLarge":
                 settings.maxContentLength = 31;
                 break;
-            case "should200OnGETWithGremlinQueryStringArgumentWithIteratorResult":
-            case "should200OnPOSTWithGremlinJsonEndcodedBodyWithIteratorResult":
-            case "should200OnPOSTWithGremlinJsonEndcodedBodyWithIteratorResultAndAliases":
-            case "should200OnGETWithGremlinQueryStringArgumentWithIteratorResultAndAliases":
-                settings.scriptEngines.get("gremlin-groovy").scripts = Collections.singletonList("scripts/generate-classic.groovy");
-                break;
             case "should200OnPOSTTransactionalGraph":
                 deleteDirectory(new File("/tmp/neo4j"));
                 settings.graphs.put("graph", "conf/neo4j-empty.properties");
@@ -354,7 +348,7 @@ public class GremlinServerHttpIntegrateTest extends AbstractGremlinServerIntegra
     @Test
     public void should200OnGETWithGremlinQueryStringArgumentWithIteratorResult() throws Exception {
         final CloseableHttpClient httpclient = HttpClients.createDefault();
-        final HttpGet httpget = new HttpGet(TestClientFactory.createURLString("?gremlin=g.V()"));
+        final HttpGet httpget = new HttpGet(TestClientFactory.createURLString("?gremlin=gclassic.V()"));
 
         try (final CloseableHttpResponse response = httpclient.execute(httpget)) {
             assertEquals(200, response.getStatusLine().getStatusCode());
@@ -369,7 +363,7 @@ public class GremlinServerHttpIntegrateTest extends AbstractGremlinServerIntegra
     public void should200OnGETWithGremlinQueryStringArgumentWithIteratorResultAndAliases() throws Exception {
         // we can remove this first test when rebindings are completely removed
         final CloseableHttpClient httpclientLegacy = HttpClients.createDefault();
-        final HttpGet httpgetLegacy = new HttpGet(TestClientFactory.createURLString("?gremlin=g1.V()&rebindings.g1=g"));
+        final HttpGet httpgetLegacy = new HttpGet(TestClientFactory.createURLString("?gremlin=g1.V()&rebindings.g1=gclassic"));
 
         try (final CloseableHttpResponse response = httpclientLegacy.execute(httpgetLegacy)) {
             assertEquals(200, response.getStatusLine().getStatusCode());
@@ -380,7 +374,7 @@ public class GremlinServerHttpIntegrateTest extends AbstractGremlinServerIntegra
         }
 
         final CloseableHttpClient httpclient = HttpClients.createDefault();
-        final HttpGet httpget = new HttpGet(TestClientFactory.createURLString("?gremlin=g1.V()&aliases.g1=g"));
+        final HttpGet httpget = new HttpGet(TestClientFactory.createURLString("?gremlin=g1.V()&aliases.g1=gclassic"));
 
         try (final CloseableHttpResponse response = httpclient.execute(httpget)) {
             assertEquals(200, response.getStatusLine().getStatusCode());
@@ -573,7 +567,7 @@ public class GremlinServerHttpIntegrateTest extends AbstractGremlinServerIntegra
         final CloseableHttpClient httpclient = HttpClients.createDefault();
         final HttpPost httppost = new HttpPost(TestClientFactory.createURLString());
         httppost.addHeader("Content-Type", "application/json");
-        httppost.setEntity(new StringEntity("{\"gremlin\":\"g.V()\"}", Consts.UTF_8));
+        httppost.setEntity(new StringEntity("{\"gremlin\":\"gclassic.V()\"}", Consts.UTF_8));
 
         try (final CloseableHttpResponse response = httpclient.execute(httppost)) {
             assertEquals(200, response.getStatusLine().getStatusCode());
@@ -613,7 +607,7 @@ public class GremlinServerHttpIntegrateTest extends AbstractGremlinServerIntegra
         final CloseableHttpClient httpclientLegacy = HttpClients.createDefault();
         final HttpPost httppostLegacy = new HttpPost(TestClientFactory.createURLString());
         httppostLegacy.addHeader("Content-Type", "application/json");
-        httppostLegacy.setEntity(new StringEntity("{\"gremlin\":\"g1.V()\",\"rebindings\":{\"g1\":\"g\"}}", Consts.UTF_8));
+        httppostLegacy.setEntity(new StringEntity("{\"gremlin\":\"g1.V()\",\"rebindings\":{\"g1\":\"gclassic\"}}", Consts.UTF_8));
 
         try (final CloseableHttpResponse response = httpclientLegacy.execute(httppostLegacy)) {
             assertEquals(200, response.getStatusLine().getStatusCode());
@@ -626,7 +620,7 @@ public class GremlinServerHttpIntegrateTest extends AbstractGremlinServerIntegra
         final CloseableHttpClient httpclient = HttpClients.createDefault();
         final HttpPost httppost = new HttpPost(TestClientFactory.createURLString());
         httppost.addHeader("Content-Type", "application/json");
-        httppost.setEntity(new StringEntity("{\"gremlin\":\"g1.V()\",\"aliases\":{\"g1\":\"g\"}}", Consts.UTF_8));
+        httppost.setEntity(new StringEntity("{\"gremlin\":\"g1.V()\",\"aliases\":{\"g1\":\"gclassic\"}}", Consts.UTF_8));
 
         try (final CloseableHttpResponse response = httpclient.execute(httppost)) {
             assertEquals(200, response.getStatusLine().getStatusCode());

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d116ad5c/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/ServerTestHelper.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/ServerTestHelper.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/ServerTestHelper.java
index e846673..41352a4 100644
--- a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/ServerTestHelper.java
+++ b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/ServerTestHelper.java
@@ -33,16 +33,17 @@ public class ServerTestHelper {
      */
     public static void rewritePathsInGremlinServerSettings(final Settings overridenSettings) {
         final String buildDir = System.getProperty("build.dir");
-        final String homeDir = buildDir.substring(0, buildDir.indexOf("gremlin-server") + "gremlin-server".length());
+        final String homeDir = buildDir.substring(0, buildDir.indexOf("gremlin-server") + "gremlin-server".length()) +
+                File.separator + "src" + File.separator + "test" + File.separator +"scripts";
 
         overridenSettings.scriptEngines.get("gremlin-groovy").scripts = overridenSettings.scriptEngines
                 .get("gremlin-groovy").scripts.stream()
-                .map(s -> new File(s).isAbsolute() ? s : homeDir + File.separator + s)
+                .map(s -> new File(s).isAbsolute() ? s : homeDir + s.substring(s.lastIndexOf(File.separator)))
                 .collect(Collectors.toList());
 
         overridenSettings.graphs = overridenSettings.graphs.entrySet().stream()
                 .map(kv -> {
-                    kv.setValue(homeDir + File.separator + kv.getValue());
+                    kv.setValue(homeDir + kv.getValue().substring(kv.getValue().lastIndexOf(File.separator)));
                     return kv;
                 }).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
     }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d116ad5c/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/util/DefaultGraphManagerTest.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/util/DefaultGraphManagerTest.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/util/DefaultGraphManagerTest.java
index 0841ffa..6c0e8b0 100644
--- a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/util/DefaultGraphManagerTest.java
+++ b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/util/DefaultGraphManagerTest.java
@@ -47,9 +47,14 @@ public class DefaultGraphManagerTest {
         final Set<String> graphNames = graphManager.getGraphNames();
 
         assertNotNull(graphNames);
-        assertEquals(1, graphNames.size());
-
-        assertEquals(graphNames.toArray()[0], "graph");
+        assertEquals(6, graphNames.size());
+
+        assertThat(graphNames.contains("graph"), is(true));
+        assertThat(graphNames.contains("classic"), is(true));
+        assertThat(graphNames.contains("modern"), is(true));
+        assertThat(graphNames.contains("crew"), is(true));
+        assertThat(graphNames.contains("sink"), is(true));
+        assertThat(graphNames.contains("grateful"), is(true));
         assertThat(graphManager.getGraph("graph"), instanceOf(TinkerGraph.class));
     }
 
@@ -60,9 +65,14 @@ public class DefaultGraphManagerTest {
         final Bindings bindings = graphManager.getAsBindings();
 
         assertNotNull(bindings);
-        assertEquals(1, bindings.size());
-        assertThat(bindings.get("graph"), instanceOf(TinkerGraph.class));
+        assertEquals(6, bindings.size());
         assertThat(bindings.containsKey("graph"), is(true));
+        assertThat(bindings.containsKey("classic"), is(true));
+        assertThat(bindings.containsKey("modern"), is(true));
+        assertThat(bindings.containsKey("crew"), is(true));
+        assertThat(bindings.containsKey("sink"), is(true));
+        assertThat(bindings.containsKey("grateful"), is(true));
+        assertThat(bindings.get("graph"), instanceOf(TinkerGraph.class));
     }
 
     @Test
@@ -84,8 +94,14 @@ public class DefaultGraphManagerTest {
 
         final Set<String> graphNames = graphManager.getGraphNames();
         assertNotNull(graphNames);
-        assertEquals(2, graphNames.size());
+        assertEquals(7, graphNames.size());
         assertThat(graphNames.contains("newGraph"), is(true));
+        assertThat(graphNames.contains("graph"), is(true));
+        assertThat(graphNames.contains("classic"), is(true));
+        assertThat(graphNames.contains("modern"), is(true));
+        assertThat(graphNames.contains("crew"), is(true));
+        assertThat(graphNames.contains("sink"), is(true));
+        assertThat(graphNames.contains("grateful"), is(true));
         assertThat(graphManager.getGraph("newGraph"), instanceOf(TinkerGraph.class));
     }
 
@@ -97,14 +113,14 @@ public class DefaultGraphManagerTest {
         graphManager.putGraph("newGraph", graph);
         final Set<String> graphNames = graphManager.getGraphNames();
         assertNotNull(graphNames);
-        assertEquals(2, graphNames.size());
+        assertEquals(7, graphNames.size());
         assertThat(graphNames.contains("newGraph"), is(true));
         assertThat(graphManager.getGraph("newGraph"), instanceOf(TinkerGraph.class));
 
         graphManager.removeGraph("newGraph");
 
         final Set<String> graphNames2 = graphManager.getGraphNames();
-        assertEquals(1, graphNames2.size());
+        assertEquals(6, graphNames2.size());
         assertThat(graphNames2.contains("newGraph"), is(false));
     }
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d116ad5c/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/driver/remote/gremlin-server-integration.yaml
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/driver/remote/gremlin-server-integration.yaml b/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/driver/remote/gremlin-server-integration.yaml
deleted file mode 100644
index 7b388aa..0000000
--- a/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/driver/remote/gremlin-server-integration.yaml
+++ /dev/null
@@ -1,56 +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.
-
-host: localhost
-port: 45940
-scriptEvaluationTimeout: 30000
-graphs: {
-  graph: conf/tinkergraph-empty.properties,
-  classic: conf/tinkergraph-empty.properties,
-  modern: conf/tinkergraph-empty.properties,
-  crew: conf/tinkergraph-empty.properties,
-  grateful: conf/tinkergraph-empty.properties,
-  sink: conf/tinkergraph-empty.properties}
-plugins:
-  - tinkerpop.tinkergraph
-scriptEngines: {
-  gremlin-groovy: {
-    imports: [java.lang.Math],
-    staticImports: [java.lang.Math.PI],
-    scripts: [scripts/generate-all.groovy]}}
-serializers:
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV1d0], custom: [groovy.json.JsonBuilder;org.apache.tinkerpop.gremlin.driver.ser.JsonBuilderGryoSerializer]}}
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoLiteMessageSerializerV1d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV1d0], custom: [groovy.json.JsonBuilder;org.apache.tinkerpop.gremlin.driver.ser.JsonBuilderGryoSerializer]}}
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { serializeResultToString: true}}
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV1d0] }}
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV2d0] }}
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV1d0] }}
-processors:
-  - { className: org.apache.tinkerpop.gremlin.server.op.session.SessionOpProcessor, config: { sessionTimeout: 28800000 }}
-metrics: {
-  slf4jReporter: {enabled: true, interval: 180000}}
-strictTransactionManagement: false
-idleConnectionTimeout: 0
-keepAliveInterval: 0
-maxInitialLineLength: 4096
-maxHeaderSize: 8192
-maxChunkSize: 8192
-maxContentLength: 65536
-maxAccumulationBufferComponents: 1024
-resultIterationBatchSize: 64
-writeBufferHighWaterMark: 32768
-writeBufferHighWaterMark: 65536

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d116ad5c/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-integration.yaml
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-integration.yaml b/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-integration.yaml
index 3b28020..dcb5299 100644
--- a/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-integration.yaml
+++ b/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-integration.yaml
@@ -19,14 +19,19 @@ host: localhost
 port: 45940
 scriptEvaluationTimeout: 30000
 graphs: {
-  graph: conf/tinkergraph-empty.properties}
+  graph: conf/tinkergraph-empty.properties,
+  classic: conf/tinkergraph-empty.properties,
+  modern: conf/tinkergraph-empty.properties,
+  crew: conf/tinkergraph-empty.properties,
+  grateful: conf/tinkergraph-empty.properties,
+  sink: conf/tinkergraph-empty.properties}
 plugins:
   - tinkerpop.tinkergraph
 scriptEngines: {
   gremlin-groovy: {
     imports: [java.lang.Math],
     staticImports: [java.lang.Math.PI],
-    scripts: [scripts/empty-sample.groovy]}}
+    scripts: [scripts/generate-all.groovy]}}
 serializers:
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV1d0], custom: [groovy.json.JsonBuilder;org.apache.tinkerpop.gremlin.driver.ser.JsonBuilderGryoSerializer]}}
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoLiteMessageSerializerV1d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV1d0], custom: [groovy.json.JsonBuilder;org.apache.tinkerpop.gremlin.driver.ser.JsonBuilderGryoSerializer]}}
@@ -48,4 +53,4 @@ maxContentLength: 65536
 maxAccumulationBufferComponents: 1024
 resultIterationBatchSize: 64
 writeBufferLowWaterMark: 32768
-writeBufferHighWaterMark: 65536
+writeBufferHighWaterMark: 65536
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d116ad5c/gremlin-server/src/test/scripts/generate-all.groovy
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/scripts/generate-all.groovy b/gremlin-server/src/test/scripts/generate-all.groovy
index 108ca5d..ee65bb4 100644
--- a/gremlin-server/src/test/scripts/generate-all.groovy
+++ b/gremlin-server/src/test/scripts/generate-all.groovy
@@ -17,6 +17,11 @@
  * under the License.
  */
 
+// An example of an initialization script that can be configured to run in Gremlin Server.
+// Functions defined here will go into global cache and will not be removed from there
+// unless there is a reset of the ScriptEngine.
+def addItUp(x, y) { x + y }
+
 // an init script that returns a Map allows explicit setting of global bindings.
 def globals = [:]
 
@@ -27,16 +32,38 @@ globals << [hook : [
     TinkerFactory.generateClassic(classic)
     TinkerFactory.generateModern(modern)
     TinkerFactory.generateTheCrew(crew)
+    TinkerFactory.generateGratefulDead(grateful)
     TinkerFactory.generateKitchenSink(sink)
-    grateful.io(gryo()).readGraph('data/grateful-dead.kryo')
+
+    // a wild bit of trickery here. the process tests use an INTEGER id manager when LoadGraphWith is used. this
+    // closure provides a way to to manually override the various id managers for TinkerGraph - the graph on which
+    // all of these remote tests are executed - so that the tests will pass nicely. an alternative might have been
+    // to have a special test TinkerGraph config for setting up the id manager properly, but based on how we do
+    // things now, that test config would have been mixed in with release artifacts and there would have been ugly
+    // exclusions to make packaging work properly.
+    allowSetOfIdManager = { graph, idManagerFieldName ->
+        java.lang.reflect.Field idManagerField = graph.class.getDeclaredField(idManagerFieldName)
+        idManagerField.setAccessible(true)
+        java.lang.reflect.Field modifiersField = java.lang.reflect.Field.class.getDeclaredField("modifiers")
+        modifiersField.setAccessible(true)
+        modifiersField.setInt(idManagerField, modifiersField.getModifiers() & ~java.lang.reflect.Modifier.FINAL)
+
+        idManagerField.set(graph, TinkerGraph.DefaultIdManager.INTEGER)
+    }
+
+    [classic, modern, crew, sink, grateful].each{
+      allowSetOfIdManager(it, "vertexIdManager")
+      allowSetOfIdManager(it, "edgeIdManager")
+      allowSetOfIdManager(it, "vertexPropertyIdManager")
+    }
   }
 ] as LifeCycleHook]
 
 // add default TraversalSource instances for each graph instance
 globals << [gclassic : classic.traversal()]
 globals << [gmodern : modern.traversal()]
+globals << [g : graph.traversal()]
 globals << [gcrew : crew.traversal()]
 globals << [ggraph : graph.traversal()]
-globals << [g : modern.traversal()]
 globals << [ggrateful : grateful.traversal()]
 globals << [gsink : sink.traversal()]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d116ad5c/gremlin-server/src/test/scripts/neo4j-empty.properties
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/scripts/neo4j-empty.properties b/gremlin-server/src/test/scripts/neo4j-empty.properties
new file mode 100644
index 0000000..0ea551b
--- /dev/null
+++ b/gremlin-server/src/test/scripts/neo4j-empty.properties
@@ -0,0 +1,33 @@
+# 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.
+
+# This is a sample configuration file for Neo4j.  Note that
+# TinkerPop does not include Neo4j dependencies in its
+# distributions.  To use this file, please ensure that Neo4j
+# dependencies are installed into Gremlin Server's path
+# with:
+#
+# gremlin-server.sh -i org.apache.tinkerpop neo4j-gremlin 3.y.z
+#
+# Note that unless under a commercial agreement with Neo Technology,
+# Neo4j is licensed AGPL.
+
+
+gremlin.graph=org.apache.tinkerpop.gremlin.neo4j.structure.Neo4jGraph
+gremlin.neo4j.directory=/tmp/neo4j
+gremlin.neo4j.conf.node_auto_indexing=true
+gremlin.neo4j.conf.relationship_auto_indexing=true
\ No newline at end of file