You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by dk...@apache.org on 2015/05/11 13:43:32 UTC

[01/50] [abbrv] incubator-tinkerpop git commit: simplified the WhereStep code a bit.

Repository: incubator-tinkerpop
Updated Branches:
  refs/heads/TINKERPOP3-666 bbb6345a7 -> c20a91906


simplified the WhereStep code a bit.


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

Branch: refs/heads/TINKERPOP3-666
Commit: caabdb1084f902c5a5f535b7a4d343efdda7217f
Parents: fe1bae3
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Thu May 7 15:56:54 2015 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Thu May 7 15:56:54 2015 -0600

----------------------------------------------------------------------
 .../traversal/step/filter/WhereStep.java        | 53 ++++++++------------
 1 file changed, 20 insertions(+), 33 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/caabdb10/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/WhereStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/WhereStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/WhereStep.java
index 5835bb1..54d6af2 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/WhereStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/WhereStep.java
@@ -96,23 +96,8 @@ public final class WhereStep<S> extends FilterStep<S> implements TraversalParent
                     throw new IllegalArgumentException("The provided key is not in the current map: " + this.firstKey);
                 if (null != this.secondKey && !map.containsKey(this.secondKey))
                     throw new IllegalArgumentException("The provided key is not in the current map: " + this.secondKey);
-                final Object endObject = null == this.secondKey ? null : map.get(this.secondKey);
-                //
-                this.traversalConstraint.addStart(this.getTraversal().asAdmin().getTraverserGenerator().generate(startObject, this.traversalConstraint.getStartStep(), traverser.bulk()));
-                if (null == endObject) {
-                    if (this.traversalConstraint.hasNext()) {
-                        this.traversalConstraint.reset();
-                        return true;
-                    }
-                } else {
-                    while (this.traversalConstraint.hasNext()) {
-                        if (this.traversalConstraint.next().equals(endObject)) {
-                            this.traversalConstraint.reset();
-                            return true;
-                        }
-                    }
-                }
-                return false;
+                return this.testTraversalConstraint(traverser, startObject, null == this.secondKey ? null : map.get(this.secondKey));
+
             }
         } else {
             final Path path = traverser.path();
@@ -131,25 +116,27 @@ public final class WhereStep<S> extends FilterStep<S> implements TraversalParent
                     throw new IllegalArgumentException("The provided label is not in the current path: " + this.firstKey);
                 if (null != this.secondKey && !path.hasLabel(this.secondKey))
                     throw new IllegalArgumentException("The provided label is not in the current path: " + this.secondKey);
-                final Object endObject = null == this.secondKey ? null : path.get(this.secondKey);
-                //
-                this.traversalConstraint.addStart(this.getTraversal().asAdmin().getTraverserGenerator().generate(startObject, this.traversalConstraint.getStartStep(), traverser.bulk()));
-                if (null == endObject) {
-                    if (this.traversalConstraint.hasNext()) {
-                        this.traversalConstraint.reset();
-                        return true;
-                    }
-                } else {
-                    while (this.traversalConstraint.hasNext()) {
-                        if (this.traversalConstraint.next().equals(endObject)) {
-                            this.traversalConstraint.reset();
-                            return true;
-                        }
-                    }
+                return this.testTraversalConstraint(traverser, startObject, null == this.secondKey ? null : path.get(this.secondKey));
+            }
+        }
+    }
+
+    private boolean testTraversalConstraint(final Traverser traverser, final Object start, final Object end) {
+        this.traversalConstraint.addStart(this.getTraversal().asAdmin().getTraverserGenerator().generate(start, this.traversalConstraint.getStartStep(), traverser.bulk()));
+        if (null == end) {
+            if (this.traversalConstraint.hasNext()) {
+                this.traversalConstraint.reset();
+                return true;
+            }
+        } else {
+            while (this.traversalConstraint.hasNext()) {
+                if (this.traversalConstraint.next().equals(end)) {
+                    this.traversalConstraint.reset();
+                    return true;
                 }
-                return false;
             }
         }
+        return false;
     }
 
     @Override


[45/50] [abbrv] incubator-tinkerpop git commit: Updated CHANGELOG, finalized some classes that are just static method givers. Moved ScriptEngineLambda to gremlin.function.

Posted by dk...@apache.org.
Updated CHANGELOG, finalized some classes that are just static method givers. Moved ScriptEngineLambda to gremlin.function.


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

Branch: refs/heads/TINKERPOP3-666
Commit: 8a7118554b2889079a2288e1e17070029799426e
Parents: 97e4677
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Sat May 9 14:51:39 2015 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Sat May 9 14:51:39 2015 -0600

----------------------------------------------------------------------
 CHANGELOG.asciidoc                              |   4 +-
 .../computer/util/ScriptEngineCache.java        |  47 ------
 .../traversal/util/TraversalScriptFunction.java |   2 +-
 .../apache/tinkerpop/gremlin/util/Gremlin.java  |   3 +
 .../gremlin/util/ScriptEngineCache.java         |  47 ++++++
 .../tinkerpop/gremlin/util/Serializer.java      |   5 +-
 .../apache/tinkerpop/gremlin/util/TimeUtil.java |   4 +
 .../util/function/ScriptEngineLambda.java       |   2 +-
 .../computer/util/ScriptEngineLambdaTest.java   | 163 -------------------
 .../util/function/ScriptEngineLambdaTest.java   | 163 +++++++++++++++++++
 10 files changed, 226 insertions(+), 214 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/8a711855/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index ecfa23c..85e9cce 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -25,7 +25,9 @@ image::http://www.tinkerpop.com/docs/current/images/gremlin-hindu.png[width=225]
 TinkerPop 3.0.0.M9 (NOT OFFICIALLY RELEASED YET)
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-* `VertexProgram` and `MapReduce` now add a `Graph` parameter to `loadState(Graph,Configuration)`.
+* Added `TraversalScriptHelper` with static methods for dynamically creating a `Traversal` from a JSR 223 `ScriptEngine`.
+* Simplified the Gremlin-Groovy test suite where there is now no distinction between `STANDARD` and `COMPUTER` tests.
+* `VertexProgram` and `MapReduce` now add a `Graph` parameter to `loadState(Graph, Configuration)`.
 * Added `ScopingStrategy` which auto-scopes `select()` and `where()` so the language looks clean.
 * Added `Scoping` as a marker interface to state that a step desires a particular `Scope`.
 * `SelectStep`, `SelectOneStep`, and `WhereStep` support both `Scope.local` and `Scope.global` for `Map<String,Object>` or `Path` analysis, respectively.

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/8a711855/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/ScriptEngineCache.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/ScriptEngineCache.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/ScriptEngineCache.java
deleted file mode 100644
index 4cbebf7..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/ScriptEngineCache.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tinkerpop.gremlin.process.computer.util;
-
-import javax.script.ScriptEngine;
-import javax.script.ScriptEngineManager;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-
-/**
- * @author Daniel Kuppitz (http://gremlin.guru)
- */
-public final class ScriptEngineCache {
-
-    public final static String DEFAULT_SCRIPT_ENGINE = "gremlin-groovy";
-
-    private final static ScriptEngineManager SCRIPT_ENGINE_MANAGER = new ScriptEngineManager();
-    private final static Map<String, ScriptEngine> CACHED_ENGINES = new ConcurrentHashMap<>();
-
-    public static ScriptEngine get(final String engineName) {
-        return CACHED_ENGINES.compute(engineName, (key, engine) -> {
-            if (null == engine) {
-                engine = SCRIPT_ENGINE_MANAGER.getEngineByName(engineName);
-                if (null == engine) {
-                    throw new IllegalArgumentException("There is no script engine with provided name: " + engineName);
-                }
-            }
-            return engine;
-        });
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/8a711855/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalScriptFunction.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalScriptFunction.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalScriptFunction.java
index 73337ef..6d67b0b 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalScriptFunction.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalScriptFunction.java
@@ -18,7 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.util;
 
-import org.apache.tinkerpop.gremlin.process.computer.util.ScriptEngineCache;
+import org.apache.tinkerpop.gremlin.util.ScriptEngineCache;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalSource;
 import org.apache.tinkerpop.gremlin.structure.Graph;

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/8a711855/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/Gremlin.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/Gremlin.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/Gremlin.java
index 26f9919..2d4a720 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/Gremlin.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/Gremlin.java
@@ -32,6 +32,9 @@ public final class Gremlin {
         version = Manifests.read("version");
     }
 
+    private Gremlin() {
+    }
+
     public static String version() {
         return version;
     }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/8a711855/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/ScriptEngineCache.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/ScriptEngineCache.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/ScriptEngineCache.java
new file mode 100644
index 0000000..8092992
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/ScriptEngineCache.java
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.util;
+
+import javax.script.ScriptEngine;
+import javax.script.ScriptEngineManager;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * @author Daniel Kuppitz (http://gremlin.guru)
+ */
+public final class ScriptEngineCache {
+
+    public final static String DEFAULT_SCRIPT_ENGINE = "gremlin-groovy";
+
+    private final static ScriptEngineManager SCRIPT_ENGINE_MANAGER = new ScriptEngineManager();
+    private final static Map<String, ScriptEngine> CACHED_ENGINES = new ConcurrentHashMap<>();
+
+    public static ScriptEngine get(final String engineName) {
+        return CACHED_ENGINES.compute(engineName, (key, engine) -> {
+            if (null == engine) {
+                engine = SCRIPT_ENGINE_MANAGER.getEngineByName(engineName);
+                if (null == engine) {
+                    throw new IllegalArgumentException("There is no script engine with provided name: " + engineName);
+                }
+            }
+            return engine;
+        });
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/8a711855/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/Serializer.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/Serializer.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/Serializer.java
index 22dba7a..28bab16 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/Serializer.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/Serializer.java
@@ -27,7 +27,10 @@ import java.io.ObjectOutputStream;
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public class Serializer {
+public final class Serializer {
+
+    private Serializer() {
+    }
 
     public static byte[] serializeObject(final Object object) throws IOException {
         final ByteArrayOutputStream outputStream = new ByteArrayOutputStream();

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/8a711855/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/TimeUtil.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/TimeUtil.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/TimeUtil.java
index 1b0a8e3..22a46c5 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/TimeUtil.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/TimeUtil.java
@@ -26,6 +26,10 @@ import java.util.stream.IntStream;
  * @author Daniel Kuppitz (http://gremlin.guru)
  */
 public final class TimeUtil {
+
+    private TimeUtil() {
+    }
+
     public static long secondsSince(final long startNanos) {
         return timeSince(startNanos, TimeUnit.SECONDS);
     }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/8a711855/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/function/ScriptEngineLambda.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/function/ScriptEngineLambda.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/function/ScriptEngineLambda.java
index cafba62..20a622c 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/function/ScriptEngineLambda.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/function/ScriptEngineLambda.java
@@ -18,7 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.util.function;
 
-import org.apache.tinkerpop.gremlin.process.computer.util.ScriptEngineCache;
+import org.apache.tinkerpop.gremlin.util.ScriptEngineCache;
 
 import javax.script.Bindings;
 import javax.script.ScriptEngine;

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/8a711855/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/process/computer/util/ScriptEngineLambdaTest.java
----------------------------------------------------------------------
diff --git a/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/process/computer/util/ScriptEngineLambdaTest.java b/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/process/computer/util/ScriptEngineLambdaTest.java
deleted file mode 100644
index b0fb5de..0000000
--- a/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/process/computer/util/ScriptEngineLambdaTest.java
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tinkerpop.gremlin.process.computer.util;
-
-import org.apache.tinkerpop.gremlin.util.function.ScriptEngineLambda;
-import org.junit.AfterClass;
-import org.junit.Test;
-
-import javax.script.Bindings;
-import javax.script.ScriptContext;
-import javax.script.ScriptEngine;
-import java.util.HashSet;
-import java.util.Set;
-
-import static org.junit.Assert.*;
-
-/**
- * @author Matt Frantz (matthew.h.frantz+tinkerpop@gmail.com)
- */
-public class ScriptEngineLambdaTest {
-
-    private final static String GROOVY_SCRIPT_ENGINE_NAME = "Groovy";
-
-    // Function.apply
-
-    @Test
-    public void simpleFunctionWorks() {
-        final ScriptEngineLambda lambda = newGroovyLambda("a + 2");
-        assertEquals(lambda.apply(5), 7);
-        assertEquals(lambda.apply("foo"), "foo2");
-    }
-
-    // Supplier.get
-
-    @Test
-    public void simpleSupplierWorks() {
-        final ScriptEngineLambda lambda = newGroovyLambda("System.currentTimeMillis()");
-        assertNotEquals(lambda.get(), 0);
-    }
-
-    // Consumer.accept
-
-    @Test
-    public void simpleConsumerWorks() {
-        final Set set = pokeSet();
-        final ScriptEngineLambda lambda = newGroovyLambda("set.add(a)");
-
-        lambda.accept(1);
-        lambda.accept(2);
-        lambda.accept(3);
-
-        assertEquals(set.size(), 3);
-    }
-
-    // BiConsumer.accept
-
-    @Test
-    public void simpleBiConsumerWorks() {
-        final Set set = pokeSet();
-        final ScriptEngineLambda lambda = newGroovyLambda("set.add([a, b])");
-
-        lambda.accept(1, 2);
-        lambda.accept(2, 3);
-        lambda.accept(3, 4);
-
-        assertEquals(set.size(), 3);
-    }
-
-    // TriConsumer.accept
-
-    @Test
-    public void simpleTriConsumerWorks() {
-        final Set set = pokeSet();
-        final ScriptEngineLambda lambda = newGroovyLambda("set.add([a, b, c])");
-
-        lambda.accept(1, 2, 3);
-        lambda.accept(2, 3, 4);
-        lambda.accept(3, 4, 5);
-
-        assertEquals(set.size(), 3);
-    }
-
-    // Predicate.test
-
-    @Test
-    public void trivialGroovyPredicateWorks() {
-        final ScriptEngineLambda lambda = newGroovyLambda("true");
-        assertTrue(lambda.test("foo"));
-    }
-
-    @Test
-    public void oneArgGroovyPredicateWorks() {
-        final ScriptEngineLambda lambda = newGroovyLambda("a < 100");
-        assertTrue(lambda.test(0));
-        assertTrue(lambda.test(99));
-        assertFalse(lambda.test(100));
-    }
-
-    @Test
-    public void trivialGroovyFunctionWorks() {
-        final ScriptEngineLambda lambda = newGroovyLambda("2 + 2");
-        assertEquals(lambda.apply("foo"), 4);
-    }
-
-    @Test
-    public void oneArgGroovyFunctionWorks() {
-        final ScriptEngineLambda lambda = newGroovyLambda("a + 2");
-        assertEquals(lambda.apply(3), 5);
-        assertEquals(lambda.apply(10), 12);
-        assertEquals(lambda.apply("foo"), "foo2");
-    }
-
-    @AfterClass
-    public static void clearScriptEngineCache() {
-        ScriptEngineCache.get(GROOVY_SCRIPT_ENGINE_NAME).getBindings(ScriptContext.GLOBAL_SCOPE).clear();
-    }
-
-
-    // Utilities
-
-    /**
-     * Bind a set named "set" in the Groovy engine.
-     */
-    private static Set pokeSet() {
-        final ScriptEngine engine = getEngine();
-        final Bindings bindings = engine.createBindings();
-        final Set set = new HashSet();
-        bindings.put("set", set);
-        // Set the global bindings (since ScriptEngineLambda sets the engine bindings on each invocation).
-        engine.setBindings(bindings, ScriptContext.GLOBAL_SCOPE);
-        return set;
-    }
-
-    /**
-     * Return the engine used by ScriptEngineLambda in these tests.
-     */
-    private static ScriptEngine getEngine() {
-        return ScriptEngineCache.get(GROOVY_SCRIPT_ENGINE_NAME);
-    }
-
-    /**
-     * Create a ScriptEngineLambda that will accept Groovy.
-     */
-    private static ScriptEngineLambda newGroovyLambda(String groovy) {
-        return new ScriptEngineLambda(GROOVY_SCRIPT_ENGINE_NAME, groovy);
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/8a711855/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/util/function/ScriptEngineLambdaTest.java
----------------------------------------------------------------------
diff --git a/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/util/function/ScriptEngineLambdaTest.java b/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/util/function/ScriptEngineLambdaTest.java
new file mode 100644
index 0000000..5b5b616
--- /dev/null
+++ b/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/util/function/ScriptEngineLambdaTest.java
@@ -0,0 +1,163 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.util.function;
+
+import org.apache.tinkerpop.gremlin.util.ScriptEngineCache;
+import org.junit.AfterClass;
+import org.junit.Test;
+
+import javax.script.Bindings;
+import javax.script.ScriptContext;
+import javax.script.ScriptEngine;
+import java.util.HashSet;
+import java.util.Set;
+
+import static org.junit.Assert.*;
+
+/**
+ * @author Matt Frantz (matthew.h.frantz+tinkerpop@gmail.com)
+ */
+public class ScriptEngineLambdaTest {
+
+    private final static String GROOVY_SCRIPT_ENGINE_NAME = "Groovy";
+
+    // Function.apply
+
+    @Test
+    public void simpleFunctionWorks() {
+        final ScriptEngineLambda lambda = newGroovyLambda("a + 2");
+        assertEquals(lambda.apply(5), 7);
+        assertEquals(lambda.apply("foo"), "foo2");
+    }
+
+    // Supplier.get
+
+    @Test
+    public void simpleSupplierWorks() {
+        final ScriptEngineLambda lambda = newGroovyLambda("System.currentTimeMillis()");
+        assertNotEquals(lambda.get(), 0);
+    }
+
+    // Consumer.accept
+
+    @Test
+    public void simpleConsumerWorks() {
+        final Set set = pokeSet();
+        final ScriptEngineLambda lambda = newGroovyLambda("set.add(a)");
+
+        lambda.accept(1);
+        lambda.accept(2);
+        lambda.accept(3);
+
+        assertEquals(set.size(), 3);
+    }
+
+    // BiConsumer.accept
+
+    @Test
+    public void simpleBiConsumerWorks() {
+        final Set set = pokeSet();
+        final ScriptEngineLambda lambda = newGroovyLambda("set.add([a, b])");
+
+        lambda.accept(1, 2);
+        lambda.accept(2, 3);
+        lambda.accept(3, 4);
+
+        assertEquals(set.size(), 3);
+    }
+
+    // TriConsumer.accept
+
+    @Test
+    public void simpleTriConsumerWorks() {
+        final Set set = pokeSet();
+        final ScriptEngineLambda lambda = newGroovyLambda("set.add([a, b, c])");
+
+        lambda.accept(1, 2, 3);
+        lambda.accept(2, 3, 4);
+        lambda.accept(3, 4, 5);
+
+        assertEquals(set.size(), 3);
+    }
+
+    // Predicate.test
+
+    @Test
+    public void trivialGroovyPredicateWorks() {
+        final ScriptEngineLambda lambda = newGroovyLambda("true");
+        assertTrue(lambda.test("foo"));
+    }
+
+    @Test
+    public void oneArgGroovyPredicateWorks() {
+        final ScriptEngineLambda lambda = newGroovyLambda("a < 100");
+        assertTrue(lambda.test(0));
+        assertTrue(lambda.test(99));
+        assertFalse(lambda.test(100));
+    }
+
+    @Test
+    public void trivialGroovyFunctionWorks() {
+        final ScriptEngineLambda lambda = newGroovyLambda("2 + 2");
+        assertEquals(lambda.apply("foo"), 4);
+    }
+
+    @Test
+    public void oneArgGroovyFunctionWorks() {
+        final ScriptEngineLambda lambda = newGroovyLambda("a + 2");
+        assertEquals(lambda.apply(3), 5);
+        assertEquals(lambda.apply(10), 12);
+        assertEquals(lambda.apply("foo"), "foo2");
+    }
+
+    @AfterClass
+    public static void clearScriptEngineCache() {
+        ScriptEngineCache.get(GROOVY_SCRIPT_ENGINE_NAME).getBindings(ScriptContext.GLOBAL_SCOPE).clear();
+    }
+
+
+    // Utilities
+
+    /**
+     * Bind a set named "set" in the Groovy engine.
+     */
+    private static Set pokeSet() {
+        final ScriptEngine engine = getEngine();
+        final Bindings bindings = engine.createBindings();
+        final Set set = new HashSet();
+        bindings.put("set", set);
+        // Set the global bindings (since ScriptEngineLambda sets the engine bindings on each invocation).
+        engine.setBindings(bindings, ScriptContext.GLOBAL_SCOPE);
+        return set;
+    }
+
+    /**
+     * Return the engine used by ScriptEngineLambda in these tests.
+     */
+    private static ScriptEngine getEngine() {
+        return ScriptEngineCache.get(GROOVY_SCRIPT_ENGINE_NAME);
+    }
+
+    /**
+     * Create a ScriptEngineLambda that will accept Groovy.
+     */
+    private static ScriptEngineLambda newGroovyLambda(String groovy) {
+        return new ScriptEngineLambda(GROOVY_SCRIPT_ENGINE_NAME, groovy);
+    }
+}


[16/50] [abbrv] incubator-tinkerpop git commit: Fixed bug in traversal in test - not written as expected.

Posted by dk...@apache.org.
Fixed bug in traversal in test - not written as expected.


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

Branch: refs/heads/TINKERPOP3-666
Commit: 083afee0c91228823b5e0970be24647152297366
Parents: f919ad2
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri May 8 11:41:29 2015 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri May 8 11:41:29 2015 -0400

----------------------------------------------------------------------
 .../gremlin/process/traversal/step/branch/GroovyLocalTest.groovy   | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/083afee0/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyLocalTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyLocalTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyLocalTest.groovy
index a929cd3..d698403 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyLocalTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyLocalTest.groovy
@@ -78,7 +78,7 @@ public abstract class GroovyLocalTest {
 
         @Override
         public Traversal<Vertex, String> get_g_VX4X_localXbothE_limitX2XX_otherV_name(final Object v4Id) {
-            g.V(v4Id).local(__.bothE.limit(2).otherV).name
+            g.V(v4Id).local(__.bothE.limit(2)).otherV.name
         }
 
         @Override


[30/50] [abbrv] incubator-tinkerpop git commit: fixed the same bug we had for has() for is().

Posted by dk...@apache.org.
fixed the same bug we had for has() for  is().


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

Branch: refs/heads/TINKERPOP3-666
Commit: 41f78164f8f4bd8941a7e2abd9eb96daace946ca
Parents: ab407da
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Fri May 8 15:24:41 2015 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Fri May 8 15:24:41 2015 -0600

----------------------------------------------------------------------
 .../gremlin/process/traversal/dsl/graph/GraphTraversal.java    | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/41f78164/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
index 4b866aa..48a8a0a 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
@@ -537,7 +537,11 @@ public interface GraphTraversal<S, E> extends Traversal<S, E> {
     }
 
     public default GraphTraversal<S, E> is(final Object value) {
-        return this.is(value instanceof P ? (P<E>) value : P.eq((E) value), new P[0]);
+        if (value instanceof P[]) {
+            final Pair<P, P[]> split = P.splitForAPI((P[]) value);
+            return this.is(split.getValue0(), split.getValue1());
+        } else
+            return this.is(value instanceof P ? (P<E>) value : P.eq((E) value), new P[0]);
     }
 
     public default GraphTraversal<S, E> coin(final double probability) {


[23/50] [abbrv] incubator-tinkerpop git commit: Add a parallelism setting to size the threadpool that sends out messages over a client.

Posted by dk...@apache.org.
Add a parallelism setting to size the threadpool that sends out messages over a client.


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

Branch: refs/heads/TINKERPOP3-666
Commit: da1bf8c1c4a96033285cce391804babac45ef0a3
Parents: 8f798f5
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri May 8 14:58:52 2015 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri May 8 14:58:52 2015 -0400

----------------------------------------------------------------------
 .../driver/util/ProfilingApplication.java       | 20 ++++++++++++++------
 1 file changed, 14 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/da1bf8c1/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/util/ProfilingApplication.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/util/ProfilingApplication.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/util/ProfilingApplication.java
index fc2c6ef..bda2584 100644
--- a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/util/ProfilingApplication.java
+++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/util/ProfilingApplication.java
@@ -18,6 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.driver.util;
 
+import org.apache.commons.lang3.concurrent.BasicThreadFactory;
 import org.apache.tinkerpop.gremlin.driver.Client;
 import org.apache.tinkerpop.gremlin.driver.Cluster;
 import org.apache.tinkerpop.gremlin.structure.util.ElementHelper;
@@ -31,6 +32,7 @@ import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.CyclicBarrier;
+import java.util.concurrent.Executor;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.TimeUnit;
@@ -50,13 +52,14 @@ public class ProfilingApplication {
     private final int clients;
     private final String executionName;
 
-    private static final ExecutorService executor = Executors.newFixedThreadPool(8);
+    private final ExecutorService executor;
 
-    public ProfilingApplication(final String executionName, final Cluster cluster, final int clients, final int requests) {
+    public ProfilingApplication(final String executionName, final Cluster cluster, final int clients, final int requests, final ExecutorService executor) {
         this.executionName = executionName;
         this.cluster = cluster;
         this.clients = clients;
         this.requests = requests;
+        this.executor = executor;
     }
 
     public long execute() throws Exception {
@@ -133,6 +136,9 @@ public class ProfilingApplication {
     public static void main(final String[] args) {
         final Map<String,Object> options = ElementHelper.asMap(args);
         final boolean noExit = Boolean.parseBoolean(options.getOrDefault("noExit", "false").toString());
+        final int parallelism = Integer.parseInt(options.getOrDefault("parallelism", "4").toString());
+        final BasicThreadFactory threadFactory = new BasicThreadFactory.Builder().namingPattern("profiler-%d").build();
+        final ExecutorService executor = Executors.newFixedThreadPool(parallelism, threadFactory);
 
         try {
             final String host = options.getOrDefault("host", "localhost").toString();
@@ -164,7 +170,7 @@ public class ProfilingApplication {
             final File f = null == fileName ? null : new File(fileName.toString());
             if (f != null && f.length() == 0) {
                 try (final PrintWriter writer = new PrintWriter(new BufferedWriter(new FileWriter(f, true)))) {
-                    writer.println("clients\tminConnectionPoolSize\tmaxConnectionPoolSize\tmaxSimultaneousUsagePerConnection\tmaxInProcessPerConnection\tworkerPoolSize\trequestPerSecond");
+                    writer.println("clients\tminConnectionPoolSize\tmaxConnectionPoolSize\tminSimultaneousUsagePerConnection\tmaxSimultaneousUsagePerConnection\tminInProcessPerConnection\tmaxInProcessPerConnection\tworkerPoolSize\trequestPerSecond");
                 }
             }
 
@@ -172,7 +178,7 @@ public class ProfilingApplication {
             final AtomicBoolean meetsRpsExpectation = new AtomicBoolean(true);
             System.out.println("---------------------------WARMUP CYCLE---------------------------");
             for (int ix = 0; ix < warmups && meetsRpsExpectation.get(); ix++) {
-                final long averageRequestsPerSecond = new ProfilingApplication("warmup-" + (ix + 1), cluster, clients, 1000).execute();
+                final long averageRequestsPerSecond = new ProfilingApplication("warmup-" + (ix + 1), cluster, clients, 1000, executor).execute();
                 meetsRpsExpectation.set(averageRequestsPerSecond > minExpectedRps);
                 TimeUnit.SECONDS.sleep(1); // pause between executions
             }
@@ -185,7 +191,7 @@ public class ProfilingApplication {
                 final long start = System.nanoTime();
                 System.out.println("----------------------------TEST CYCLE----------------------------");
                 for (int ix = 0; ix < executions && !exceededTimeout.get(); ix++) {
-                    totalRequestsPerSecond += new ProfilingApplication("test-" + (ix + 1), cluster, clients, requests).execute();
+                    totalRequestsPerSecond += new ProfilingApplication("test-" + (ix + 1), cluster, clients, requests, executor).execute();
                     exceededTimeout.set((System.nanoTime() - start) > TimeUnit.NANOSECONDS.convert(timeout, TimeUnit.MILLISECONDS));
                     TimeUnit.SECONDS.sleep(1); // pause between executions
                 }
@@ -195,7 +201,7 @@ public class ProfilingApplication {
             System.out.println(String.format("avg req/sec: %s", averageRequestPerSecond));
             if (f != null) {
                 try (final PrintWriter writer = new PrintWriter(new BufferedWriter(new FileWriter(f, true)))) {
-                    writer.println(String.join("\t", String.valueOf(clients), String.valueOf(minConnectionPoolSize), String.valueOf(maxConnectionPoolSize), String.valueOf(maxSimultaneousUsagePerConnection), String.valueOf(maxInProcessPerConnection), String.valueOf(workerPoolSize), String.valueOf(averageRequestPerSecond)));
+                    writer.println(String.join("\t", String.valueOf(clients), String.valueOf(minConnectionPoolSize), String.valueOf(maxConnectionPoolSize), String.valueOf(minSimultaneousUsagePerConnection), String.valueOf(maxSimultaneousUsagePerConnection), String.valueOf(minInProcessPerConnection), String.valueOf(maxInProcessPerConnection), String.valueOf(workerPoolSize), String.valueOf(averageRequestPerSecond)));
                 }
             }
 
@@ -203,6 +209,8 @@ public class ProfilingApplication {
         } catch (Exception ex) {
             ex.printStackTrace();
             if (!noExit) System.exit(1);
+        } finally {
+            executor.shutdown();
         }
     }
 }


[49/50] [abbrv] incubator-tinkerpop git commit: Merge remote-tracking branch 'origin/master'

Posted by dk...@apache.org.
Merge remote-tracking branch 'origin/master'


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

Branch: refs/heads/TINKERPOP3-666
Commit: dbd275083ddd1ede20c878501c453ae153fe47d8
Parents: 7df5baf 4ae2b2a
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Mon May 11 06:29:28 2015 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon May 11 06:29:28 2015 -0400

----------------------------------------------------------------------
 CHANGELOG.asciidoc                              |   4 +-
 .../peerpressure/PeerPressureVertexProgram.java |   4 +-
 .../ranking/pagerank/PageRankVertexProgram.java |   4 +-
 .../traversal/TraversalObjectFunction.java      |  47 ----
 .../traversal/TraversalScriptFunction.java      |  69 ------
 .../traversal/TraversalVertexProgram.java       |  14 +-
 .../computer/util/ScriptEngineCache.java        |  47 ----
 .../computer/util/ScriptEngineLambda.java       | 111 ---------
 .../process/traversal/step/util/BulkSet.java    |   2 +-
 .../traversal/util/TraversalObjectFunction.java |  47 ++++
 .../traversal/util/TraversalScriptFunction.java |  66 +++++
 .../traversal/util/TraversalScriptHelper.java   |  59 +++++
 .../apache/tinkerpop/gremlin/util/Gremlin.java  |   3 +
 .../gremlin/util/ScriptEngineCache.java         |  47 ++++
 .../tinkerpop/gremlin/util/Serializer.java      |   5 +-
 .../apache/tinkerpop/gremlin/util/TimeUtil.java |   4 +
 .../util/function/ScriptEngineLambda.java       | 111 +++++++++
 .../process/computer/ComputerTestHelper.groovy  |  47 ----
 .../GroovyTraversalSideEffectsTest.groovy       |  10 +-
 .../step/branch/GroovyBranchTest.groovy         |  41 +---
 .../step/branch/GroovyChooseTest.groovy         |  20 +-
 .../step/branch/GroovyLocalTest.groovy          |  85 +------
 .../step/branch/GroovyRepeatTest.groovy         |  78 +-----
 .../step/branch/GroovyUnionTest.groovy          |  59 +----
 .../traversal/step/filter/GroovyAndTest.groovy  |  30 +--
 .../traversal/step/filter/GroovyCoinTest.groovy |  26 +-
 .../step/filter/GroovyCyclicPathTest.groovy     |  25 +-
 .../step/filter/GroovyDedupTest.groovy          |  60 +----
 .../traversal/step/filter/GroovyDropTest.groovy |  12 +-
 .../step/filter/GroovyExceptTest.groovy         |  70 +-----
 .../step/filter/GroovyFilterTest.groovy         | 126 +---------
 .../step/filter/GroovyHasNotTest.groovy         |  32 +--
 .../traversal/step/filter/GroovyHasTest.groovy  | 138 ++---------
 .../traversal/step/filter/GroovyIsTest.groovy   |  49 +---
 .../traversal/step/filter/GroovyOrTest.groovy   |  31 +--
 .../step/filter/GroovyRangeTest.groovy          | 111 +--------
 .../step/filter/GroovyRetainTest.groovy         |  31 +--
 .../step/filter/GroovySampleTest.groovy         |  69 +-----
 .../step/filter/GroovySimplePathTest.groovy     |  26 +-
 .../step/filter/GroovyWhereTest.groovy          |  73 +-----
 .../traversal/step/map/GroovyAddEdgeTest.groovy |  12 +-
 .../step/map/GroovyAddVertexTest.groovy         |  11 +-
 .../step/map/GroovyCoalesceTest.groovy          |  58 +----
 .../traversal/step/map/GroovyCountTest.groovy   |  69 +-----
 .../traversal/step/map/GroovyFoldTest.groovy    |  40 +--
 .../traversal/step/map/GroovyMapTest.groovy     |  86 +------
 .../traversal/step/map/GroovyMatchTest.groovy   |   3 +-
 .../traversal/step/map/GroovyMaxTest.groovy     |  37 +--
 .../traversal/step/map/GroovyMeanTest.groovy    |  29 +--
 .../traversal/step/map/GroovyMinTest.groovy     |  37 +--
 .../traversal/step/map/GroovyOrderTest.groovy   | 127 +---------
 .../traversal/step/map/GroovyPathTest.groovy    |  69 +-----
 .../step/map/GroovyPropertiesTest.groovy        |  33 +--
 .../traversal/step/map/GroovySelectTest.groovy  | 246 +++----------------
 .../traversal/step/map/GroovySumTest.groovy     |  29 +--
 .../traversal/step/map/GroovyUnfoldTest.groovy  |  26 +-
 .../step/map/GroovyValueMapTest.groovy          |  31 +--
 .../traversal/step/map/GroovyVertexTest.groovy  | 197 +++------------
 .../step/sideEffect/GroovyAggregateTest.groovy  |  32 +--
 .../step/sideEffect/GroovyGroupCountTest.groovy |  70 +-----
 .../step/sideEffect/GroovyGroupTest.groovy      |  55 +----
 .../step/sideEffect/GroovyInjectTest.groovy     |  35 +--
 .../step/sideEffect/GroovyProfileTest.groovy    |  50 +---
 .../step/sideEffect/GroovySackTest.groovy       |  35 +--
 .../sideEffect/GroovySideEffectCapTest.groovy   |  29 +--
 .../step/sideEffect/GroovySideEffectTest.groovy |  18 +-
 .../step/sideEffect/GroovyStoreTest.groovy      |  42 +---
 .../step/sideEffect/GroovySubgraphTest.groovy   |  11 +-
 .../step/sideEffect/GroovyTreeTest.groovy       |  65 +----
 .../process/GroovyProcessComputerSuite.java     | 103 ++++----
 .../process/GroovyProcessStandardSuite.java     | 102 ++++----
 .../computer/util/ScriptEngineLambdaTest.java   | 162 ------------
 .../util/function/ScriptEngineLambdaTest.java   | 163 ++++++++++++
 .../process/traversal/step/map/AddEdgeTest.java |  10 +-
 .../process/traversal/step/map/MatchTest.java   |  17 ++
 .../step/sideEffect/SideEffectTest.java         |  10 +-
 .../traversal/step/sideEffect/SubgraphTest.java |   9 +-
 .../tinkerpop/gremlin/hadoop/Constants.java     |   4 +
 .../computer/example/TraversalSupplier2.java    |  10 +-
 .../computer/example/TraversalSupplier3.java    |  13 +-
 .../gremlin/hadoop/structure/HadoopGraph.java   |  14 +-
 81 files changed, 1062 insertions(+), 3030 deletions(-)
----------------------------------------------------------------------



[24/50] [abbrv] incubator-tinkerpop git commit: Replaced "clients" setting with "parallelism" in profiler.

Posted by dk...@apache.org.
Replaced "clients" setting with "parallelism" in profiler.

Improved output layout a bit so that columns line up.


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

Branch: refs/heads/TINKERPOP3-666
Commit: 0b9946218b72b92330208236604a8438d2df4dd7
Parents: da1bf8c
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri May 8 15:22:48 2015 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri May 8 15:23:54 2015 -0400

----------------------------------------------------------------------
 .../driver/util/ProfilingApplication.java       | 127 +++++++------------
 1 file changed, 46 insertions(+), 81 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/0b994621/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/util/ProfilingApplication.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/util/ProfilingApplication.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/util/ProfilingApplication.java
index bda2584..1c51f21 100644
--- a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/util/ProfilingApplication.java
+++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/util/ProfilingApplication.java
@@ -18,6 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.driver.util;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.concurrent.BasicThreadFactory;
 import org.apache.tinkerpop.gremlin.driver.Client;
 import org.apache.tinkerpop.gremlin.driver.Cluster;
@@ -27,19 +28,14 @@ import java.io.BufferedWriter;
 import java.io.File;
 import java.io.FileWriter;
 import java.io.PrintWriter;
-import java.util.List;
 import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.CyclicBarrier;
-import java.util.concurrent.Executor;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicInteger;
-import java.util.stream.Collectors;
 import java.util.stream.IntStream;
 
 /**
@@ -49,94 +45,63 @@ public class ProfilingApplication {
 
     private final Cluster cluster;
     private final int requests;
-    private final int clients;
     private final String executionName;
 
     private final ExecutorService executor;
 
-    public ProfilingApplication(final String executionName, final Cluster cluster, final int clients, final int requests, final ExecutorService executor) {
+    public ProfilingApplication(final String executionName, final Cluster cluster, final int requests, final ExecutorService executor) {
         this.executionName = executionName;
         this.cluster = cluster;
-        this.clients = clients;
         this.requests = requests;
         this.executor = executor;
     }
 
     public long execute() throws Exception {
-        final Map<Thread, Long> rps = new ConcurrentHashMap<>();
         final AtomicInteger tooSlow = new AtomicInteger(0);
 
-        // let all the clients fully init before starting to send messages
-        final CyclicBarrier barrier = new CyclicBarrier(clients);
-
-        final List<Thread> threads = IntStream.range(0, clients).mapToObj(t -> new Thread(() -> {
-            final Client client = cluster.connect();
-            final String executionId = "[" + executionName + "-" + (t + 1) + "]";
-            try {
-                final CountDownLatch latch = new CountDownLatch(requests);
-                client.init();
-                barrier.await();
-
-                // timer starts after init of all clients
-                final long start = System.nanoTime();
-                IntStream.range(0, requests).forEach(i ->
-                    client.submitAsync("1+1").thenAcceptAsync(r -> {
-                        try {
-                            r.all().get(125, TimeUnit.MILLISECONDS);
-                        } catch (TimeoutException ex) {
-                            tooSlow.incrementAndGet();
-                        } catch (Exception ex) {
-                            ex.printStackTrace();
-                        } finally {
-                            latch.countDown();
-                        }
-                    }, executor)
-                );
-
-                // finish once all requests are accounted for
-                latch.await();
-
-                final long end = System.nanoTime();
-                final long total = end - start;
-                final double totalSeconds = total / 1000000000d;
-                final long requestCount = requests;
-                final long reqSec = Math.round(requestCount / totalSeconds);
-                rps.put(Thread.currentThread(), reqSec);
-
-                System.out.println(String.format(executionId + " clients: %s | requests: %s | time(s): %s | req/sec: %s | too slow: %s", clients, requestCount, totalSeconds, reqSec, tooSlow.get()));
-            } catch (Exception ex) {
-                ex.printStackTrace();
-                throw new RuntimeException(ex);
-            } finally {
-                if (client != null) client.close();
-            }
-        }, "benchmark-client-" + executionName + "-" + (t + 1))).collect(Collectors.toList());
-
-        threads.forEach(t -> {
-            try {
-                t.start();
-            } catch (Exception ex) {
-                ex.printStackTrace();
-                throw new RuntimeException(ex);
-            }
-        });
-
-        threads.forEach(t -> {
-            try {
-                t.join();
-            } catch (Exception ex) {
-                ex.printStackTrace();
-                throw new RuntimeException(ex);
-            }
-        });
-
-        return rps.values().stream().collect(Collectors.averagingLong(l -> l)).longValue();
+        final Client client = cluster.connect();
+        final String executionId = "[" + executionName + "]";
+        try {
+            final CountDownLatch latch = new CountDownLatch(requests);
+            client.init();
+
+            final long start = System.nanoTime();
+            IntStream.range(0, requests).forEach(i ->
+                client.submitAsync("1+1").thenAcceptAsync(r -> {
+                    try {
+                        r.all().get(125, TimeUnit.MILLISECONDS);
+                    } catch (TimeoutException ex) {
+                        tooSlow.incrementAndGet();
+                    } catch (Exception ex) {
+                        ex.printStackTrace();
+                    } finally {
+                        latch.countDown();
+                    }
+                }, executor)
+            );
+
+            // finish once all requests are accounted for
+            latch.await();
+
+            final long end = System.nanoTime();
+            final long total = end - start;
+            final double totalSeconds = total / 1000000000d;
+            final long requestCount = requests;
+            final long reqSec = Math.round(requestCount / totalSeconds);
+            System.out.println(String.format(StringUtils.rightPad(executionId, 10) + " requests: %s | time(s): %s | req/sec: %s | too slow: %s", requestCount, StringUtils.rightPad(String.valueOf(totalSeconds), 14), StringUtils.rightPad(String.valueOf(reqSec), 7), tooSlow.get()));
+            return reqSec;
+        } catch (Exception ex) {
+            ex.printStackTrace();
+            throw new RuntimeException(ex);
+        } finally {
+            if (client != null) client.close();
+        }
     }
 
     public static void main(final String[] args) {
         final Map<String,Object> options = ElementHelper.asMap(args);
         final boolean noExit = Boolean.parseBoolean(options.getOrDefault("noExit", "false").toString());
-        final int parallelism = Integer.parseInt(options.getOrDefault("parallelism", "4").toString());
+        final int parallelism = Integer.parseInt(options.getOrDefault("parallelism", "2").toString());
         final BasicThreadFactory threadFactory = new BasicThreadFactory.Builder().namingPattern("profiler-%d").build();
         final ExecutorService executor = Executors.newFixedThreadPool(parallelism, threadFactory);
 
@@ -146,7 +111,7 @@ public class ProfilingApplication {
             final int timeout = Integer.parseInt(options.getOrDefault("timeout", "1200000").toString());
             final int warmups = Integer.parseInt(options.getOrDefault("warmups", "5").toString());
             final int executions = Integer.parseInt(options.getOrDefault("executions", "10").toString());
-            final int clients = Integer.parseInt(options.getOrDefault("clients", "1").toString());
+            final int nioPoolSize = Integer.parseInt(options.getOrDefault("nioPoolSize", "2").toString());
             final int requests = Integer.parseInt(options.getOrDefault("requests", "10000").toString());
             final int minConnectionPoolSize = Integer.parseInt(options.getOrDefault("minConnectionPoolSize", "256").toString());
             final int maxConnectionPoolSize = Integer.parseInt(options.getOrDefault("maxConnectionPoolSize", "256").toString());
@@ -163,14 +128,14 @@ public class ProfilingApplication {
                     .maxSimultaneousUsagePerConnection(maxSimultaneousUsagePerConnection)
                     .minInProcessPerConnection(minInProcessPerConnection)
                     .maxInProcessPerConnection(maxInProcessPerConnection)
-                    .nioPoolSize(clients)
+                    .nioPoolSize(nioPoolSize)
                     .workerPoolSize(workerPoolSize).create();
 
             final Object fileName = options.get("store");
             final File f = null == fileName ? null : new File(fileName.toString());
             if (f != null && f.length() == 0) {
                 try (final PrintWriter writer = new PrintWriter(new BufferedWriter(new FileWriter(f, true)))) {
-                    writer.println("clients\tminConnectionPoolSize\tmaxConnectionPoolSize\tminSimultaneousUsagePerConnection\tmaxSimultaneousUsagePerConnection\tminInProcessPerConnection\tmaxInProcessPerConnection\tworkerPoolSize\trequestPerSecond");
+                    writer.println("nioPoolSize\tminConnectionPoolSize\tmaxConnectionPoolSize\tminSimultaneousUsagePerConnection\tmaxSimultaneousUsagePerConnection\tminInProcessPerConnection\tmaxInProcessPerConnection\tworkerPoolSize\trequestPerSecond");
                 }
             }
 
@@ -178,7 +143,7 @@ public class ProfilingApplication {
             final AtomicBoolean meetsRpsExpectation = new AtomicBoolean(true);
             System.out.println("---------------------------WARMUP CYCLE---------------------------");
             for (int ix = 0; ix < warmups && meetsRpsExpectation.get(); ix++) {
-                final long averageRequestsPerSecond = new ProfilingApplication("warmup-" + (ix + 1), cluster, clients, 1000, executor).execute();
+                final long averageRequestsPerSecond = new ProfilingApplication("warmup-" + (ix + 1), cluster, 1000, executor).execute();
                 meetsRpsExpectation.set(averageRequestsPerSecond > minExpectedRps);
                 TimeUnit.SECONDS.sleep(1); // pause between executions
             }
@@ -191,7 +156,7 @@ public class ProfilingApplication {
                 final long start = System.nanoTime();
                 System.out.println("----------------------------TEST CYCLE----------------------------");
                 for (int ix = 0; ix < executions && !exceededTimeout.get(); ix++) {
-                    totalRequestsPerSecond += new ProfilingApplication("test-" + (ix + 1), cluster, clients, requests, executor).execute();
+                    totalRequestsPerSecond += new ProfilingApplication("test-" + (ix + 1), cluster, requests, executor).execute();
                     exceededTimeout.set((System.nanoTime() - start) > TimeUnit.NANOSECONDS.convert(timeout, TimeUnit.MILLISECONDS));
                     TimeUnit.SECONDS.sleep(1); // pause between executions
                 }
@@ -201,7 +166,7 @@ public class ProfilingApplication {
             System.out.println(String.format("avg req/sec: %s", averageRequestPerSecond));
             if (f != null) {
                 try (final PrintWriter writer = new PrintWriter(new BufferedWriter(new FileWriter(f, true)))) {
-                    writer.println(String.join("\t", String.valueOf(clients), String.valueOf(minConnectionPoolSize), String.valueOf(maxConnectionPoolSize), String.valueOf(minSimultaneousUsagePerConnection), String.valueOf(maxSimultaneousUsagePerConnection), String.valueOf(minInProcessPerConnection), String.valueOf(maxInProcessPerConnection), String.valueOf(workerPoolSize), String.valueOf(averageRequestPerSecond)));
+                    writer.println(String.join("\t", String.valueOf(nioPoolSize), String.valueOf(minConnectionPoolSize), String.valueOf(maxConnectionPoolSize), String.valueOf(minSimultaneousUsagePerConnection), String.valueOf(maxSimultaneousUsagePerConnection), String.valueOf(minInProcessPerConnection), String.valueOf(maxInProcessPerConnection), String.valueOf(workerPoolSize), String.valueOf(averageRequestPerSecond)));
                 }
             }
 


[29/50] [abbrv] incubator-tinkerpop git commit: fixed a bug in GraphTraversal API around ambiguous method call.

Posted by dk...@apache.org.
fixed a bug in GraphTraversal API around ambiguous method call.


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

Branch: refs/heads/TINKERPOP3-666
Commit: ab407da9e0f87b9306e786bd8e521d2036844836
Parents: 81d348d
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Fri May 8 15:17:08 2015 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Fri May 8 15:17:08 2015 -0600

----------------------------------------------------------------------
 .../process/traversal/dsl/graph/GraphTraversal.java      | 11 ++++++++---
 .../process/traversal/step/util/HasContainer.java        |  6 ++++--
 .../java/org/apache/tinkerpop/gremlin/structure/P.java   | 11 +++++++++++
 3 files changed, 23 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/ab407da9/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
index 665c028..4b866aa 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
@@ -129,6 +129,7 @@ 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.util.function.ConstantSupplier;
+import org.javatuples.Pair;
 
 import java.util.Arrays;
 import java.util.Collection;
@@ -488,7 +489,11 @@ public interface GraphTraversal<S, E> extends Traversal<S, E> {
     }
 
     public default GraphTraversal<S, E> has(final String key, final Object value) {
-        return this.has(key, value instanceof P ? (P) value : P.eq(value), new P[0]);
+        if (value instanceof P[]) {
+            final Pair<P, P[]> split = P.splitForAPI((P[]) value);
+            return this.has(key, split.getValue0(), split.getValue1());
+        } else
+            return this.has(key, value instanceof P ? (P) value : P.eq(value), new P[0]);
     }
 
     public default GraphTraversal<S, E> has(final T accessor, final Object value) {
@@ -500,7 +505,7 @@ public interface GraphTraversal<S, E> extends Traversal<S, E> {
     }
 
     public default GraphTraversal<S, E> has(final String label, final String key, final Object value) {
-        return this.has(label, key, value instanceof P ? (P) value : P.eq(value), new P[0]);
+        return this.has(T.label, label).has(key, value);
     }
 
     public default GraphTraversal<S, E> has(final String key) {
@@ -532,7 +537,7 @@ public interface GraphTraversal<S, E> extends Traversal<S, E> {
     }
 
     public default GraphTraversal<S, E> is(final Object value) {
-        return this.is(value instanceof P ? (P<E>) value : P.eq((E)value), new P[0]);
+        return this.is(value instanceof P ? (P<E>) value : P.eq((E) value), new P[0]);
     }
 
     public default GraphTraversal<S, E> coin(final double probability) {

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/ab407da9/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/HasContainer.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/HasContainer.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/HasContainer.java
index 215acc2..c95e776 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/HasContainer.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/HasContainer.java
@@ -121,8 +121,10 @@ public final class HasContainer implements Serializable {
     public static HasContainer[] makeHasContainers(final String key, final P<?> predicate, final P<?>... predicates) {
         final HasContainer[] hasContainers = new HasContainer[predicates.length + 1];
         hasContainers[0] = new HasContainer(key, predicate.getBiPredicate(), predicate.getValue());
-        for (int i = 1; i < predicates.length + 1; i++) {
-            hasContainers[i] = new HasContainer(key, predicates[i].getBiPredicate(), predicates[i].getValue());
+        if (predicates.length > 0) {
+            for (int i = 1; i < predicates.length + 1; i++) {
+                hasContainers[i] = new HasContainer(key, predicates[i-1].getBiPredicate(), predicates[i-1].getValue());
+            }
         }
         return hasContainers;
     }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/ab407da9/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/P.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/P.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/P.java
index a745cbd..fac60ee 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/P.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/P.java
@@ -21,6 +21,8 @@
 
 package org.apache.tinkerpop.gremlin.structure;
 
+import org.javatuples.Pair;
+
 import java.io.Serializable;
 import java.util.Arrays;
 import java.util.Collection;
@@ -127,4 +129,13 @@ public class P<V> implements Predicate<V>, Serializable {
     public static P test(final BiPredicate biPredicate, final Object value) {
         return new P(biPredicate, value);
     }
+
+    public static Pair<P, P[]> splitForAPI(final P[] pArray) {
+        if (pArray.length == 0)
+            throw new IllegalArgumentException("The P[] is not splittable cause its length is 0: " + pArray);
+        else if (pArray.length == 1)
+            return new Pair<>(pArray[0], new P[0]);
+        else
+            return new Pair<>(pArray[0], Arrays.copyOfRange(pArray, 1, pArray.length));
+    }
 }


[15/50] [abbrv] incubator-tinkerpop git commit: if no traversal engine is supplied to the DefaultTraversal, assume STANDARD.

Posted by dk...@apache.org.
if no traversal engine is supplied to the DefaultTraversal, assume STANDARD.


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

Branch: refs/heads/TINKERPOP3-666
Commit: f919ad26c0a08bcb9dbd4dd90ad7a26c3d962945
Parents: aa519db
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Fri May 8 09:17:18 2015 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Fri May 8 09:17:18 2015 -0600

----------------------------------------------------------------------
 .../gremlin/process/traversal/util/DefaultTraversal.java          | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/f919ad26/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversal.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversal.java
index 03ea46f..92572a6 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversal.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversal.java
@@ -50,14 +50,13 @@ public class DefaultTraversal<S, E> implements Traversal.Admin<S, E> {
     protected TraversalParent traversalParent = (TraversalParent) EmptyStep.instance();
     protected TraversalSideEffects sideEffects = new DefaultTraversalSideEffects();
     protected TraversalStrategies strategies;
-    protected TraversalEngine traversalEngine;
+    protected TraversalEngine traversalEngine = StandardTraversalEngine.instance(); // necessary for strategies that need the engine in OLAP message passing (not so bueno)
     protected boolean locked = false;
 
     public DefaultTraversal() {
         this.graph = null;
         // necessary for anonymous traversals without a graph start (rethink how this works in the future)
         this.setStrategies(TraversalStrategies.GlobalCache.getStrategies(TraversalStrategies.GlobalCache.getGraphClass(EmptyGraph.instance())));
-        this.traversalEngine = StandardTraversalEngine.instance();
     }
 
 


[02/50] [abbrv] incubator-tinkerpop git commit: Added the persistence feature to a couple of Transaction tests

Posted by dk...@apache.org.
Added the persistence feature to a couple of Transaction tests

These tests were opening and closing the graph so an in-memory graph with transactions would have problems without that feature.


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

Branch: refs/heads/TINKERPOP3-666
Commit: 08ee0fb246111953cdb2b52194ba855c6a0b84ee
Parents: caabdb1
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri May 8 07:03:11 2015 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri May 8 07:03:11 2015 -0400

----------------------------------------------------------------------
 .../tinkerpop/gremlin/structure/TransactionTest.java      | 10 ++++++++++
 1 file changed, 10 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/08ee0fb2/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/TransactionTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/TransactionTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/TransactionTest.java
index 8ba47d5..7feb698 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/TransactionTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/TransactionTest.java
@@ -356,6 +356,7 @@ public class TransactionTest extends AbstractGremlinTest {
     @Test
     @FeatureRequirementSet(FeatureRequirementSet.Package.VERTICES_ONLY)
     @FeatureRequirement(featureClass = Graph.Features.GraphFeatures.class, feature = Graph.Features.GraphFeatures.FEATURE_TRANSACTIONS)
+    @FeatureRequirement(featureClass = Graph.Features.GraphFeatures.class, feature = Graph.Features.GraphFeatures.FEATURE_PERSISTENCE)
     public void shouldCommitOnShutdownByDefault() throws Exception {
         final Vertex v1 = graph.addVertex("name", "marko");
         final Object oid = v1.id();
@@ -369,14 +370,23 @@ public class TransactionTest extends AbstractGremlinTest {
     @Test
     @FeatureRequirementSet(FeatureRequirementSet.Package.VERTICES_ONLY)
     @FeatureRequirement(featureClass = Graph.Features.GraphFeatures.class, feature = Graph.Features.GraphFeatures.FEATURE_TRANSACTIONS)
+    @FeatureRequirement(featureClass = Graph.Features.GraphFeatures.class, feature = Graph.Features.GraphFeatures.FEATURE_PERSISTENCE)
     public void shouldRollbackOnShutdownWhenConfigured() throws Exception {
+        final Vertex v2 = graph.addVertex("name", "stephen");
+        graph.tx().commit();
+
         final Vertex v1 = graph.addVertex("name", "marko");
         final Object oid = v1.id();
         g.tx().onClose(Transaction.CLOSE_BEHAVIOR.ROLLBACK);
         graph.close();
 
         graph = graphProvider.openTestGraph(config);
+
+        // this was committed
+        assertTrue(graph.vertices(v2.id()).hasNext());
+
         try {
+            // this was not
             graph.vertices(oid).next();
             fail("Vertex should not be found as close behavior was set to rollback");
         } catch (Exception ex) {


[18/50] [abbrv] incubator-tinkerpop git commit: Revert "TraversalVertexProgram will delay traversal compilation until the first vertex is processed so it can compile against the Vertex.graph()."

Posted by dk...@apache.org.
Revert "TraversalVertexProgram will delay traversal compilation until the first vertex is processed so it can compile against the Vertex.graph()."

This reverts commit 6a198f21ebb8cce85ff37d97c440c70a805a5165.


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

Branch: refs/heads/TINKERPOP3-666
Commit: e99a57b23b510fd92ab752ce551256a87d11f927
Parents: 6a198f2
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Fri May 8 11:20:29 2015 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Fri May 8 11:20:29 2015 -0600

----------------------------------------------------------------------
 .../traversal/TraversalVertexProgram.java       | 45 +++++++-------------
 .../mapreduce/TraverserMapReduce.java           |  3 +-
 .../process/traversal/step/map/GroupStep.java   |  4 +-
 .../step/sideEffect/AggregateStep.java          |  2 +-
 .../sideEffect/GroupCountSideEffectStep.java    |  2 +-
 .../step/sideEffect/GroupSideEffectStep.java    |  4 +-
 .../traversal/step/sideEffect/StoreStep.java    |  2 +-
 7 files changed, 27 insertions(+), 35 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/e99a57b2/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 bc63328..4f630c6 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
@@ -99,20 +99,29 @@ public final class TraversalVertexProgram implements VertexProgram<TraverserSet<
      * @param configuration The configuration containing the public static TRAVERSAL_SUPPLIER key.
      * @return the traversal supplier in the configuration
      */
-    public static Traversal.Admin<?, ?> getTraversal(final Configuration configuration) {
-        return VertexProgram.<TraversalVertexProgram>createVertexProgram(configuration).getTraversal();
+    public static Supplier<Traversal.Admin<?, ?>> getTraversalSupplier(final Configuration configuration) {
+        return LambdaHolder.<Supplier<Traversal.Admin<?, ?>>>loadState(configuration, TraversalVertexProgram.TRAVERSAL_SUPPLIER).get();
     }
 
     public Traversal.Admin<?, ?> getTraversal() {
-        this.compileTraversal(Optional.empty());
         return this.traversal;
     }
 
     @Override
     public void loadState(final Configuration configuration) {
         this.traversalSupplier = LambdaHolder.loadState(configuration, TRAVERSAL_SUPPLIER);
-        if (null == this.traversalSupplier)
+        if (null == this.traversalSupplier) {
             throw new IllegalArgumentException("The configuration does not have a traversal supplier");
+        }
+        this.traversal = this.traversalSupplier.get().get();
+        if (!this.traversal.isLocked()) this.traversal.applyStrategies();
+        ((ComputerResultStep) this.traversal.getEndStep()).byPass();
+        this.traversalMatrix = new TraversalMatrix<>(this.traversal);
+        for (final MapReducer<?, ?, ?, ?, ?> mapReducer : TraversalHelper.getStepsOfAssignableClassRecursively(MapReducer.class, this.traversal)) {
+            this.mapReducers.add(mapReducer.getMapReduce());
+        }
+        if (!(this.traversal.getEndStep().getPreviousStep() instanceof SideEffectCapStep) && !(this.traversal.getEndStep().getPreviousStep() instanceof ReducingBarrierStep))
+            this.mapReducers.add(new TraverserMapReduce(this.traversal.getEndStep().getPreviousStep()));
     }
 
     @Override
@@ -133,7 +142,6 @@ public final class TraversalVertexProgram implements VertexProgram<TraverserSet<
 
     @Override
     public void execute(final Vertex vertex, final Messenger<TraverserSet<?>> messenger, final Memory memory) {
-        this.compileTraversal(Optional.of(vertex));
         this.traversal.getSideEffects().setLocalVertex(vertex);
         if (memory.isInitialIteration()) {    // ITERATION 1
             final TraverserSet<Object> haltedTraversers = new TraverserSet<>();
@@ -202,7 +210,6 @@ public final class TraversalVertexProgram implements VertexProgram<TraverserSet<
 
     @Override
     public Set<MapReduce> getMapReducers() {
-        this.compileTraversal(Optional.<Vertex>empty());
         return this.mapReducers;
     }
 
@@ -215,10 +222,8 @@ public final class TraversalVertexProgram implements VertexProgram<TraverserSet<
     public TraversalVertexProgram clone() {
         try {
             final TraversalVertexProgram clone = (TraversalVertexProgram) super.clone();
-            if (null != this.traversal) {
-                clone.traversal = this.traversal.clone();
-                clone.traversalMatrix = new TraversalMatrix<>(clone.traversal);
-            }
+            clone.traversal = this.traversal.clone();
+            clone.traversalMatrix = new TraversalMatrix<>(clone.traversal);
             return clone;
         } catch (final CloneNotSupportedException e) {
             throw new IllegalStateException(e.getMessage(), e);
@@ -237,7 +242,7 @@ public final class TraversalVertexProgram implements VertexProgram<TraverserSet<
 
     @Override
     public String toString() {
-        final String traversalString = this.getTraversal().toString().substring(1);
+        final String traversalString = this.traversal.toString().substring(1);
         return StringFactory.vertexProgramString(this, traversalString.substring(0, traversalString.length() - 1));
     }
 
@@ -262,24 +267,6 @@ public final class TraversalVertexProgram implements VertexProgram<TraverserSet<
         return traversal;
     }
 
-    private void compileTraversal(final Optional<Vertex> currentVertex) {
-        if (null != this.traversal)
-            return;
-
-        this.traversal = this.traversalSupplier.get().get();
-        if (!this.traversal.isLocked()) {
-            if (currentVertex.isPresent()) this.traversal.setGraph(currentVertex.get().graph());
-            this.traversal.applyStrategies();
-        }
-        ((ComputerResultStep) this.traversal.getEndStep()).byPass();
-        this.traversalMatrix = new TraversalMatrix<>(this.traversal);
-        for (final MapReducer<?, ?, ?, ?, ?> mapReducer : TraversalHelper.getStepsOfAssignableClassRecursively(MapReducer.class, this.traversal)) {
-            this.mapReducers.add(mapReducer.getMapReduce());
-        }
-        if (!(this.traversal.getEndStep().getPreviousStep() instanceof SideEffectCapStep) && !(this.traversal.getEndStep().getPreviousStep() instanceof ReducingBarrierStep))
-            this.mapReducers.add(new TraverserMapReduce(this.traversal.getEndStep().getPreviousStep()));
-    }
-
     //////////////
 
     public static Builder build() {

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/e99a57b2/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/sideEffect/mapreduce/TraverserMapReduce.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/sideEffect/mapreduce/TraverserMapReduce.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/sideEffect/mapreduce/TraverserMapReduce.java
index 819c038..3e38325 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/sideEffect/mapreduce/TraverserMapReduce.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/sideEffect/mapreduce/TraverserMapReduce.java
@@ -25,6 +25,7 @@ import org.apache.tinkerpop.gremlin.process.computer.util.GraphComputerHelper;
 import org.apache.tinkerpop.gremlin.process.computer.util.StaticMapReduce;
 import org.apache.tinkerpop.gremlin.process.traversal.Step;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.step.ComparatorHolder;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.OrderGlobalStep;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.util.TraverserSet;
 import org.apache.tinkerpop.gremlin.structure.Graph;
@@ -57,7 +58,7 @@ public final class TraverserMapReduce extends StaticMapReduce<Comparable, Object
 
     @Override
     public void loadState(final Configuration configuration) {
-        this.traversal = TraversalVertexProgram.getTraversal(configuration);
+        this.traversal = TraversalVertexProgram.getTraversalSupplier(configuration).get();
         final Step endStep = this.traversal.getEndStep().getPreviousStep(); // don't get the ComputerResultStep
         this.comparator = Optional.ofNullable(endStep instanceof OrderGlobalStep ? new ChainedComparator<Comparable>(((OrderGlobalStep) endStep).getComparators()) : null);
     }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/e99a57b2/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStep.java
index 96b58fd..2dc1be6 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStep.java
@@ -211,7 +211,9 @@ public final class GroupStep<S, K, V, R> extends ReducingBarrierStep<S, Map<K, R
         @Override
         public void loadState(final Configuration configuration) {
             this.groupStepId = configuration.getString(GROUP_BY_STEP_STEP_ID);
-            final Traversal.Admin<?, ?> traversal = TraversalVertexProgram.getTraversal(configuration);
+            final Traversal.Admin<?, ?> traversal = TraversalVertexProgram.getTraversalSupplier(configuration).get();
+            if (!traversal.isLocked())
+                traversal.applyStrategies(); // TODO: this is a scary error prone requirement, but only a problem for GroupStep
             final GroupStep groupStep = new TraversalMatrix<>(traversal).getStepById(this.groupStepId);
             this.reduceTraversal = groupStep.getReduceTraversal();
         }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/e99a57b2/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AggregateStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AggregateStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AggregateStep.java
index 27607c7..3ce80a5 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AggregateStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AggregateStep.java
@@ -132,7 +132,7 @@ public final class AggregateStep<S> extends CollectingBarrierStep<S> implements
         @Override
         public void loadState(final Configuration configuration) {
             this.sideEffectKey = configuration.getString(AGGREGATE_STEP_SIDE_EFFECT_KEY);
-            this.collectionSupplier = TraversalVertexProgram.getTraversal(configuration).getSideEffects().<Collection>getRegisteredSupplier(this.sideEffectKey).orElse(BulkSet::new);
+            this.collectionSupplier = TraversalVertexProgram.getTraversalSupplier(configuration).get().getSideEffects().<Collection>getRegisteredSupplier(this.sideEffectKey).orElse(BulkSet::new);
         }
 
         @Override

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/e99a57b2/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupCountSideEffectStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupCountSideEffectStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupCountSideEffectStep.java
index 2578c77..de88730 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupCountSideEffectStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupCountSideEffectStep.java
@@ -129,7 +129,7 @@ public final class GroupCountSideEffectStep<S, E> extends SideEffectStep<S> impl
         @Override
         public void loadState(final Configuration configuration) {
             this.sideEffectKey = configuration.getString(GROUP_COUNT_SIDE_EFFECT_STEP_SIDE_EFFECT_KEY);
-            this.mapSupplier = TraversalVertexProgram.getTraversal(configuration).getSideEffects().<Map<E, Long>>getRegisteredSupplier(this.sideEffectKey).orElse(HashMap::new);
+            this.mapSupplier = TraversalVertexProgram.getTraversalSupplier(configuration).get().getSideEffects().<Map<E, Long>>getRegisteredSupplier(this.sideEffectKey).orElse(HashMap::new);
         }
 
         @Override

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/e99a57b2/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupSideEffectStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupSideEffectStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupSideEffectStep.java
index ec89349..57fbc6f 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupSideEffectStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupSideEffectStep.java
@@ -190,7 +190,9 @@ public final class GroupSideEffectStep<S, K, V, R> extends SideEffectStep<S> imp
         public void loadState(final Configuration configuration) {
             this.sideEffectKey = configuration.getString(GROUP_SIDE_EFFECT_STEP_SIDE_EFFECT_KEY);
             this.groupStepId = configuration.getString(GROUP_SIDE_EFFECT_STEP_STEP_ID);
-            final Traversal.Admin<?, ?> traversal = TraversalVertexProgram.getTraversal(configuration);
+            final Traversal.Admin<?, ?> traversal = TraversalVertexProgram.getTraversalSupplier(configuration).get();
+            if (!traversal.isLocked())
+                traversal.applyStrategies(); // TODO: this is a scary error prone requirement, but only a problem for GroupStep
             final GroupSideEffectStep groupSideEffectStep = new TraversalMatrix<>(traversal).getStepById(this.groupStepId);
             this.reduceTraversal = groupSideEffectStep.getReduceTraversal();
             this.mapSupplier = traversal.getSideEffects().<Map<K, R>>getRegisteredSupplier(this.sideEffectKey).orElse(HashMap::new);

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/e99a57b2/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/StoreStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/StoreStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/StoreStep.java
index d0b3e7d..3c1a979 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/StoreStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/StoreStep.java
@@ -130,7 +130,7 @@ public final class StoreStep<S> extends SideEffectStep<S> implements SideEffectC
         @Override
         public void loadState(final Configuration configuration) {
             this.sideEffectKey = configuration.getString(STORE_STEP_SIDE_EFFECT_KEY);
-            this.collectionSupplier = TraversalVertexProgram.getTraversal(configuration).getSideEffects().<Collection>getRegisteredSupplier(this.sideEffectKey).orElse(BulkSet::new);
+            this.collectionSupplier = TraversalVertexProgram.getTraversalSupplier(configuration).get().getSideEffects().<Collection>getRegisteredSupplier(this.sideEffectKey).orElse(BulkSet::new);
         }
 
         @Override


[38/50] [abbrv] incubator-tinkerpop git commit: greatly simplified the groovy test suite. its all generated via strings and thus, no need for STANDARD and COMPUTER versions of the tests.

Posted by dk...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/abd23f4e/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/process/GroovyProcessComputerSuite.java
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/process/GroovyProcessComputerSuite.java b/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/process/GroovyProcessComputerSuite.java
index 562771c..2fbae41 100644
--- a/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/process/GroovyProcessComputerSuite.java
+++ b/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/process/GroovyProcessComputerSuite.java
@@ -33,19 +33,23 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.filter.GroovyAndTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.filter.GroovyCoinTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.filter.GroovyCyclicPathTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.filter.GroovyDedupTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.GroovyExceptTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.filter.GroovyFilterTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.filter.GroovyHasNotTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.filter.GroovyHasTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.filter.GroovyIsTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.filter.GroovyOrTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.filter.GroovyRangeTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.GroovyRetainTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.filter.GroovySampleTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.filter.GroovySimplePathTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.filter.GroovyWhereTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyAddEdgeTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyCoalesceTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyCountTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyFoldTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyMapTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyMatchTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyMaxTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyMeanTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyMinTest;
@@ -64,7 +68,9 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroovyInje
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroovyProfileTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroovySackTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroovySideEffectCapTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroovySideEffectTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroovyStoreTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroovySubgraphTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroovyTreeTest;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.StructureStandardSuite;
@@ -91,61 +97,60 @@ public class GroovyProcessComputerSuite extends ProcessComputerSuite {
     private static final Class<?>[] allTests = new Class<?>[]{
 
             //branch
-            GroovyBranchTest.ComputerTraversals.class,
-            GroovyChooseTest.ComputerTraversals.class,
-            GroovyLocalTest.ComputerTraversals.class,
-            GroovyRepeatTest.ComputerTraversals.class,
-            GroovyUnionTest.ComputerTraversals.class,
+            GroovyBranchTest.Traversals.class,
+            GroovyChooseTest.Traversals.class,
+            GroovyLocalTest.Traversals.class,
+            GroovyRepeatTest.Traversals.class,
+            GroovyUnionTest.Traversals.class,
 
             // filter
-            GroovyAndTest.ComputerTraversals.class,
-            GroovyCoinTest.ComputerTraversals.class,
-            GroovyCyclicPathTest.ComputerTraversals.class,
-            GroovyDedupTest.ComputerTraversals.class,
-            // TODO: GroovyExceptTest.ComputerTest.class,
-            GroovyFilterTest.ComputerTraversals.class,
-            GroovyHasNotTest.ComputerTraversals.class,
-            GroovyHasTest.ComputerTraversals.class,
-            GroovyIsTest.ComputerTraversals.class,
-            GroovyOrTest.ComputerTraversals.class,
-            GroovyRangeTest.ComputerTraversals.class,
-            // TODO: GroovyRetainTest.ComputerTest.class,
-            GroovySampleTest.ComputerTraversals.class,
-            GroovySimplePathTest.ComputerTraversals.class,
-            GroovyWhereTest.ComputerTraversals.class,
+            GroovyAndTest.Traversals.class,
+            GroovyCoinTest.Traversals.class,
+            GroovyCyclicPathTest.Traversals.class,
+            GroovyDedupTest.Traversals.class,
+            GroovyExceptTest.Traversals.class,
+            GroovyFilterTest.Traversals.class,
+            GroovyHasNotTest.Traversals.class,
+            GroovyHasTest.Traversals.class,
+            GroovyIsTest.Traversals.class,
+            GroovyOrTest.Traversals.class,
+            GroovyRangeTest.Traversals.class,
+            GroovyRetainTest.Traversals.class,
+            GroovySampleTest.Traversals.class,
+            GroovySimplePathTest.Traversals.class,
+            GroovyWhereTest.Traversals.class,
 
             // map
-            GroovyCoalesceTest.ComputerTraversals.class,
-            GroovyCountTest.ComputerTraversals.class,
-            GroovyFoldTest.ComputerTraversals.class,
-            GroovyMapTest.ComputerTraversals.class,
-            // TODO: GroovyMatchTest.ComputerTest.class,
-            GroovyMaxTest.ComputerTraversals.class,
-            GroovyMeanTest.ComputerTraversals.class,
-            GroovyMinTest.ComputerTraversals.class,
-            GroovyOrderTest.ComputerTraversals.class,
-            GroovyPathTest.ComputerTraversals.class,
-            GroovyPropertiesTest.ComputerTraversals.class,
-            GroovySelectTest.ComputerTraversals.class,
-            GroovySumTest.ComputerTraversals.class,
-            GroovyUnfoldTest.ComputerTraversals.class,
-            GroovyValueMapTest.ComputerTraversals.class,
-            GroovyVertexTest.ComputerTraversals.class,
-
+            GroovyCoalesceTest.Traversals.class,
+            GroovyCountTest.Traversals.class,
+            GroovyFoldTest.Traversals.class,
+            GroovyMapTest.Traversals.class,
+            GroovyMatchTest.Traversals.class,
+            GroovyMaxTest.Traversals.class,
+            GroovyMeanTest.Traversals.class,
+            GroovyMinTest.Traversals.class,
+            GroovyOrderTest.Traversals.class,
+            GroovyPathTest.Traversals.class,
+            GroovyPropertiesTest.Traversals.class,
+            GroovySelectTest.Traversals.class,
+            GroovySumTest.Traversals.class,
+            GroovyUnfoldTest.Traversals.class,
+            GroovyValueMapTest.Traversals.class,
+            GroovyVertexTest.Traversals.class,
 
             // sideEffect
-            // TODO: GroovyAddEdgeTest.ComputerTest.class,
-            GroovyAggregateTest.ComputerTraversals.class,
-            GroovyGroupTest.ComputerTraversals.class,
-            GroovyGroupCountTest.ComputerTraversals.class,
-            GroovyInjectTest.ComputerTraversals.class,
-            GroovyProfileTest.ComputerTraversals.class,
-            GroovySackTest.ComputerTraversals.class,
-            GroovySideEffectCapTest.ComputerTraversals.class,
-            // TODO: GroovySideEffectTest.ComputerTest.class,
-            GroovyStoreTest.ComputerTraversals.class,
-            // TODO: GroovySubgraphTest.ComputerTest.class,
-            GroovyTreeTest.ComputerTraversals.class,
+            GroovyAddEdgeTest.Traversals.class,
+            GroovyAggregateTest.Traversals.class,
+            GroovyGroupTest.Traversals.class,
+            GroovyGroupCountTest.Traversals.class,
+            GroovyInjectTest.Traversals.class,
+            GroovyProfileTest.Traversals.class,
+            GroovySackTest.Traversals.class,
+            GroovySideEffectCapTest.Traversals.class,
+            GroovySideEffectTest.Traversals.class,
+            GroovyStoreTest.Traversals.class,
+            GroovySubgraphTest.Traversals.class,
+            GroovyTreeTest.Traversals.class,
 
             // algorithms
             PageRankVertexProgramTest.class,

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/abd23f4e/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/process/GroovyProcessStandardSuite.java
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/process/GroovyProcessStandardSuite.java b/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/process/GroovyProcessStandardSuite.java
index 7798682..75aa509 100644
--- a/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/process/GroovyProcessStandardSuite.java
+++ b/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/process/GroovyProcessStandardSuite.java
@@ -96,62 +96,62 @@ public class GroovyProcessStandardSuite extends ProcessStandardSuite {
      */
     private static final Class<?>[] allTests = new Class<?>[]{
             // branch
-            GroovyBranchTest.StandardTraversals.class,
-            GroovyChooseTest.StandardTraversals.class,
-            GroovyLocalTest.StandardTraversals.class,
-            GroovyRepeatTest.StandardTraversals.class,
-            GroovyUnionTest.StandardTraversals.class,
+            GroovyBranchTest.Traversals.class,
+            GroovyChooseTest.Traversals.class,
+            GroovyLocalTest.Traversals.class,
+            GroovyRepeatTest.Traversals.class,
+            GroovyUnionTest.Traversals.class,
             // filter
-            GroovyAndTest.StandardTraversals.class,
-            GroovyCoinTest.StandardTraversals.class,
-            GroovyCyclicPathTest.StandardTraversals.class,
-            GroovyDedupTest.StandardTraversals.class,
-            GroovyDropTest.StandardTraversals.class,
-            GroovyExceptTest.StandardTraversals.class,
-            GroovyFilterTest.StandardTraversals.class,
-            GroovyHasNotTest.StandardTraversals.class,
-            GroovyHasTest.StandardTraversals.class,
-            GroovyIsTest.StandardTraversals.class,
-            GroovyOrTest.StandardTraversals.class,
-            GroovyRangeTest.StandardTraversals.class,
-            GroovyRetainTest.StandardTraversals.class,
-            GroovySampleTest.StandardTraversals.class,
-            GroovySimplePathTest.StandardTraversals.class,
-            GroovyWhereTest.StandardTraversals.class,
+            GroovyAndTest.Traversals.class,
+            GroovyCoinTest.Traversals.class,
+            GroovyCyclicPathTest.Traversals.class,
+            GroovyDedupTest.Traversals.class,
+            GroovyDropTest.Traversals.class,
+            GroovyExceptTest.Traversals.class,
+            GroovyFilterTest.Traversals.class,
+            GroovyHasNotTest.Traversals.class,
+            GroovyHasTest.Traversals.class,
+            GroovyIsTest.Traversals.class,
+            GroovyOrTest.Traversals.class,
+            GroovyRangeTest.Traversals.class,
+            GroovyRetainTest.Traversals.class,
+            GroovySampleTest.Traversals.class,
+            GroovySimplePathTest.Traversals.class,
+            GroovyWhereTest.Traversals.class,
             // map
-            GroovyAddEdgeTest.StandardTraversals.class,
-            GroovyAddVertexTest.StandardTraversals.class,
-            GroovyCoalesceTest.StandardTraversals.class,
-            GroovyCountTest.StandardTraversals.class,
-            GroovyFoldTest.StandardTraversals.class,
-            GroovyMapTest.StandardTraversals.class,
-            GroovyMatchTest.StandardTraversals.class,
-            GroovyMaxTest.StandardTraversals.class,
-            GroovyMeanTest.StandardTraversals.class,
-            GroovyMinTest.StandardTraversals.class,
-            GroovyOrderTest.StandardTraversals.class,
-            GroovyPathTest.StandardTraversals.class,
-            GroovyPropertiesTest.StandardTraversals.class,
-            GroovySelectTest.StandardTraversals.class,
-            GroovySumTest.StandardTraversals.class,
-            GroovyUnfoldTest.StandardTraversals.class,
-            GroovyValueMapTest.StandardTraversals.class,
-            GroovyVertexTest.StandardTraversals.class,
+            GroovyAddEdgeTest.Traversals.class,
+            GroovyAddVertexTest.Traversals.class,
+            GroovyCoalesceTest.Traversals.class,
+            GroovyCountTest.Traversals.class,
+            GroovyFoldTest.Traversals.class,
+            GroovyMapTest.Traversals.class,
+            GroovyMatchTest.Traversals.class,
+            GroovyMaxTest.Traversals.class,
+            GroovyMeanTest.Traversals.class,
+            GroovyMinTest.Traversals.class,
+            GroovyOrderTest.Traversals.class,
+            GroovyPathTest.Traversals.class,
+            GroovyPropertiesTest.Traversals.class,
+            GroovySelectTest.Traversals.class,
+            GroovySumTest.Traversals.class,
+            GroovyUnfoldTest.Traversals.class,
+            GroovyValueMapTest.Traversals.class,
+            GroovyVertexTest.Traversals.class,
             // sideEffect
-            GroovyAggregateTest.StandardTraversals.class,
-            GroovyGroupTest.StandardTraversals.class,
-            GroovyGroupCountTest.StandardTraversals.class,
-            GroovyInjectTest.StandardTraversals.class,
-            GroovyProfileTest.StandardTraversals.class,
-            GroovySackTest.StandardTraversals.class,
-            GroovySideEffectCapTest.StandardTraversals.class,
-            GroovySideEffectTest.StandardTraversals.class,
-            GroovyStoreTest.StandardTraversals.class,
-            GroovySubgraphTest.StandardTraversals.class,
-            GroovyTreeTest.StandardTraversals.class,
+            GroovyAggregateTest.Traversals.class,
+            GroovyGroupTest.Traversals.class,
+            GroovyGroupCountTest.Traversals.class,
+            GroovyInjectTest.Traversals.class,
+            GroovyProfileTest.Traversals.class,
+            GroovySackTest.Traversals.class,
+            GroovySideEffectCapTest.Traversals.class,
+            GroovySideEffectTest.Traversals.class,
+            GroovyStoreTest.Traversals.class,
+            GroovySubgraphTest.Traversals.class,
+            GroovyTreeTest.Traversals.class,
 
             // util
-            GroovyTraversalSideEffectsTest.StandardTraversals.class,
+            GroovyTraversalSideEffectsTest.Traversals.class,
 
             // compliance
             CoreTraversalTest.class,

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/abd23f4e/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeTest.java
index 3f790b8..032fe57 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeTest.java
@@ -18,12 +18,13 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.map;
 
-import org.apache.tinkerpop.gremlin.AbstractGremlinTest;
 import org.apache.tinkerpop.gremlin.FeatureRequirement;
 import org.apache.tinkerpop.gremlin.LoadGraphWith;
+import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
+import org.apache.tinkerpop.gremlin.process.IgnoreEngine;
+import org.apache.tinkerpop.gremlin.process.UseEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
-import org.apache.tinkerpop.gremlin.process.UseEngine;
 import org.apache.tinkerpop.gremlin.structure.Direction;
 import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Graph;
@@ -38,7 +39,7 @@ import static org.junit.Assert.assertEquals;
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  * @author Stephen Mallette (http://stephen.genoprime.com)
  */
-public abstract class AddEdgeTest extends AbstractGremlinTest {
+public abstract class AddEdgeTest extends AbstractGremlinProcessTest {
 
     public abstract Traversal<Vertex, Edge> get_g_VX1X_asXaX_outXcreatedX_addOutEXcreatedBy_aX(final Object v1Id);
 
@@ -49,6 +50,7 @@ public abstract class AddEdgeTest extends AbstractGremlinTest {
     @Test
     @LoadGraphWith(MODERN)
     @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
+    @IgnoreEngine(TraversalEngine.Type.COMPUTER)
     public void g_VX1X_asXaX_outXcreatedX_addOutEXcreatedBy_aX() {
         final Traversal<Vertex, Edge> traversal = get_g_VX1X_asXaX_outXcreatedX_addOutEXcreatedBy_aX(convertToVertexId("marko"));
         printTraversalForm(traversal);
@@ -68,6 +70,7 @@ public abstract class AddEdgeTest extends AbstractGremlinTest {
     @Test
     @LoadGraphWith(MODERN)
     @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
+    @IgnoreEngine(TraversalEngine.Type.COMPUTER)
     public void g_VX1X_asXaX_outXcreatedX_addOutEXcreatedBy_a_weight_2X() {
         final Traversal<Vertex, Edge> traversal = get_g_VX1X_asXaX_outXcreatedX_addOutEXcreatedBy_a_weight_2X(convertToVertexId("marko"));
         printTraversalForm(traversal);
@@ -89,6 +92,7 @@ public abstract class AddEdgeTest extends AbstractGremlinTest {
     @Test
     @LoadGraphWith(MODERN)
     @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
+    @IgnoreEngine(TraversalEngine.Type.COMPUTER)
     public void g_V_addOutEXexistsWith__g_V__time_nowX() {
         final Traversal<Vertex, Edge> traversal = get_g_V_addOutEXexistsWith__g_V__time_nowX();
         printTraversalForm(traversal);

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/abd23f4e/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/SideEffectTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/SideEffectTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/SideEffectTest.java
index 7d8cada..8545095 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/SideEffectTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/SideEffectTest.java
@@ -18,11 +18,12 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect;
 
-import org.apache.tinkerpop.gremlin.AbstractGremlinTest;
 import org.apache.tinkerpop.gremlin.LoadGraphWith;
+import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
+import org.apache.tinkerpop.gremlin.process.IgnoreEngine;
+import org.apache.tinkerpop.gremlin.process.UseEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
-import org.apache.tinkerpop.gremlin.process.UseEngine;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.junit.Test;
 
@@ -38,7 +39,7 @@ import static org.junit.Assert.*;
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  * @author Stephen Mallette (http://stephen.genoprime.com)
  */
-public abstract class SideEffectTest extends AbstractGremlinTest {
+public abstract class SideEffectTest extends AbstractGremlinProcessTest {
     public abstract Traversal<Vertex, String> get_g_VX1X_sideEffectXstore_aX_name(final Object v1Id);
 
     public abstract Traversal<Vertex, String> get_g_VX1X_out_sideEffectXincr_cX_name(final Object v1Id);
@@ -47,6 +48,7 @@ public abstract class SideEffectTest extends AbstractGremlinTest {
 
     @Test
     @LoadGraphWith(MODERN)
+    @IgnoreEngine(TraversalEngine.Type.COMPUTER)
     public void g_VX1X_sideEffectXstore_aX_name() {
         final Traversal<Vertex, String> traversal = get_g_VX1X_sideEffectXstore_aX_name(convertToVertexId("marko"));
         printTraversalForm(traversal);
@@ -57,6 +59,7 @@ public abstract class SideEffectTest extends AbstractGremlinTest {
 
     @Test
     @LoadGraphWith(MODERN)
+    @IgnoreEngine(TraversalEngine.Type.COMPUTER)
     public void g_VX1X_out_sideEffectXincr_cX_name() {
         final Traversal<Vertex, String> traversal = get_g_VX1X_out_sideEffectXincr_cX_name(convertToVertexId("marko"));
         printTraversalForm(traversal);
@@ -77,6 +80,7 @@ public abstract class SideEffectTest extends AbstractGremlinTest {
 
     @Test
     @LoadGraphWith(MODERN)
+    @IgnoreEngine(TraversalEngine.Type.COMPUTER)
     public void g_VX1X_out_sideEffectXX_name() {
         final Traversal<Vertex, String> traversal = get_g_VX1X_out_sideEffectXX_name(convertToVertexId("marko"));
         printTraversalForm(traversal);

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/abd23f4e/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/SubgraphTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/SubgraphTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/SubgraphTest.java
index a3cc8ed..198c9eb 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/SubgraphTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/SubgraphTest.java
@@ -18,21 +18,22 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect;
 
+import org.apache.commons.configuration.Configuration;
 import org.apache.tinkerpop.gremlin.FeatureRequirement;
 import org.apache.tinkerpop.gremlin.LoadGraphWith;
 import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
+import org.apache.tinkerpop.gremlin.process.IgnoreEngine;
+import org.apache.tinkerpop.gremlin.process.UseEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
-import org.apache.tinkerpop.gremlin.process.UseEngine;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
-import org.apache.commons.configuration.Configuration;
 import org.junit.Test;
 
 import java.util.Arrays;
 
 import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
-import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.*;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.bothE;
 import static org.apache.tinkerpop.gremlin.structure.Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES;
 import static org.apache.tinkerpop.gremlin.structure.Graph.Features.ElementFeatures.FEATURE_USER_SUPPLIED_IDS;
 import static org.apache.tinkerpop.gremlin.structure.Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES;
@@ -54,6 +55,7 @@ public abstract class SubgraphTest extends AbstractGremlinProcessTest {
     @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = FEATURE_ADD_EDGES)
     @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = FEATURE_USER_SUPPLIED_IDS)
     @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = FEATURE_USER_SUPPLIED_IDS)
+    @IgnoreEngine(TraversalEngine.Type.COMPUTER)
     public void g_V_withSideEffectXsgX_outEXknowsX_subgraphXsgX_name_capXsgX() throws Exception {
         final Configuration config = graphProvider.newGraphConfiguration("subgraph", this.getClass(), name.getMethodName(), MODERN);
         graphProvider.clear(config);
@@ -86,6 +88,7 @@ public abstract class SubgraphTest extends AbstractGremlinProcessTest {
     @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = FEATURE_ADD_EDGES)
     @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = FEATURE_USER_SUPPLIED_IDS)
     @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = FEATURE_USER_SUPPLIED_IDS)
+    @IgnoreEngine(TraversalEngine.Type.COMPUTER)
     public void g_V_withSideEffectXsgX_repeatXbothEXcreatedX_subgraphXsgX_outVX_timesX5X_name_dedup() throws Exception {
         final Configuration config = graphProvider.newGraphConfiguration("subgraph", this.getClass(), name.getMethodName(), MODERN);
         graphProvider.clear(config);

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/abd23f4e/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/example/TraversalSupplier2.java
----------------------------------------------------------------------
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/example/TraversalSupplier2.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/example/TraversalSupplier2.java
index b3366c5..66cc883 100644
--- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/example/TraversalSupplier2.java
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/example/TraversalSupplier2.java
@@ -20,15 +20,19 @@ package org.apache.tinkerpop.gremlin.hadoop.process.computer.example;
 
 import org.apache.tinkerpop.gremlin.hadoop.structure.HadoopGraph;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
 
+import java.util.Map;
+import java.util.function.Function;
 import java.util.function.Supplier;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public class TraversalSupplier2 implements Supplier<Traversal> {
+public class TraversalSupplier2 implements Function<Graph, Traversal<Vertex, Map<Integer,Long>>> {
     @Override
-    public Traversal get() {
-        return HadoopGraph.open().traversal().V().<String>values("name").map(s -> s.get().length()).groupCount().<Integer>by(i -> i + 100);
+    public Traversal<Vertex,Map<Integer,Long>> apply(final Graph graph) {
+        return (Traversal) graph.traversal().V().<String>values("name").map(s -> s.get().length()).groupCount().<Integer>by(i -> i + 100);
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/abd23f4e/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/example/TraversalSupplier3.java
----------------------------------------------------------------------
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/example/TraversalSupplier3.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/example/TraversalSupplier3.java
index a1c0ecb..4b41791 100644
--- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/example/TraversalSupplier3.java
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/example/TraversalSupplier3.java
@@ -18,18 +18,21 @@
  */
 package org.apache.tinkerpop.gremlin.hadoop.process.computer.example;
 
-import org.apache.tinkerpop.gremlin.hadoop.structure.HadoopGraph;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
 
 import java.util.Collection;
-import java.util.function.Supplier;
+import java.util.List;
+import java.util.Map;
+import java.util.function.Function;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public class TraversalSupplier3 implements Supplier<Traversal> {
+public class TraversalSupplier3 implements Function<Graph, Traversal<Vertex, Map<String, List<Vertex>>>> {
     @Override
-    public Traversal get() {
-        return HadoopGraph.open().traversal().V().<String>values("name").group().<String>by(s -> s.substring(1, 2)).by(v -> v).<Collection>by(Collection::size);
+    public Traversal<Vertex, Map<String, List<Vertex>>> apply(final Graph graph) {
+        return (Traversal) graph.traversal().V().<String>values("name").group().<String>by(s -> s.substring(1, 2)).by(v -> v).<Collection>by(Collection::size);
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/abd23f4e/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/HadoopGraph.java
----------------------------------------------------------------------
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/HadoopGraph.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/HadoopGraph.java
index 3999d80..febd4c4 100644
--- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/HadoopGraph.java
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/HadoopGraph.java
@@ -67,15 +67,15 @@ import java.util.stream.Stream;
         method = "g_V_matchXa_0sungBy_b__a_0writtenBy_c__b_writtenBy_d__c_sungBy_d__d_hasXname_GarciaXX",
         reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.")
 @Graph.OptOut(
-        test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyMatchTest$StandardTraversals",
+        test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyMatchTest$Traversals",
         method = "g_V_matchXa_hasXname_GarciaX__a_0writtenBy_b__a_0sungBy_bX",
         reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.")
 @Graph.OptOut(
-        test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyMatchTest$StandardTraversals",
+        test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyMatchTest$Traversals",
         method = "g_V_matchXa_0sungBy_b__a_0sungBy_c__b_writtenBy_d__c_writtenBy_e__d_hasXname_George_HarisonX__e_hasXname_Bob_MarleyXX",
         reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.")
 @Graph.OptOut(
-        test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyMatchTest$StandardTraversals",
+        test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyMatchTest$Traversals",
         method = "g_V_matchXa_0sungBy_b__a_0writtenBy_c__b_writtenBy_d__c_sungBy_d__d_hasXname_GarciaXX",
         reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.")
 @Graph.OptOut(
@@ -91,15 +91,15 @@ import java.util.stream.Stream;
         method = "g_V_repeatXoutX_timesX8X_count",
         reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.")
 @Graph.OptOut(
-        test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyCountTest$StandardTraversals",
+        test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyCountTest$Traversals",
         method = "g_V_both_both_count",
         reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.")
 @Graph.OptOut(
-        test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyCountTest$StandardTraversals",
+        test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyCountTest$Traversals",
         method = "g_V_repeatXoutX_timesX3X_count",
         reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.")
 @Graph.OptOut(
-        test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyCountTest$StandardTraversals",
+        test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyCountTest$Traversals",
         method = "g_V_repeatXoutX_timesX8X_count",
         reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.")
 @Graph.OptOut(
@@ -119,7 +119,7 @@ import java.util.stream.Stream;
         method = "g_V_out_out_grateful_profile",
         reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.")
 @Graph.OptOut(
-        test = "org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroovyProfileTest$StandardTraversals",
+        test = "org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroovyProfileTest$Traversals",
         method = "g_V_out_out_grateful_profile",
         reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.")
 public class HadoopGraph implements Graph {


[34/50] [abbrv] incubator-tinkerpop git commit: Added nioPoolSize and parallelism settings to conf evaluator.

Posted by dk...@apache.org.
Added nioPoolSize and parallelism settings to conf evaluator.


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

Branch: refs/heads/TINKERPOP3-666
Commit: 77957a3c2db10478a3f0c3ab17ff3b414df6ad50
Parents: 81d348d
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Sat May 9 06:11:01 2015 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Sat May 9 06:11:01 2015 -0400

----------------------------------------------------------------------
 .../driver/util/ConfigurationEvaluator.java     | 69 +++++++++++---------
 .../driver/util/ProfilingApplication.java       | 10 +--
 2 files changed, 43 insertions(+), 36 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/77957a3c/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/util/ConfigurationEvaluator.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/util/ConfigurationEvaluator.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/util/ConfigurationEvaluator.java
index a00d7d1..2640683 100644
--- a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/util/ConfigurationEvaluator.java
+++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/util/ConfigurationEvaluator.java
@@ -30,47 +30,55 @@ import java.util.stream.Stream;
 public class ConfigurationEvaluator {
 
     private final List<Integer> minConnectionPoolSizeRange = Arrays.asList(4,8,12,16,32,64,96,128,192,256,384,512);
-    private final List<Integer> maxConnectionPoolSizeRange = Arrays.asList(4,8,12,16,32,64,96,128,192,256,384,512);
+    private final List<Integer> maxConnectionPoolSizeRange = Arrays.asList(16,32,64,96,128,192,256,384,512);
     private final List<Integer> minSimultaneousUsagePerConnectionRange = Arrays.asList(4,8,16,24,32,64,96,128);
     private final List<Integer> maxSimultaneousUsagePerConnectionRange = Arrays.asList(4,8,16,24,32,64,96,128);
     private final List<Integer> minInProcessPerConnectionRange = Arrays.asList(2,4,8,16,32,64,96,128);
-    private final List<Integer> maxInProcessPerConnectionRange = Arrays.asList(4,8,16,32,64,96,128);
-    private final List<Integer> workerPoolSizeRange = Arrays.asList(2,3,4,8,16,32);
+    private final List<Integer> maxInProcessPerConnectionRange = Arrays.asList(16,32,64,96,128);
+    private final List<Integer> workerPoolSizeRange = Arrays.asList(1,2,3,4,8,16,32);
+    private final List<Integer> nioPoolSizeRange = Arrays.asList(1,2,4);
+    private final List<Integer> parallelismSizeRange = Arrays.asList(1,2,4,8,16);
 
     public Stream<String[]> generate(final String [] args) {
         final Set<Set<Integer>> configsTried = new HashSet<>();
 
         // get ready for the some serious brute-force action here
-        for (int it = 0; it < workerPoolSizeRange.size(); it++) {
-            for (int iu = 0; iu < minInProcessPerConnectionRange.size(); iu++) {
-                for (int iv = 0; iv < maxInProcessPerConnectionRange.size(); iv++) {
-                    for (int iw = 0; iw < minConnectionPoolSizeRange.size(); iw++) {
-                        for (int ix = 0; ix < maxConnectionPoolSizeRange.size(); ix++) {
-                            for (int iy = 0; iy < minSimultaneousUsagePerConnectionRange.size(); iy++) {
-                                for (int iz = 0; iz < maxSimultaneousUsagePerConnectionRange.size(); iz++) {
-                                    if (minConnectionPoolSizeRange.get(iw) <= maxConnectionPoolSizeRange.get(ix)
-                                            && minInProcessPerConnectionRange.get(iu) <= maxInProcessPerConnectionRange.get(iv)
-                                            && minSimultaneousUsagePerConnectionRange.get(iy) <= maxSimultaneousUsagePerConnectionRange.get(iz)
-                                            && maxSimultaneousUsagePerConnectionRange.get(iz) <= maxInProcessPerConnectionRange.get(iv)) {
-                                        final Set s = new HashSet(Arrays.asList(it, iu, iv, iw, ix, iy, iz));
-                                        if (!configsTried.contains(s)) {
-                                            final Object[] argsToProfiler =
-                                                    Stream.of("workerPoolSize", workerPoolSizeRange.get(it).toString(),
-                                                            "minInProcessPerConnection", minInProcessPerConnectionRange.get(iu).toString(),
-                                                            "maxInProcessPerConnection", maxInProcessPerConnectionRange.get(iv).toString(),
-                                                            "minConnectionPoolSize", minConnectionPoolSizeRange.get(iw).toString(),
-                                                            "maxConnectionPoolSize", maxConnectionPoolSizeRange.get(ix).toString(),
-                                                            "minSimultaneousUsagePerConnection", minSimultaneousUsagePerConnectionRange.get(iy).toString(),
-                                                            "maxSimultaneousUsagePerConnection", maxSimultaneousUsagePerConnectionRange.get(iz).toString(),
-                                                            "noExit", Boolean.TRUE.toString()).toArray();
+        for (int ir = 0; ir < nioPoolSizeRange.size(); ir++) {
+            for (int is = 0; is < parallelismSizeRange.size(); is++) {
+                for (int it = 0; it < workerPoolSizeRange.size(); it++) {
+                    for (int iu = 0; iu < minInProcessPerConnectionRange.size(); iu++) {
+                        for (int iv = 0; iv < maxInProcessPerConnectionRange.size(); iv++) {
+                            for (int iw = 0; iw < minConnectionPoolSizeRange.size(); iw++) {
+                                for (int ix = 0; ix < maxConnectionPoolSizeRange.size(); ix++) {
+                                    for (int iy = 0; iy < minSimultaneousUsagePerConnectionRange.size(); iy++) {
+                                        for (int iz = 0; iz < maxSimultaneousUsagePerConnectionRange.size(); iz++) {
+                                            if (minConnectionPoolSizeRange.get(iw) <= maxConnectionPoolSizeRange.get(ix)
+                                                    && minInProcessPerConnectionRange.get(iu) <= maxInProcessPerConnectionRange.get(iv)
+                                                    && minSimultaneousUsagePerConnectionRange.get(iy) <= maxSimultaneousUsagePerConnectionRange.get(iz)
+                                                    && maxSimultaneousUsagePerConnectionRange.get(iz) <= maxInProcessPerConnectionRange.get(iv)) {
+                                                final Set s = new HashSet(Arrays.asList(it, iu, iv, iw, ix, iy, iz));
+                                                if (!configsTried.contains(s)) {
+                                                    final Object[] argsToProfiler =
+                                                            Stream.of("nioPoolSize", nioPoolSizeRange.get(ir).toString(),
+                                                                    "parallelism", parallelismSizeRange.get(is).toString(),
+                                                                    "workerPoolSize", workerPoolSizeRange.get(it).toString(),
+                                                                    "minInProcessPerConnection", minInProcessPerConnectionRange.get(iu).toString(),
+                                                                    "maxInProcessPerConnection", maxInProcessPerConnectionRange.get(iv).toString(),
+                                                                    "minConnectionPoolSize", minConnectionPoolSizeRange.get(iw).toString(),
+                                                                    "maxConnectionPoolSize", maxConnectionPoolSizeRange.get(ix).toString(),
+                                                                    "minSimultaneousUsagePerConnection", minSimultaneousUsagePerConnectionRange.get(iy).toString(),
+                                                                    "maxSimultaneousUsagePerConnection", maxSimultaneousUsagePerConnectionRange.get(iz).toString(),
+                                                                    "noExit", Boolean.TRUE.toString()).toArray();
 
-                                            final Object[] withExtraArgs = args.length > 0 ? Stream.concat(Stream.of(args), Stream.of(argsToProfiler)).toArray() : argsToProfiler;
+                                                    final Object[] withExtraArgs = args.length > 0 ? Stream.concat(Stream.of(args), Stream.of(argsToProfiler)).toArray() : argsToProfiler;
 
-                                            final String[] stringProfilerArgs = Arrays.copyOf(withExtraArgs, withExtraArgs.length, String[].class);
-                                            System.out.println("Testing with: " + Arrays.toString(stringProfilerArgs));
-                                            ProfilingApplication.main(stringProfilerArgs);
+                                                    final String[] stringProfilerArgs = Arrays.copyOf(withExtraArgs, withExtraArgs.length, String[].class);
+                                                    System.out.println("Testing with: " + Arrays.toString(stringProfilerArgs));
+                                                    ProfilingApplication.main(stringProfilerArgs);
 
-                                            configsTried.add(s);
+                                                    configsTried.add(s);
+                                                }
+                                            }
                                         }
                                     }
                                 }
@@ -81,7 +89,6 @@ public class ConfigurationEvaluator {
             }
         }
 
-
         System.out.println(configsTried.size());
         return null;
     }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/77957a3c/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/util/ProfilingApplication.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/util/ProfilingApplication.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/util/ProfilingApplication.java
index 1c51f21..462e442 100644
--- a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/util/ProfilingApplication.java
+++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/util/ProfilingApplication.java
@@ -101,7 +101,7 @@ public class ProfilingApplication {
     public static void main(final String[] args) {
         final Map<String,Object> options = ElementHelper.asMap(args);
         final boolean noExit = Boolean.parseBoolean(options.getOrDefault("noExit", "false").toString());
-        final int parallelism = Integer.parseInt(options.getOrDefault("parallelism", "2").toString());
+        final int parallelism = Integer.parseInt(options.getOrDefault("parallelism", "16").toString());
         final BasicThreadFactory threadFactory = new BasicThreadFactory.Builder().namingPattern("profiler-%d").build();
         final ExecutorService executor = Executors.newFixedThreadPool(parallelism, threadFactory);
 
@@ -111,7 +111,7 @@ public class ProfilingApplication {
             final int timeout = Integer.parseInt(options.getOrDefault("timeout", "1200000").toString());
             final int warmups = Integer.parseInt(options.getOrDefault("warmups", "5").toString());
             final int executions = Integer.parseInt(options.getOrDefault("executions", "10").toString());
-            final int nioPoolSize = Integer.parseInt(options.getOrDefault("nioPoolSize", "2").toString());
+            final int nioPoolSize = Integer.parseInt(options.getOrDefault("nioPoolSize", "1").toString());
             final int requests = Integer.parseInt(options.getOrDefault("requests", "10000").toString());
             final int minConnectionPoolSize = Integer.parseInt(options.getOrDefault("minConnectionPoolSize", "256").toString());
             final int maxConnectionPoolSize = Integer.parseInt(options.getOrDefault("maxConnectionPoolSize", "256").toString());
@@ -119,7 +119,7 @@ public class ProfilingApplication {
             final int maxSimultaneousUsagePerConnection = Integer.parseInt(options.getOrDefault("maxSimultaneousUsagePerConnection", "32").toString());
             final int maxInProcessPerConnection = Integer.parseInt(options.getOrDefault("maxInProcessPerConnection", "64").toString());
             final int minInProcessPerConnection = Integer.parseInt(options.getOrDefault("minInProcessPerConnection", "16").toString());
-            final int workerPoolSize = Integer.parseInt(options.getOrDefault("workerPoolSize", "16").toString());
+            final int workerPoolSize = Integer.parseInt(options.getOrDefault("workerPoolSize", "2").toString());
 
             final Cluster cluster = Cluster.build(host)
                     .minConnectionPoolSize(minConnectionPoolSize)
@@ -135,7 +135,7 @@ public class ProfilingApplication {
             final File f = null == fileName ? null : new File(fileName.toString());
             if (f != null && f.length() == 0) {
                 try (final PrintWriter writer = new PrintWriter(new BufferedWriter(new FileWriter(f, true)))) {
-                    writer.println("nioPoolSize\tminConnectionPoolSize\tmaxConnectionPoolSize\tminSimultaneousUsagePerConnection\tmaxSimultaneousUsagePerConnection\tminInProcessPerConnection\tmaxInProcessPerConnection\tworkerPoolSize\trequestPerSecond");
+                    writer.println("parallelism\nioPoolSize\tminConnectionPoolSize\tmaxConnectionPoolSize\tminSimultaneousUsagePerConnection\tmaxSimultaneousUsagePerConnection\tminInProcessPerConnection\tmaxInProcessPerConnection\tworkerPoolSize\trequestPerSecond");
                 }
             }
 
@@ -166,7 +166,7 @@ public class ProfilingApplication {
             System.out.println(String.format("avg req/sec: %s", averageRequestPerSecond));
             if (f != null) {
                 try (final PrintWriter writer = new PrintWriter(new BufferedWriter(new FileWriter(f, true)))) {
-                    writer.println(String.join("\t", String.valueOf(nioPoolSize), String.valueOf(minConnectionPoolSize), String.valueOf(maxConnectionPoolSize), String.valueOf(minSimultaneousUsagePerConnection), String.valueOf(maxSimultaneousUsagePerConnection), String.valueOf(minInProcessPerConnection), String.valueOf(maxInProcessPerConnection), String.valueOf(workerPoolSize), String.valueOf(averageRequestPerSecond)));
+                    writer.println(String.join("\t", String.valueOf(parallelism), "\t", String.valueOf(nioPoolSize), String.valueOf(minConnectionPoolSize), String.valueOf(maxConnectionPoolSize), String.valueOf(minSimultaneousUsagePerConnection), String.valueOf(maxSimultaneousUsagePerConnection), String.valueOf(minInProcessPerConnection), String.valueOf(maxInProcessPerConnection), String.valueOf(workerPoolSize), String.valueOf(averageRequestPerSecond)));
                 }
             }
 


[50/50] [abbrv] incubator-tinkerpop git commit: Merge branch 'master' into TINKERPOP3-666

Posted by dk...@apache.org.
Merge branch 'master' into TINKERPOP3-666

Resolved Conflicts:
	gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeTest.java
	gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchTest.java
	gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/SideEffectTest.java
	gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/SubgraphTest.java


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

Branch: refs/heads/TINKERPOP3-666
Commit: c20a91906dda8e63320260c6fe82c1efeffde15d
Parents: bbb6345 dbd2750
Author: Daniel Kuppitz <da...@hotmail.com>
Authored: Mon May 11 13:43:03 2015 +0200
Committer: Daniel Kuppitz <da...@hotmail.com>
Committed: Mon May 11 13:43:03 2015 +0200

----------------------------------------------------------------------
 CHANGELOG.asciidoc                              |    3 +
 README.asciidoc                                 |    1 +
 docs/src/the-traversal.asciidoc                 |   17 +
 .../gremlin/process/computer/MapReduce.java     |    9 +-
 .../gremlin/process/computer/VertexProgram.java |   15 +-
 .../peerpressure/ClusterCountMapReduce.java     |    3 +-
 .../ClusterPopulationMapReduce.java             |    3 +-
 .../peerpressure/PeerPressureVertexProgram.java |   37 +-
 .../ranking/pagerank/PageRankMapReduce.java     |    3 +-
 .../ranking/pagerank/PageRankVertexProgram.java |   41 +-
 .../traversal/TraversalScriptSupplier.java      |   67 -
 .../computer/traversal/TraversalSupplier.java   |   43 -
 .../traversal/TraversalVertexProgram.java       |   51 +-
 .../traversal/step/map/ComputerResultStep.java  |    2 +-
 .../mapreduce/TraverserMapReduce.java           |    5 +-
 .../util/AbstractVertexProgramBuilder.java      |    5 +-
 .../computer/util/ConfigurationTraversal.java   |   80 +
 .../process/computer/util/LambdaHolder.java     |  114 -
 .../computer/util/ScriptEngineCache.java        |   47 -
 .../computer/util/ScriptEngineLambda.java       |  111 -
 .../process/computer/util/ShellGraph.java       |  283 --
 .../process/traversal/TraversalStrategies.java  |    5 -
 .../traversal/dsl/graph/GraphTraversal.java     |   15 +-
 .../dsl/graph/GraphTraversalSource.java         |    2 +-
 .../process/traversal/step/filter/HasStep.java  |    2 +-
 .../traversal/step/filter/WhereStep.java        |   53 +-
 .../process/traversal/step/map/GroupStep.java   |   25 +-
 .../traversal/step/map/OrderGlobalStep.java     |    2 +-
 .../traversal/step/map/OrderLocalStep.java      |    4 +-
 .../step/sideEffect/AggregateStep.java          |    5 +-
 .../sideEffect/GroupCountSideEffectStep.java    |    5 +-
 .../step/sideEffect/GroupSideEffectStep.java    |    7 +-
 .../traversal/step/sideEffect/StoreStep.java    |    5 +-
 .../step/sideEffect/TreeSideEffectStep.java     |    3 +-
 .../process/traversal/step/util/BulkSet.java    |    2 +-
 .../traversal/step/util/ComputerAwareStep.java  |    2 +-
 .../traversal/step/util/HasContainer.java       |    6 +-
 .../step/util/ReducingBarrierStep.java          |    3 +-
 .../traversal/util/DefaultTraversal.java        |    5 +-
 .../traversal/util/TraversalObjectFunction.java |   47 +
 .../traversal/util/TraversalScriptFunction.java |   66 +
 .../traversal/util/TraversalScriptHelper.java   |   59 +
 .../tinkerpop/gremlin/structure/Graph.java      |    1 +
 .../apache/tinkerpop/gremlin/structure/P.java   |   11 +
 .../apache/tinkerpop/gremlin/util/Gremlin.java  |    3 +
 .../gremlin/util/ScriptEngineCache.java         |   47 +
 .../tinkerpop/gremlin/util/Serializer.java      |    5 +-
 .../apache/tinkerpop/gremlin/util/TimeUtil.java |    4 +
 .../util/function/ScriptEngineLambda.java       |  111 +
 .../gremlin/util/tools/MultiMapTest.java        |  136 +
 .../tinkerpop/gremlin/driver/Cluster.java       |    2 +-
 .../tinkerpop/gremlin/driver/Connection.java    |    2 +-
 .../gremlin/driver/ConnectionPool.java          |    2 +-
 .../driver/util/ConfigurationEvaluator.java     |   76 +-
 .../driver/util/ProfilingApplication.java       |  182 +-
 .../process/computer/ComputerTestHelper.groovy  |   47 -
 .../GroovyTraversalSideEffectsTest.groovy       |   10 +-
 .../step/branch/GroovyBranchTest.groovy         |   41 +-
 .../step/branch/GroovyChooseTest.groovy         |   20 +-
 .../step/branch/GroovyLocalTest.groovy          |   85 +-
 .../step/branch/GroovyRepeatTest.groovy         |   78 +-
 .../step/branch/GroovyUnionTest.groovy          |   59 +-
 .../traversal/step/filter/GroovyAndTest.groovy  |   30 +-
 .../traversal/step/filter/GroovyCoinTest.groovy |   26 +-
 .../step/filter/GroovyCyclicPathTest.groovy     |   25 +-
 .../step/filter/GroovyDedupTest.groovy          |   60 +-
 .../traversal/step/filter/GroovyDropTest.groovy |   12 +-
 .../step/filter/GroovyExceptTest.groovy         |   70 +-
 .../step/filter/GroovyFilterTest.groovy         |  126 +-
 .../step/filter/GroovyHasNotTest.groovy         |   32 +-
 .../traversal/step/filter/GroovyHasTest.groovy  |  138 +-
 .../traversal/step/filter/GroovyIsTest.groovy   |   49 +-
 .../traversal/step/filter/GroovyOrTest.groovy   |   31 +-
 .../step/filter/GroovyRangeTest.groovy          |  111 +-
 .../step/filter/GroovyRetainTest.groovy         |   31 +-
 .../step/filter/GroovySampleTest.groovy         |   69 +-
 .../step/filter/GroovySimplePathTest.groovy     |   26 +-
 .../step/filter/GroovyWhereTest.groovy          |   73 +-
 .../traversal/step/map/GroovyAddEdgeTest.groovy |   12 +-
 .../step/map/GroovyAddVertexTest.groovy         |   11 +-
 .../step/map/GroovyCoalesceTest.groovy          |   58 +-
 .../traversal/step/map/GroovyCountTest.groovy   |   69 +-
 .../traversal/step/map/GroovyFoldTest.groovy    |   40 +-
 .../traversal/step/map/GroovyMapTest.groovy     |   86 +-
 .../traversal/step/map/GroovyMatchTest.groovy   |    3 +-
 .../traversal/step/map/GroovyMaxTest.groovy     |   37 +-
 .../traversal/step/map/GroovyMeanTest.groovy    |   29 +-
 .../traversal/step/map/GroovyMinTest.groovy     |   37 +-
 .../traversal/step/map/GroovyOrderTest.groovy   |  127 +-
 .../traversal/step/map/GroovyPathTest.groovy    |   69 +-
 .../step/map/GroovyPropertiesTest.groovy        |   33 +-
 .../traversal/step/map/GroovySelectTest.groovy  |  246 +-
 .../traversal/step/map/GroovySumTest.groovy     |   29 +-
 .../traversal/step/map/GroovyUnfoldTest.groovy  |   26 +-
 .../step/map/GroovyValueMapTest.groovy          |   31 +-
 .../traversal/step/map/GroovyVertexTest.groovy  |  197 +-
 .../step/sideEffect/GroovyAggregateTest.groovy  |   32 +-
 .../step/sideEffect/GroovyGroupCountTest.groovy |   70 +-
 .../step/sideEffect/GroovyGroupTest.groovy      |   55 +-
 .../step/sideEffect/GroovyInjectTest.groovy     |   35 +-
 .../step/sideEffect/GroovyProfileTest.groovy    |   50 +-
 .../step/sideEffect/GroovySackTest.groovy       |   35 +-
 .../sideEffect/GroovySideEffectCapTest.groovy   |   29 +-
 .../step/sideEffect/GroovySideEffectTest.groovy |   18 +-
 .../step/sideEffect/GroovyStoreTest.groovy      |   42 +-
 .../step/sideEffect/GroovySubgraphTest.groovy   |   11 +-
 .../step/sideEffect/GroovyTreeTest.groovy       |   65 +-
 .../process/GroovyProcessComputerSuite.java     |  103 +-
 .../process/GroovyProcessStandardSuite.java     |  102 +-
 .../computer/util/ScriptEngineLambdaTest.java   |  162 --
 .../util/function/ScriptEngineLambdaTest.java   |  163 ++
 .../apache/tinkerpop/gremlin/TestHelper.java    |   10 +-
 .../ranking/PageRankVertexProgramTest.java      |    2 +-
 .../process/traversal/step/map/AddEdgeTest.java |    6 +-
 .../process/traversal/step/map/MatchTest.java   |    2 +
 .../step/sideEffect/SideEffectTest.java         |    8 +-
 .../traversal/step/sideEffect/SubgraphTest.java |    6 +-
 .../tinkerpop/gremlin/structure/GraphTest.java  |    1 +
 .../tinkerpop/gremlin/structure/IoTest.java     | 2457 ------------------
 .../gremlin/structure/SerializationTest.java    |   10 +-
 .../structure/StructureIntegrateSuite.java      |   52 +
 .../structure/StructureStandardSuite.java       |    1 +
 .../gremlin/structure/TransactionTest.java      |   10 +
 .../tinkerpop/gremlin/structure/VertexTest.java |    1 +
 .../gremlin/structure/io/IoIntegrateTest.java   |  107 +
 .../tinkerpop/gremlin/structure/io/IoTest.java  | 2450 +++++++++++++++++
 .../structure/util/star/StarGraphTest.java      |  101 +-
 .../tinkerpop/gremlin/hadoop/Constants.java     |    4 +
 .../groovy/plugin/HadoopRemoteAcceptor.java     |    2 +-
 .../hadoop/process/computer/HadoopCombine.java  |    5 +-
 .../hadoop/process/computer/HadoopMap.java      |    5 +-
 .../hadoop/process/computer/HadoopReduce.java   |    6 +-
 .../computer/example/TraversalSupplier1.java    |   12 +-
 .../computer/example/TraversalSupplier2.java    |   11 +-
 .../computer/example/TraversalSupplier3.java    |   14 +-
 .../computer/giraph/GiraphGraphComputer.java    |    2 +-
 .../process/computer/giraph/GiraphMemory.java   |    6 +-
 .../computer/giraph/GiraphMessageCombiner.java  |    5 +-
 .../computer/giraph/GiraphWorkerContext.java    |    5 +-
 .../process/computer/spark/SparkExecutor.java   |    9 +-
 .../computer/spark/SparkGraphComputer.java      |    2 +-
 .../process/computer/util/MemoryMapReduce.java  |    3 +-
 .../gremlin/hadoop/structure/HadoopGraph.java   |   14 +-
 .../structure/io/ObjectWritableComparator.java  |    7 +-
 .../tinkergraph/structure/TinkerGraph.java      |    1 +
 .../tinkergraph/TinkerGraphProvider.java        |    2 +-
 .../TinkerGraphStructureIntegrateTest.java      |   36 +
 147 files changed, 4298 insertions(+), 6283 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/c20a9190/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeTest.java
----------------------------------------------------------------------
diff --cc gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeTest.java
index 982e621,032fe57..df3f42a
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeTest.java
@@@ -18,13 -18,13 +18,13 @@@
   */
  package org.apache.tinkerpop.gremlin.process.traversal.step.map;
  
- import org.apache.tinkerpop.gremlin.AbstractGremlinTest;
  import org.apache.tinkerpop.gremlin.FeatureRequirement;
  import org.apache.tinkerpop.gremlin.LoadGraphWith;
+ import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
 -import org.apache.tinkerpop.gremlin.process.IgnoreEngine;
 +import org.apache.tinkerpop.gremlin.process.GremlinProcessRunner;
+ import org.apache.tinkerpop.gremlin.process.UseEngine;
  import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
  import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
- import org.apache.tinkerpop.gremlin.process.UseEngine;
  import org.apache.tinkerpop.gremlin.structure.Direction;
  import org.apache.tinkerpop.gremlin.structure.Edge;
  import org.apache.tinkerpop.gremlin.structure.Graph;
@@@ -40,8 -39,7 +40,8 @@@ import static org.junit.Assert.assertEq
   * @author Marko A. Rodriguez (http://markorodriguez.com)
   * @author Stephen Mallette (http://stephen.genoprime.com)
   */
 +@RunWith(GremlinProcessRunner.class)
- public abstract class AddEdgeTest extends AbstractGremlinTest {
+ public abstract class AddEdgeTest extends AbstractGremlinProcessTest {
  
      public abstract Traversal<Vertex, Edge> get_g_VX1X_asXaX_outXcreatedX_addOutEXcreatedBy_aX(final Object v1Id);
  

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/c20a9190/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchTest.java
----------------------------------------------------------------------
diff --cc gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchTest.java
index 672c704,637892d..f3499a0
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchTest.java
@@@ -45,6 -59,6 +45,8 @@@ import static org.apache.tinkerpop.grem
  import static org.apache.tinkerpop.gremlin.structure.P.neq;
  import static org.junit.Assert.*;
  
++<<<<<<<HEAD
++
  /**
   * @author Joshua Shinavier (http://fortytwo.net)
   * @author Marko A. Rodriguez (http://markorodriguez.com)

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/c20a9190/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/SideEffectTest.java
----------------------------------------------------------------------
diff --cc gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/SideEffectTest.java
index 9ab0306,8545095..c2ed140
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/SideEffectTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/SideEffectTest.java
@@@ -18,15 -18,14 +18,15 @@@
   */
  package org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect;
  
- import org.apache.tinkerpop.gremlin.AbstractGremlinTest;
  import org.apache.tinkerpop.gremlin.LoadGraphWith;
+ import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
 -import org.apache.tinkerpop.gremlin.process.IgnoreEngine;
 +import org.apache.tinkerpop.gremlin.process.GremlinProcessRunner;
+ import org.apache.tinkerpop.gremlin.process.UseEngine;
  import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
  import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
- import org.apache.tinkerpop.gremlin.process.UseEngine;
  import org.apache.tinkerpop.gremlin.structure.Vertex;
  import org.junit.Test;
 +import org.junit.runner.RunWith;
  
  import java.util.ArrayList;
  import java.util.Iterator;
@@@ -35,13 -34,12 +35,13 @@@ import java.util.List
  import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
  import static org.junit.Assert.*;
  
--
  /**
   * @author Marko A. Rodriguez (http://markorodriguez.com)
   * @author Stephen Mallette (http://stephen.genoprime.com)
   */
 +@RunWith(GremlinProcessRunner.class)
- public abstract class SideEffectTest extends AbstractGremlinTest {
+ public abstract class SideEffectTest extends AbstractGremlinProcessTest {
++
      public abstract Traversal<Vertex, String> get_g_VX1X_sideEffectXstore_aX_name(final Object v1Id);
  
      public abstract Traversal<Vertex, String> get_g_VX1X_out_sideEffectXincr_cX_name(final Object v1Id);

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/c20a9190/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/SubgraphTest.java
----------------------------------------------------------------------
diff --cc gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/SubgraphTest.java
index 30234f6,198c9eb..9da02d5
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/SubgraphTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/SubgraphTest.java
@@@ -21,15 -22,13 +22,14 @@@ import org.apache.commons.configuration
  import org.apache.tinkerpop.gremlin.FeatureRequirement;
  import org.apache.tinkerpop.gremlin.LoadGraphWith;
  import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
 -import org.apache.tinkerpop.gremlin.process.IgnoreEngine;
 +import org.apache.tinkerpop.gremlin.process.GremlinProcessRunner;
+ import org.apache.tinkerpop.gremlin.process.UseEngine;
  import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
  import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
- import org.apache.tinkerpop.gremlin.process.UseEngine;
  import org.apache.tinkerpop.gremlin.structure.Graph;
  import org.apache.tinkerpop.gremlin.structure.Vertex;
- import org.apache.commons.configuration.Configuration;
  import org.junit.Test;
 +import org.junit.runner.RunWith;
  
  import java.util.Arrays;
  


[41/50] [abbrv] incubator-tinkerpop git commit: greatly simplified the groovy test suite. its all generated via strings and thus, no need for STANDARD and COMPUTER versions of the tests.

Posted by dk...@apache.org.
greatly simplified the groovy test suite. its all generated via strings and thus, no need for STANDARD and COMPUTER versions of the tests.


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

Branch: refs/heads/TINKERPOP3-666
Commit: abd23f4ef34cb3143178573e543b76837052cf84
Parents: 2a5fa04
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Sat May 9 14:23:44 2015 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Sat May 9 14:23:44 2015 -0600

----------------------------------------------------------------------
 .../traversal/TraversalVertexProgram.java       |  11 +-
 .../process/computer/ComputerTestHelper.groovy  |  47 ----
 .../process/computer/GroovyTestHelper.groovy    |  53 ++++
 .../GroovyTraversalSideEffectsTest.groovy       |  10 +-
 .../step/branch/GroovyBranchTest.groovy         |  41 +---
 .../step/branch/GroovyChooseTest.groovy         |  20 +-
 .../step/branch/GroovyLocalTest.groovy          |  85 +------
 .../step/branch/GroovyRepeatTest.groovy         |  78 +-----
 .../step/branch/GroovyUnionTest.groovy          |  57 +----
 .../traversal/step/filter/GroovyAndTest.groovy  |  30 +--
 .../traversal/step/filter/GroovyCoinTest.groovy |  26 +-
 .../step/filter/GroovyCyclicPathTest.groovy     |  25 +-
 .../step/filter/GroovyDedupTest.groovy          |  60 +----
 .../traversal/step/filter/GroovyDropTest.groovy |  12 +-
 .../step/filter/GroovyExceptTest.groovy         |  70 +-----
 .../step/filter/GroovyFilterTest.groovy         | 122 +--------
 .../step/filter/GroovyHasNotTest.groovy         |  32 +--
 .../traversal/step/filter/GroovyHasTest.groovy  | 138 ++---------
 .../traversal/step/filter/GroovyIsTest.groovy   |  49 +---
 .../traversal/step/filter/GroovyOrTest.groovy   |  31 +--
 .../step/filter/GroovyRangeTest.groovy          | 111 +--------
 .../step/filter/GroovyRetainTest.groovy         |  31 +--
 .../step/filter/GroovySampleTest.groovy         |  60 +----
 .../step/filter/GroovySimplePathTest.groovy     |  26 +-
 .../step/filter/GroovyWhereTest.groovy          |  73 +-----
 .../traversal/step/map/GroovyAddEdgeTest.groovy |  12 +-
 .../step/map/GroovyAddVertexTest.groovy         |  11 +-
 .../step/map/GroovyCoalesceTest.groovy          |  58 +----
 .../traversal/step/map/GroovyCountTest.groovy   |  69 +-----
 .../traversal/step/map/GroovyFoldTest.groovy    |  40 +--
 .../traversal/step/map/GroovyMapTest.groovy     |  86 +------
 .../traversal/step/map/GroovyMatchTest.groovy   |   3 +-
 .../traversal/step/map/GroovyMaxTest.groovy     |  36 +--
 .../traversal/step/map/GroovyMeanTest.groovy    |  29 +--
 .../traversal/step/map/GroovyMinTest.groovy     |  37 +--
 .../traversal/step/map/GroovyOrderTest.groovy   | 127 +---------
 .../traversal/step/map/GroovyPathTest.groovy    |  69 +-----
 .../step/map/GroovyPropertiesTest.groovy        |  33 +--
 .../traversal/step/map/GroovySelectTest.groovy  | 246 +++----------------
 .../traversal/step/map/GroovySumTest.groovy     |  29 +--
 .../traversal/step/map/GroovyUnfoldTest.groovy  |  26 +-
 .../step/map/GroovyValueMapTest.groovy          |  31 +--
 .../traversal/step/map/GroovyVertexTest.groovy  | 197 +++------------
 .../step/sideEffect/GroovyAggregateTest.groovy  |  32 +--
 .../step/sideEffect/GroovyGroupCountTest.groovy |  70 +-----
 .../step/sideEffect/GroovyGroupTest.groovy      |  55 +----
 .../step/sideEffect/GroovyInjectTest.groovy     |  35 +--
 .../step/sideEffect/GroovyProfileTest.groovy    |  50 +---
 .../step/sideEffect/GroovySackTest.groovy       |  35 +--
 .../sideEffect/GroovySideEffectCapTest.groovy   |  24 +-
 .../step/sideEffect/GroovySideEffectTest.groovy |  18 +-
 .../step/sideEffect/GroovyStoreTest.groovy      |  42 +---
 .../step/sideEffect/GroovySubgraphTest.groovy   |  11 +-
 .../step/sideEffect/GroovyTreeTest.groovy       |  65 +----
 .../process/GroovyProcessComputerSuite.java     | 103 ++++----
 .../process/GroovyProcessStandardSuite.java     | 102 ++++----
 .../process/traversal/step/map/AddEdgeTest.java |  10 +-
 .../step/sideEffect/SideEffectTest.java         |  10 +-
 .../traversal/step/sideEffect/SubgraphTest.java |   9 +-
 .../computer/example/TraversalSupplier2.java    |  10 +-
 .../computer/example/TraversalSupplier3.java    |  13 +-
 .../gremlin/hadoop/structure/HadoopGraph.java   |  14 +-
 62 files changed, 579 insertions(+), 2566 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/abd23f4e/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 581a263..5e74393 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
@@ -94,12 +94,11 @@ public final class TraversalVertexProgram implements VertexProgram<TraverserSet<
     }
 
     /**
-     * A helper method to yield a {@link Supplier} of {@link Traversal} from the {@link Configuration}.
-     * The supplier is either a {@link Class}, {@link org.apache.tinkerpop.gremlin.process.computer.util.ScriptEngineLambda}, or a direct Java8 lambda.
+     * A helper method to yield a {@link Traversal} from the {@link Graph} and provided {@link Configuration}.
      *
      * @param graph         the graph that the traversal will run against
-     * @param configuration The configuration containing the public static TRAVERSAL_SUPPLIER key.
-     * @return the traversal supplier in the configuration
+     * @param configuration The configuration containing the TRAVERSAL_SUPPLIER key.
+     * @return the traversal supplied by the configuration
      */
     public static Traversal.Admin<?, ?> getTraversal(final Graph graph, final Configuration configuration) {
         return VertexProgram.<TraversalVertexProgram>createVertexProgram(graph, configuration).getTraversal();
@@ -113,7 +112,7 @@ public final class TraversalVertexProgram implements VertexProgram<TraverserSet<
     public void loadState(final Graph graph, final Configuration configuration) {
         this.configurationTraversal = ConfigurationTraversal.loadState(graph, configuration, TRAVERSAL_SUPPLIER);
         if (null == this.configurationTraversal) {
-            throw new IllegalArgumentException("The configuration does not have a traversal supplier");
+            throw new IllegalArgumentException("The configuration does not have a traversal supplier:" + TRAVERSAL_SUPPLIER);
         }
         this.traversal = this.configurationTraversal.get();
         ((ComputerResultStep) this.traversal.getEndStep()).byPass();
@@ -291,7 +290,7 @@ public final class TraversalVertexProgram implements VertexProgram<TraverserSet<
         }
 
 
-        public Builder traversal(final Class<Function<Graph,Traversal.Admin<?, ?>>> traversalClass) {
+        public Builder traversal(final Class<Function<Graph, Traversal.Admin<?, ?>>> traversalClass) {
             ConfigurationTraversal.storeState(traversalClass, this.configuration, TRAVERSAL_SUPPLIER);
             return this;
         }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/abd23f4e/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/computer/ComputerTestHelper.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/computer/ComputerTestHelper.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/computer/ComputerTestHelper.groovy
deleted file mode 100644
index c054fc8..0000000
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/computer/ComputerTestHelper.groovy
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tinkerpop.gremlin.process.computer
-
-import org.apache.tinkerpop.gremlin.process.computer.traversal.TraversalVertexProgram
-import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalSource
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource
-import org.apache.tinkerpop.gremlin.structure.Graph
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public class ComputerTestHelper {
-
-    public static final Traversal.Admin<?,?> compute(
-            final Graph graph,
-            final TraversalSource.Builder builder,
-            final String scriptEngineName,
-            final String traversalScript,
-            final Object... bindings) {
-
-        final TraversalVertexProgram program = TraversalVertexProgram.build().traversal(builder, scriptEngineName, traversalScript, bindings).create(graph);
-        final ComputerResult result = builder.create(graph).getGraphComputer().get().program(program).submit().get();
-        return program.computerResultTraversal(result);
-    }
-
-    public static final <S,E> Traversal.Admin<S,E> compute(final String script, final GraphTraversalSource g, final Object... bindings) {
-        return ComputerTestHelper.compute(g.getGraph().get(), g.asBuilder(), "gremlin-groovy", script, bindings);
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/abd23f4e/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/computer/GroovyTestHelper.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/computer/GroovyTestHelper.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/computer/GroovyTestHelper.groovy
new file mode 100644
index 0000000..d648720
--- /dev/null
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/computer/GroovyTestHelper.groovy
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.process.computer
+
+import org.apache.tinkerpop.gremlin.process.computer.traversal.TraversalScriptFunction
+import org.apache.tinkerpop.gremlin.process.computer.traversal.TraversalVertexProgram
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalSource
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource
+import org.apache.tinkerpop.gremlin.structure.Graph
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public class GroovyTestHelper {
+
+    public static final Traversal.Admin<?, ?> compute(
+            final Graph graph,
+            final TraversalSource.Builder builder,
+            final String scriptEngineName,
+            final String traversalScript,
+            final Object... bindings) {
+
+        if (builder.create(graph).getGraphComputer().isPresent()) {
+            final TraversalVertexProgram program = TraversalVertexProgram.build().traversal(builder, scriptEngineName, traversalScript, bindings).create(graph);
+            final ComputerResult result = builder.create(graph).getGraphComputer().get().program(program).submit().get();
+            return program.computerResultTraversal(result);
+        } else {
+            return new TraversalScriptFunction<>(builder, scriptEngineName, traversalScript, bindings).apply(graph);
+        }
+    }
+
+    public static final <S, E> Traversal.Admin<S, E> compute(
+            final String script, final GraphTraversalSource g, final Object... bindings) {
+        return GroovyTestHelper.compute(g.getGraph().get(), g.asBuilder(), "gremlin-groovy", script, bindings);
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/abd23f4e/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/GroovyTraversalSideEffectsTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/GroovyTraversalSideEffectsTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/GroovyTraversalSideEffectsTest.groovy
index 0f35473..d0c6038 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/GroovyTraversalSideEffectsTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/GroovyTraversalSideEffectsTest.groovy
@@ -17,19 +17,15 @@
  * under the License.
  */
 package org.apache.tinkerpop.gremlin.process.traversal
-
-import org.apache.tinkerpop.gremlin.process.UseEngine
-
 /**
  * @author Stephen Mallette (http://stephen.genoprime.com)
  */
 abstract class GroovyTraversalSideEffectsTest {
 
-    @UseEngine(TraversalEngine.Type.STANDARD)
-    public static class StandardTraversals extends TraversalSideEffectsTest {
+    public static class Traversals extends TraversalSideEffectsTest {
         @Override
-        TraversalSideEffects get_g_V_asAdmin_getSideEffects() {
-            g.V.asAdmin().sideEffects
+        public TraversalSideEffects get_g_V_asAdmin_getSideEffects() {
+            g.V().asAdmin().getSideEffects()
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/abd23f4e/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyBranchTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyBranchTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyBranchTest.groovy
index d1671a4..8e0c6eb 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyBranchTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyBranchTest.groovy
@@ -18,58 +18,25 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.branch
 
-import org.apache.tinkerpop.gremlin.LoadGraphWith
-import org.apache.tinkerpop.gremlin.process.computer.ComputerTestHelper
+import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine
-import org.apache.tinkerpop.gremlin.process.UseEngine
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__
 import org.apache.tinkerpop.gremlin.structure.Vertex
-import org.junit.Test
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
 public abstract class GroovyBranchTest {
 
-    @UseEngine(TraversalEngine.Type.STANDARD)
-    public static class StandardTraversals extends BranchTest {
+    public static class Traversals extends BranchTest {
 
         @Override
         public Traversal<Vertex, Object> get_g_V_branchXlabel_eq_person__a_bX_optionXa__ageX_optionXb__langX_optionXb__nameX() {
-            g.V.branch(__.label.is('person').count)
-                    .option(1L, __.age)
-                    .option(0L, __.lang)
-                    .option(0L, __.name)
+            GroovyTestHelper.compute("g.V.branch(__.label.is('person').count).option(1L, __.age).option(0L, __.lang).option(0L,__.name)", g);
         }
 
         @Override
         public Traversal<Vertex, Object> get_g_V_branchXlabelX_optionXperson__ageX_optionXsoftware__langX_optionXsoftware__nameX() {
-            g.V.branch(__.label)
-                    .option('person', __.age)
-                    .option('software', __.lang)
-                    .option('software', __.name);
-        }
-    }
-
-    @UseEngine(TraversalEngine.Type.COMPUTER)
-    public static class ComputerTraversals extends BranchTest {
-
-        @Test
-        @LoadGraphWith(org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN)
-        @Override
-        public void g_V_branchXlabel_eq_person__a_bX_optionXa__ageX_optionXb__langX_optionXb__nameX() {
-            super.g_V_branchXlabel_eq_person__a_bX_optionXa__ageX_optionXb__langX_optionXb__nameX();
-        }
-
-        @Override
-        public Traversal<Vertex, Object> get_g_V_branchXlabel_eq_person__a_bX_optionXa__ageX_optionXb__langX_optionXb__nameX() {
-            ComputerTestHelper.compute("g.V.branch(__.label.is('person').count).option(1L, __.age).option(0L, __.lang).option(0L,__.name)", g);
-        }
-
-        @Override
-        public Traversal<Vertex, Object> get_g_V_branchXlabelX_optionXperson__ageX_optionXsoftware__langX_optionXsoftware__nameX() {
-            ComputerTestHelper.compute("""
+            GroovyTestHelper.compute("""
             g.V.branch(__.label)
                     .option('person', __.age)
                     .option('software', __.lang)

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/abd23f4e/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyChooseTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyChooseTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyChooseTest.groovy
index 3ec89e9..f0c66b9 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyChooseTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyChooseTest.groovy
@@ -18,11 +18,8 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.branch
 
-import org.apache.tinkerpop.gremlin.process.computer.ComputerTestHelper
+import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine
-import org.apache.tinkerpop.gremlin.process.UseEngine
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
 /**
@@ -31,21 +28,10 @@ import org.apache.tinkerpop.gremlin.structure.Vertex
  */
 public abstract class GroovyChooseTest {
 
-    @UseEngine(TraversalEngine.Type.STANDARD)
-    public static class StandardTraversals extends ChooseTest {
-
-        @Override
-        public Traversal<Vertex, Object> get_g_V_chooseXout_countX_optionX2L__nameX_optionX3L__valueMapX() {
-            g.V.choose(__.out.count).option(2L, __.values('name')).option(3L, __.valueMap())
-        }
-    }
-
-    @UseEngine(TraversalEngine.Type.COMPUTER)
-    public static class ComputerTraversals extends ChooseTest {
-
+    public static class Traversals extends ChooseTest {
         @Override
         public Traversal<Vertex, Object> get_g_V_chooseXout_countX_optionX2L__nameX_optionX3L__valueMapX() {
-            ComputerTestHelper.compute("g.V.choose(__.out.count).option(2L, __.values('name')).option(3L, __.valueMap())", g);
+            GroovyTestHelper.compute("g.V.choose(__.out.count).option(2L, __.values('name')).option(3L, __.valueMap())", g);
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/abd23f4e/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyLocalTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyLocalTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyLocalTest.groovy
index d698403..fcf7a8c 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyLocalTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyLocalTest.groovy
@@ -18,14 +18,9 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.branch
 
-import org.apache.tinkerpop.gremlin.process.UseEngine
-import org.apache.tinkerpop.gremlin.process.computer.ComputerTestHelper
+import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__
 import org.apache.tinkerpop.gremlin.structure.Edge
-import org.apache.tinkerpop.gremlin.structure.Order
-import org.apache.tinkerpop.gremlin.structure.T
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
 /**
@@ -33,112 +28,56 @@ import org.apache.tinkerpop.gremlin.structure.Vertex
  */
 public abstract class GroovyLocalTest {
 
-    @UseEngine(TraversalEngine.Type.STANDARD)
-    public static class StandardTraversals extends LocalTest {
+    public static class Traversals extends LocalTest {
 
         @Override
         public Traversal<Vertex, String> get_g_V_localXpropertiesXlocationX_order_byXvalueX_limitX2XX_value() {
-            g.V.local(__.properties('location').order.by(T.value, Order.incr).limit(2)).value
+            GroovyTestHelper.compute("g.V.local(__.properties('location').order.by(T.value,Order.incr).limit(2)).value", g);
         }
 
         @Override
         public Traversal<Vertex, Map<String, Object>> get_g_V_hasXlabel_personX_asXaX_localXoutXcreatedX_asXbXX_selectXa_bX_byXnameX_byXidX() {
-            g.V.has(T.label, 'person').as('a').local(__.out('created').as('b')).select('a', 'b').by('name').by(T.id)
+            GroovyTestHelper.compute("g.V.has(T.label, 'person').as('a').local(__.out('created').as('b')).select('a', 'b').by('name').by(T.id)", g);
         }
 
         @Override
         public Traversal<Vertex, Long> get_g_V_localXoutE_countX() {
-            g.V.local(__.outE.count());
+            GroovyTestHelper.compute("g.V.local(__.outE.count())", g);
         }
 
         @Override
         public Traversal<Vertex, String> get_g_VX1X_localXoutEXknowsX_limitX1XX_inV_name(final Object v1Id) {
-            g.V(v1Id).local(__.outE('knows').limit(1)).inV.name
+            GroovyTestHelper.compute("g.V(v1Id).local(__.outE('knows').limit(1)).inV.name", g, "v1Id", v1Id);
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_localXbothEXcreatedX_limitX1XX_otherV_name() {
-            g.V().local(__.bothE('created').limit(1)).otherV.name
+            GroovyTestHelper.compute("g.V().local(__.bothE('created').limit(1)).otherV.name", g);
         }
 
         @Override
         public Traversal<Vertex, Edge> get_g_VX4X_localXbothEX1_createdX_limitX1XX(final Object v4Id) {
-            g.V(v4Id).local(__.bothE('created').limit(1))
+            GroovyTestHelper.compute("g.V(v4Id).local(__.bothE('created').limit(1))", g, "v4Id", v4Id);
         }
 
         @Override
         public Traversal<Vertex, Edge> get_g_VX4X_localXbothEXknows_createdX_limitX1XX(final Object v4Id) {
-            g.V(v4Id).local(__.bothE('knows', 'created').limit(1))
+            GroovyTestHelper.compute("g.V(v4Id).local(__.bothE('knows', 'created').limit(1))", g, "v4Id", v4Id);
         }
 
         @Override
         public Traversal<Vertex, String> get_g_VX4X_localXbothE_limitX1XX_otherV_name(final Object v4Id) {
-            g.V(v4Id).local(__.bothE.limit(1)).otherV.name
+            GroovyTestHelper.compute("g.V(v4Id).local(__.bothE.limit(1)).otherV.name", g, "v4Id", v4Id);
         }
 
         @Override
         public Traversal<Vertex, String> get_g_VX4X_localXbothE_limitX2XX_otherV_name(final Object v4Id) {
-            g.V(v4Id).local(__.bothE.limit(2)).otherV.name
+            GroovyTestHelper.compute("g.V(v4Id).local(__.bothE.limit(2)).otherV.name", g, "v4Id", v4Id);
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_localXinEXknowsX_limitX2XX_outV_name() {
-            g.V().inE('knows').local(__.limit(2).outV).name
+            GroovyTestHelper.compute("g.V().local(__.inE('knows').limit(2).outV).name", g);
         }
     }
-
-    @UseEngine(TraversalEngine.Type.COMPUTER)
-    public static class ComputerTraversals extends LocalTest {
-
-        @Override
-        public Traversal<Vertex, String> get_g_V_localXpropertiesXlocationX_order_byXvalueX_limitX2XX_value() {
-            ComputerTestHelper.compute("g.V.local(__.properties('location').order.by(T.value,Order.incr).limit(2)).value", g);
-        }
-
-        @Override
-        public Traversal<Vertex, Map<String, Object>> get_g_V_hasXlabel_personX_asXaX_localXoutXcreatedX_asXbXX_selectXa_bX_byXnameX_byXidX() {
-            ComputerTestHelper.compute("g.V.has(T.label, 'person').as('a').local(__.out('created').as('b')).select('a', 'b').by('name').by(T.id)", g);
-        }
-
-        @Override
-        public Traversal<Vertex, Long> get_g_V_localXoutE_countX() {
-            ComputerTestHelper.compute("g.V.local(__.outE.count())", g);
-        }
-
-        @Override
-        public Traversal<Vertex, String> get_g_VX1X_localXoutEXknowsX_limitX1XX_inV_name(final Object v1Id) {
-            ComputerTestHelper.compute("g.V(v1Id).local(__.outE('knows').limit(1)).inV.name", g, "v1Id", v1Id);
-        }
-
-        @Override
-        public Traversal<Vertex, String> get_g_V_localXbothEXcreatedX_limitX1XX_otherV_name() {
-            ComputerTestHelper.compute("g.V().local(__.bothE('created').limit(1)).otherV.name", g);
-        }
-
-        @Override
-        public Traversal<Vertex, Edge> get_g_VX4X_localXbothEX1_createdX_limitX1XX(final Object v4Id) {
-            ComputerTestHelper.compute("g.V(v4Id).local(__.bothE('created').limit(1))", g, "v4Id", v4Id);
-        }
-
-        @Override
-        public Traversal<Vertex, Edge> get_g_VX4X_localXbothEXknows_createdX_limitX1XX(final Object v4Id) {
-            ComputerTestHelper.compute("g.V(v4Id).local(__.bothE('knows', 'created').limit(1))", g, "v4Id", v4Id);
-        }
-
-        @Override
-        public Traversal<Vertex, String> get_g_VX4X_localXbothE_limitX1XX_otherV_name(final Object v4Id) {
-            ComputerTestHelper.compute("g.V(v4Id).local(__.bothE.limit(1)).otherV.name", g, "v4Id", v4Id);
-        }
-
-        @Override
-        public Traversal<Vertex, String> get_g_VX4X_localXbothE_limitX2XX_otherV_name(final Object v4Id) {
-            ComputerTestHelper.compute("g.V(v4Id).local(__.bothE.limit(2)).otherV.name", g, "v4Id", v4Id);
-        }
-
-        @Override
-        public Traversal<Vertex, String> get_g_V_localXinEXknowsX_limitX2XX_outV_name() {
-            ComputerTestHelper.compute("g.V().local(__.inE('knows').limit(2).outV).name", g);
-        }
-    }
-
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/abd23f4e/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyRepeatTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyRepeatTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyRepeatTest.groovy
index 67a989d..c3c872e 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyRepeatTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyRepeatTest.groovy
@@ -18,117 +18,61 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.branch
 
-import org.apache.tinkerpop.gremlin.process.UseEngine
-import org.apache.tinkerpop.gremlin.process.computer.ComputerTestHelper
+import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Path
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__
-import org.apache.tinkerpop.gremlin.structure.T
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
-import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.groupCount
-import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.has
-
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
 public abstract class GroovyRepeatTest {
 
-    @UseEngine(TraversalEngine.Type.STANDARD)
-    public static class StandardTraversals extends RepeatTest {
-
-        @Override
-        public Traversal<Vertex, Path> get_g_V_repeatXoutX_timesX2X_emit_path() {
-            g.V.repeat(__.out).times(2).emit.path
-        }
-
-        @Override
-        public Traversal<Vertex, String> get_g_V_repeatXoutX_timesX2X_repeatXinX_timesX2X_name() {
-            g.V.repeat(__.out).times(2).repeat(__.in).times(2).name
-        }
-
-        @Override
-        public Traversal<Vertex, Vertex> get_g_V_repeatXoutX_timesX2X() {
-            g.V.repeat(__.out).times(2)
-        }
-
-        @Override
-        public Traversal<Vertex, Vertex> get_g_V_repeatXoutX_timesX2X_emit() {
-            g.V.repeat(__.out).times(2).emit;
-        }
-
-        @Override
-        public Traversal<Vertex, String> get_g_VX1X_timesX2X_repeatXoutX_name(final Object v1Id) {
-            g.V(v1Id).times(2).repeat(__.out).name
-        }
-
-        @Override
-        public Traversal<Vertex, Path> get_g_V_emit_repeatXoutX_timesX2X_path() {
-            g.V.emit.repeat(__.out).times(2).path
-        }
-
-        @Override
-        public Traversal<Vertex, Path> get_g_V_emit_timesX2X_repeatXoutX_path() {
-            g.V.emit.times(2).repeat(__.out).path
-        }
-
-        @Override
-        public Traversal<Vertex, String> get_g_V_emitXhasXlabel_personXX_repeatXoutX_name(final Object v1Id) {
-            g.V(v1Id).emit(has(T.label, 'person')).repeat(__.out).name
-        }
-
-        @Override
-        public Traversal<Vertex, Map<String, Long>> get_g_V_repeatXgroupCountXmX_byXnameX_outX_timesX2X_capXmX() {
-            g.V.repeat(groupCount('m').by('name').out).times(2).cap('m')
-        }
-    }
+    public static class Traversals extends RepeatTest {
 
-    @UseEngine(TraversalEngine.Type.COMPUTER)
-    public static class ComputerTraversals extends RepeatTest {
         @Override
         public Traversal<Vertex, Path> get_g_V_repeatXoutX_timesX2X_emit_path() {
-            ComputerTestHelper.compute("g.V.repeat(__.out).times(2).emit.path", g)
+            GroovyTestHelper.compute("g.V.repeat(__.out).times(2).emit.path", g)
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_repeatXoutX_timesX2X_repeatXinX_timesX2X_name() {
-            ComputerTestHelper.compute("g.V.repeat(__.out).times(2).repeat(__.in).times(2).name", g)
+            GroovyTestHelper.compute("g.V.repeat(__.out).times(2).repeat(__.in).times(2).name", g)
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_repeatXoutX_timesX2X() {
-            ComputerTestHelper.compute("g.V.repeat(__.out).times(2)", g)
+            GroovyTestHelper.compute("g.V.repeat(__.out).times(2)", g)
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_repeatXoutX_timesX2X_emit() {
-            ComputerTestHelper.compute("g.V.repeat(__.out).times(2).emit", g)
+            GroovyTestHelper.compute("g.V.repeat(__.out).times(2).emit", g)
         }
 
         @Override
         public Traversal<Vertex, String> get_g_VX1X_timesX2X_repeatXoutX_name(Object v1Id) {
-            ComputerTestHelper.compute("g.V(v1Id).times(2).repeat(__.out).name", g, "v1Id", v1Id)
+            GroovyTestHelper.compute("g.V(v1Id).times(2).repeat(__.out).name", g, "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Path> get_g_V_emit_repeatXoutX_timesX2X_path() {
-            ComputerTestHelper.compute("g.V.emit.repeat(__.out).times(2).path", g)
+            GroovyTestHelper.compute("g.V.emit.repeat(__.out).times(2).path", g)
         }
 
         @Override
         public Traversal<Vertex, Path> get_g_V_emit_timesX2X_repeatXoutX_path() {
-            ComputerTestHelper.compute("g.V.emit.times(2).repeat(__.out).path", g)
+            GroovyTestHelper.compute("g.V.emit.times(2).repeat(__.out).path", g)
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_emitXhasXlabel_personXX_repeatXoutX_name(final Object v1Id) {
-            ComputerTestHelper.compute("g.V(v1Id).emit(has(T.label, 'person')).repeat(__.out).name", g, "v1Id", v1Id)
+            GroovyTestHelper.compute("g.V(v1Id).emit(has(T.label, 'person')).repeat(__.out).name", g, "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Long>> get_g_V_repeatXgroupCountXmX_byXnameX_outX_timesX2X_capXmX() {
-            ComputerTestHelper.compute("g.V.repeat(groupCount('m').by('name').out).times(2).cap('m')", g)
+            GroovyTestHelper.compute("g.V.repeat(groupCount('m').by('name').out).times(2).cap('m')", g)
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/abd23f4e/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyUnionTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyUnionTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyUnionTest.groovy
index 6bbf309..c20daee 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyUnionTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyUnionTest.groovy
@@ -19,77 +19,36 @@
 package org.apache.tinkerpop.gremlin.process.traversal.step.branch
 
 import org.apache.tinkerpop.gremlin.process.UseEngine
-import org.apache.tinkerpop.gremlin.process.computer.ComputerTestHelper
+import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
-import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.*
-
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
 public abstract class GroovyUnionTest {
 
-    @UseEngine(TraversalEngine.Type.STANDARD)
-    public static class StandardTraversals extends UnionTest {
-
-        public Traversal<Vertex, String> get_g_V_unionXout__inX_name() {
-            g.V.union(__.out, __.in).name
-        }
-
-        public Traversal<Vertex, String> get_g_VX1X_unionXrepeatXoutX_timesX2X__outX_name(final Object v1Id) {
-            g.V(v1Id).union(repeat(__.out).times(2), __.out).name
-        }
-
-        public Traversal<Vertex, String> get_g_V_chooseXlabel_is_person__unionX__out_lang__out_nameX__in_labelX() {
-            g.V.choose(__.label.is('person'), union(__.out.lang, __.out.name), __.in.label)
-        }
-
-        public Traversal<Vertex, Map<String, Long>> get_g_V_chooseXlabel_is_person__unionX__out_lang__out_nameX__in_labelX_groupCount() {
-            g.V.choose(__.label.is('person'), union(__.out.lang, __.out.name), __.in.label).groupCount
-        }
-
-        public Traversal<Vertex, Map<String, Long>> get_g_V_unionXrepeatXunionXoutXcreatedX__inXcreatedXX_timesX2X__repeatXunionXinXcreatedX__outXcreatedXX_timesX2XX_label_groupCount() {
-            g.V.union(
-                    repeat(union(
-                            out('created'),
-                            __.in('created'))).times(2),
-                    repeat(union(
-                            __.in('created'),
-                            out('created'))).times(2)).label.groupCount()
-        }
-
-        @Override
-        public Traversal<Vertex, Number> get_g_VX1_2X_unionXoutE_count__inE_count__outE_weight_sumX(
-                final Object v1Id, final Object v2Id) {
-            g.V(v1Id, v2Id).union(outE().count, inE().count, outE().weight.sum);
-        }
-
-    }
-
-    @UseEngine(TraversalEngine.Type.COMPUTER)
-    public static class ComputerTraversals extends UnionTest {
+    public static class Traversals extends UnionTest {
 
         public Traversal<Vertex, String> get_g_V_unionXout__inX_name() {
-            ComputerTestHelper.compute("g.V.union(__.out, __.in).name", g)
+            GroovyTestHelper.compute("g.V.union(__.out, __.in).name", g)
         }
 
         public Traversal<Vertex, String> get_g_VX1X_unionXrepeatXoutX_timesX2X__outX_name(final Object v1Id) {
-            ComputerTestHelper.compute("g.V(v1Id).union(repeat(__.out).times(2), __.out).name", g, "v1Id", v1Id)
+            GroovyTestHelper.compute("g.V(v1Id).union(repeat(__.out).times(2), __.out).name", g, "v1Id", v1Id)
         }
 
         public Traversal<Vertex, String> get_g_V_chooseXlabel_is_person__unionX__out_lang__out_nameX__in_labelX() {
-            ComputerTestHelper.compute("g.V.choose(__.label.is('person'), union(__.out.lang, __.out.name), __.in.label)", g)
+            GroovyTestHelper.compute("g.V.choose(__.label.is('person'), union(__.out.lang, __.out.name), __.in.label)", g)
         }
 
         public Traversal<Vertex, Map<String, Long>> get_g_V_chooseXlabel_is_person__unionX__out_lang__out_nameX__in_labelX_groupCount() {
-            ComputerTestHelper.compute("g.V.choose(__.label.is('person'), union(__.out.lang, __.out.name), __.in.label).groupCount", g)
+            GroovyTestHelper.compute("g.V.choose(__.label.is('person'), union(__.out.lang, __.out.name), __.in.label).groupCount", g)
         }
 
         public Traversal<Vertex, Map<String, Long>> get_g_V_unionXrepeatXunionXoutXcreatedX__inXcreatedXX_timesX2X__repeatXunionXinXcreatedX__outXcreatedXX_timesX2XX_label_groupCount() {
-            ComputerTestHelper.compute("""
+            GroovyTestHelper.compute("""
             g.V.union(
                     repeat(union(
                             out('created'),
@@ -103,7 +62,7 @@ public abstract class GroovyUnionTest {
         @Override
         public Traversal<Vertex, Number> get_g_VX1_2X_unionXoutE_count__inE_count__outE_weight_sumX(
                 final Object v1Id, final Object v2Id) {
-            ComputerTestHelper.compute("g.V(v1Id, v2Id).union(outE().count, inE().count, outE().weight.sum)", g, "v1Id", v1Id, "v2Id", v2Id);
+            GroovyTestHelper.compute("g.V(v1Id, v2Id).union(outE().count, inE().count, outE().weight.sum)", g, "v1Id", v1Id, "v2Id", v2Id);
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/abd23f4e/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyAndTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyAndTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyAndTest.groovy
index 8581464..fdd8f90 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyAndTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyAndTest.groovy
@@ -18,47 +18,25 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.filter
 
-import org.apache.tinkerpop.gremlin.process.computer.ComputerTestHelper
-import org.apache.tinkerpop.gremlin.structure.T
+import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine
-import org.apache.tinkerpop.gremlin.process.UseEngine
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
-import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.has
-import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.outE
-import static org.apache.tinkerpop.gremlin.structure.P.*;
-
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
 public abstract class GroovyAndTest {
 
-    @UseEngine(TraversalEngine.Type.STANDARD)
-    public static class StandardTraversals extends AndTest {
-
-        @Override
-        public Traversal<Vertex, String> get_g_V_andXhasXage_gt_27X__outE_count_gt_2X_name() {
-            g.V.and(has('age', gt(27)), outE().count.is(gte(2l))).name
-        }
-
-        @Override
-        public Traversal<Vertex, String> get_g_V_andXoutE__hasXlabel_personX_and_hasXage_gte_32XX_name() {
-            g.V.and(outE(), has(T.label, 'person') & has('age', gte(32))).name
-        }
-    }
-
-    @UseEngine(TraversalEngine.Type.COMPUTER)
-    public static class ComputerTraversals extends AndTest {
+    public static class Traversals extends AndTest {
 
         @Override
         public Traversal<Vertex, String> get_g_V_andXhasXage_gt_27X__outE_count_gt_2X_name() {
-            ComputerTestHelper.compute("g.V.and(has('age',gt(27)), outE().count.is(gte(2l))).name", g)
+            GroovyTestHelper.compute("g.V.and(has('age',gt(27)), outE().count.is(gte(2l))).name", g)
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_andXoutE__hasXlabel_personX_and_hasXage_gte_32XX_name() {
-            ComputerTestHelper.compute("g.V.and(outE(), has(T.label, 'person') & has('age', gte(32))).name", g)
+            GroovyTestHelper.compute("g.V.and(outE(), has(T.label, 'person') & has('age', gte(32))).name", g)
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/abd23f4e/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyCoinTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyCoinTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyCoinTest.groovy
index 01ae205..8127595 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyCoinTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyCoinTest.groovy
@@ -18,10 +18,8 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.filter
 
+import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.computer.ComputerTestHelper
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine
-import org.apache.tinkerpop.gremlin.process.UseEngine
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
 /**
@@ -29,31 +27,15 @@ import org.apache.tinkerpop.gremlin.structure.Vertex
  */
 public abstract class GroovyCoinTest {
 
-    @UseEngine(TraversalEngine.Type.STANDARD)
-    public static class StandardTraversals extends CoinTest {
-
-        @Override
-        public Traversal<Vertex, Vertex> get_g_V_coinX1X() {
-            g.V.coin(1.0f)
-        }
-
-        @Override
-        public Traversal<Vertex, Vertex> get_g_V_coinX0X() {
-            g.V.coin(0.0f)
-        }
-    }
-
-    @UseEngine(TraversalEngine.Type.COMPUTER)
-    public static class ComputerTraversals extends CoinTest {
-
+    public static class Traversals extends CoinTest {
         @Override
         public Traversal<Vertex, Vertex> get_g_V_coinX1X() {
-            ComputerTestHelper.compute("g.V.coin(1.0f)", g);
+            GroovyTestHelper.compute("g.V.coin(1.0f)", g);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_coinX0X() {
-            ComputerTestHelper.compute("g.V.coin(0.0f)", g);
+            GroovyTestHelper.compute("g.V.coin(0.0f)", g);
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/abd23f4e/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyCyclicPathTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyCyclicPathTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyCyclicPathTest.groovy
index ebe8338..fceaec9 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyCyclicPathTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyCyclicPathTest.groovy
@@ -18,11 +18,9 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.filter
 
+import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Path
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.computer.ComputerTestHelper
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine
-import org.apache.tinkerpop.gremlin.process.UseEngine
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
 /**
@@ -30,31 +28,16 @@ import org.apache.tinkerpop.gremlin.structure.Vertex
  */
 public abstract class GroovyCyclicPathTest {
 
-    @UseEngine(TraversalEngine.Type.STANDARD)
-    public static class StandardTraversals extends CyclicPathTest {
-
-        @Override
-        public Traversal<Vertex, Vertex> get_g_VX1X_outXcreatedX_inXcreatedX_cyclicPath(final Object v1Id) {
-            g.V(v1Id).out('created').in('created').cyclicPath
-        }
-
-        @Override
-        public Traversal<Vertex, Path> get_g_VX1X_outXcreatedX_inXcreatedX_cyclicPath_path(final Object v1Id) {
-            g.V(v1Id).out('created').in('created').cyclicPath.path
-        }
-    }
-
-    @UseEngine(TraversalEngine.Type.COMPUTER)
-    public static class ComputerTraversals extends CyclicPathTest {
+    public static class Traversals extends CyclicPathTest {
 
         @Override
         Traversal<Vertex, Vertex> get_g_VX1X_outXcreatedX_inXcreatedX_cyclicPath(final Object v1Id) {
-            ComputerTestHelper.compute("g.V(v1Id).out('created').in('created').cyclicPath", g, "v1Id", v1Id);
+            GroovyTestHelper.compute("g.V(v1Id).out('created').in('created').cyclicPath", g, "v1Id", v1Id);
         }
 
         @Override
         Traversal<Vertex, Path> get_g_VX1X_outXcreatedX_inXcreatedX_cyclicPath_path(final Object v1Id) {
-            ComputerTestHelper.compute("g.V(v1Id).out('created').in('created').cyclicPath().path()", g, "v1Id",v1Id);
+            GroovyTestHelper.compute("g.V(v1Id).out('created').in('created').cyclicPath().path()", g, "v1Id", v1Id);
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/abd23f4e/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyDedupTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyDedupTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyDedupTest.groovy
index c303f03..5e22987 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyDedupTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyDedupTest.groovy
@@ -18,17 +18,9 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.filter
 
-import org.apache.tinkerpop.gremlin.process.*
-import org.apache.tinkerpop.gremlin.process.computer.ComputerTestHelper
-import org.apache.tinkerpop.gremlin.process.traversal.Scope
-import org.apache.tinkerpop.gremlin.structure.T
+import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine
 import org.apache.tinkerpop.gremlin.structure.Vertex
-import org.junit.Test
-
-import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.bothE
-import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.dedup
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -36,32 +28,8 @@ import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.dedup
  */
 public abstract class GroovyDedupTest {
 
-    @UseEngine(TraversalEngine.Type.STANDARD)
-    public static class StandardTraversals extends DedupTest {
-        @Override
-        public Traversal<Vertex, String> get_g_V_both_dedup_name() {
-            g.V.both.dedup.name
-        }
-
-        @Override
-        public Traversal<Vertex, String> get_g_V_both_hasXlabel_softwareX_dedup_byXlangX_name() {
-            g.V.both.has(T.label, 'software').dedup.by('lang').name
-        }
-
-        @Override
-        public Traversal<Vertex, String> get_g_V_both_name_orderXa_bX_dedup() {
-            g.V().both().properties('name').order.by { a, b -> a.value() <=> b.value() }.dedup.value
-        }
-
-        @Override
-        Traversal<Vertex, Map<String, Set<Double>>> get_g_V_group_byXlabelX_byXbothE_valuesXweightX_foldX_byXdedupXlocalXX() {
-            g.V().group().by(T.label).by(bothE().values('weight').fold()).by(dedup(Scope.local))
-        }
-    }
-
-    @UseEngine(TraversalEngine.Type.COMPUTER)
-    public static class ComputerTraversals extends DedupTest {
-        @Override
+    public static class Traversals extends DedupTest {
+        /*@Override
         @Test
         @org.junit.Ignore("Traversal not supported by ComputerTraversalEngine.computer")
         public void g_V_both_dedup_name() {
@@ -77,29 +45,27 @@ public abstract class GroovyDedupTest {
         @Test
         @org.junit.Ignore("Traversal not supported by ComputerTraversalEngine.computer")
         public void g_V_both_name_orderXa_bX_dedup() {
-        }
+        }*/
 
         @Override
-        public Traversal<Vertex, Map<String, Set<Double>>> get_g_V_group_byXlabelX_byXbothE_valuesXweightX_foldX_byXdedupXlocalXX() {
-            ComputerTestHelper.compute("g.V().group().by(T.label).by(bothE().values('weight').fold()).by(dedup(Scope.local))", g);
+        public Traversal<Vertex, String> get_g_V_both_dedup_name() {
+            GroovyTestHelper.compute("g.V.both.dedup.name", g);
         }
 
         @Override
-        Traversal<Vertex, String> get_g_V_both_dedup_name() {
-            // override with nothing until the test itself is supported
-            return null
+        public Traversal<Vertex, Map<String, Set<Double>>> get_g_V_group_byXlabelX_byXbothE_valuesXweightX_foldX_byXdedupXlocalXX() {
+            GroovyTestHelper.compute("g.V().group().by(T.label).by(bothE().values('weight').fold()).by(dedup(Scope.local))", g);
         }
 
+
         @Override
-        Traversal<Vertex, String> get_g_V_both_hasXlabel_softwareX_dedup_byXlangX_name() {
-            // override with nothing until the test itself is supported
-            return null
+        public Traversal<Vertex, String> get_g_V_both_hasXlabel_softwareX_dedup_byXlangX_name() {
+            GroovyTestHelper.compute("g.V.both.has(T.label, 'software').dedup.by('lang').name", g);
         }
 
         @Override
-        Traversal<Vertex, String> get_g_V_both_name_orderXa_bX_dedup() {
-            // override with nothing until the test itself is supported
-            return null
+        public Traversal<Vertex, String> get_g_V_both_name_orderXa_bX_dedup() {
+            return GroovyTestHelper.compute("g.V().both().properties('name').order.by { a, b -> a.value() <=> b.value() }.dedup.value", g);
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/abd23f4e/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyDropTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyDropTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyDropTest.groovy
index e738662..1f5a8d7 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyDropTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyDropTest.groovy
@@ -19,9 +19,8 @@
 
 package org.apache.tinkerpop.gremlin.process.traversal.step.filter
 
-import org.apache.tinkerpop.gremlin.process.UseEngine
+import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine
 import org.apache.tinkerpop.gremlin.structure.Edge
 import org.apache.tinkerpop.gremlin.structure.Vertex
 import org.apache.tinkerpop.gremlin.structure.VertexProperty
@@ -31,22 +30,21 @@ import org.apache.tinkerpop.gremlin.structure.VertexProperty
  */
 public abstract class GroovyDropTest {
 
-    @UseEngine(TraversalEngine.Type.STANDARD)
-    public static class StandardTraversals extends DropTest {
+    public static class Traversals extends DropTest {
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_drop() {
-            g.V.drop
+            GroovyTestHelper.compute("g.V.drop", g)
         }
 
         @Override
         public Traversal<Vertex, Edge> get_g_V_outE_drop() {
-            g.V.outE.drop
+            GroovyTestHelper.compute("g.V.outE.drop", g)
         }
 
         @Override
         public Traversal<Vertex, VertexProperty> get_g_V_properties_drop() {
-            g.V.properties().drop
+            GroovyTestHelper.compute("g.V.properties().drop", g)
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/abd23f4e/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyExceptTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyExceptTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyExceptTest.groovy
index 68af198..0b03f2d 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyExceptTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyExceptTest.groovy
@@ -18,12 +18,9 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.filter
 
-import org.apache.tinkerpop.gremlin.process.UseEngine
-import org.apache.tinkerpop.gremlin.process.computer.ComputerTestHelper
+import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Path
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
 /**
@@ -32,95 +29,48 @@ import org.apache.tinkerpop.gremlin.structure.Vertex
  */
 public abstract class GroovyExceptTest {
 
-    @UseEngine(TraversalEngine.Type.STANDARD)
-    public static class StandardTraversals extends ExceptTest {
+    public static class Traversals extends ExceptTest {
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_out_exceptXg_v2X(final Object v1Id, final Object v2Id) {
-            g.V(v1Id).out.except(g.V(v2Id).next())
+            GroovyTestHelper.compute("g.V(v1Id).out.except(g.V(v2Id).next())", g, "v1Id", v1Id, "v2Id", v2Id);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_out_aggregateXxX_out_exceptXxX(final Object v1Id) {
-            g.V(v1Id).out.aggregate('x').out.except('x')
+            GroovyTestHelper.compute("g.V(v1Id).out.aggregate('x').out.except('x')", g, "v1Id", v1Id);
         }
 
         @Override
         public Traversal<Vertex, String> get_g_VX1X_outXcreatedX_inXcreatedX_exceptXg_v1X_name(final Object v1Id) {
-            g.V(v1Id).out('created').in('created').except(g.V(v1Id).next()).values('name')
+            GroovyTestHelper.compute("g.V(v1Id).out('created').in('created').except(g.V(v1Id).next()).values('name')", g, "v1Id", v1Id);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_exceptXg_V_toListX() {
-            g.V.out.except(g.V.toList())
+            GroovyTestHelper.compute("g.V.out.except(g.V.toList())", g);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_exceptXX() {
-            g.V.out.except([])
+            GroovyTestHelper.compute("g.V.out.except([])", g);
         }
 
         @Override
         public Traversal<Vertex, Path> get_g_VX1X_repeatXbothEXcreatedX_exceptXeX_aggregateXeX_otherVX_emit_path(
                 final Object v1Id) {
-            g.V(v1Id).repeat(__.bothE('created').except('e').aggregate('e').otherV).emit.path
+            GroovyTestHelper.compute("g.V(v1Id).repeat(__.bothE('created').except('e').aggregate('e').otherV).emit.path", g, "v1Id", v1Id);
         }
 
         @Override
         public Traversal<Vertex, Path> get_g_VX1X_repeatXbothEXcreatedX_dedup_otherVX_emit_path(
                 final Object v1Id) {
-            g.V(v1Id).repeat(__.bothE('created').dedup.otherV).emit.path
+            GroovyTestHelper.compute("g.V(v1Id).repeat(__.bothE('created').dedup.otherV).emit.path", g, "v1Id", v1Id);
         }
 
         @Override
         public Traversal<Vertex, String> get_g_VX1X_asXaX_outXcreatedX_inXcreatedX_exceptXaX_name(final Object v1Id) {
-            g.V(v1Id).as('a').out('created').in('created').except('a').name
-        }
-    }
-
-    @UseEngine(TraversalEngine.Type.COMPUTER)
-    public static class ComputerTraversals extends ExceptTest {
-
-        @Override
-        public Traversal<Vertex, Vertex> get_g_VX1X_out_exceptXg_v2X(final Object v1Id, final Object v2Id) {
-            ComputerTestHelper.compute("g.V(v1Id).out.except(g.V(v2Id).next())", g, "v1Id", v1Id, "v2Id", v2Id);
-        }
-
-        @Override
-        public Traversal<Vertex, Vertex> get_g_VX1X_out_aggregateXxX_out_exceptXxX(final Object v1Id) {
-            ComputerTestHelper.compute("g.V(v1Id).out.aggregate('x').out.except('x')", g, "v1Id", v1Id);
-        }
-
-        @Override
-        public Traversal<Vertex, String> get_g_VX1X_outXcreatedX_inXcreatedX_exceptXg_v1X_name(final Object v1Id) {
-            ComputerTestHelper.compute("g.V(v1Id).out('created').in('created').except(g.V(v1Id).next()).values('name')", g, "v1Id", v1Id);
-        }
-
-        @Override
-        public Traversal<Vertex, Vertex> get_g_V_exceptXg_V_toListX() {
-            ComputerTestHelper.compute("g.V.out.except(g.V.toList())", g);
-        }
-
-        @Override
-        public Traversal<Vertex, Vertex> get_g_V_exceptXX() {
-            ComputerTestHelper.compute("g.V.out.except([])", g);
-        }
-
-        @Override
-        public Traversal<Vertex, Path> get_g_VX1X_repeatXbothEXcreatedX_exceptXeX_aggregateXeX_otherVX_emit_path(
-                final Object v1Id) {
-            ComputerTestHelper.compute("g.V(v1Id).repeat(__.bothE('created').except('e').aggregate('e').otherV).emit.path", g, "v1Id", v1Id);
-        }
-
-        @Override
-        public Traversal<Vertex, Path> get_g_VX1X_repeatXbothEXcreatedX_dedup_otherVX_emit_path(
-                final Object v1Id) {
-            ComputerTestHelper.compute("g.V(v1Id).repeat(__.bothE('created').dedup.otherV).emit.path", g, "v1Id", v1Id);
-        }
-
-        @Override
-        public Traversal<Vertex, String> get_g_VX1X_asXaX_outXcreatedX_inXcreatedX_exceptXaX_name(final Object v1Id) {
-            ComputerTestHelper.compute("g.V(v1Id).as('a').out('created').in('created').except('a').name", g, "v1Id", v1Id);
+            GroovyTestHelper.compute("g.V(v1Id).as('a').out('created').in('created').except('a').name", g, "v1Id", v1Id);
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/abd23f4e/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyFilterTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyFilterTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyFilterTest.groovy
index 40cf643..ffc7140 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyFilterTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyFilterTest.groovy
@@ -20,7 +20,7 @@ package org.apache.tinkerpop.gremlin.process.traversal.step.filter
 
 import org.apache.tinkerpop.gremlin.LoadGraphWith
 import org.apache.tinkerpop.gremlin.process.UseEngine
-import org.apache.tinkerpop.gremlin.process.computer.ComputerTestHelper
+import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine
 import org.apache.tinkerpop.gremlin.structure.Edge
@@ -32,148 +32,46 @@ import org.junit.Test
  */
 public abstract class GroovyFilterTest {
 
-    @UseEngine(TraversalEngine.Type.STANDARD)
-    public static class StandardTraversals extends FilterTest {
+    public static class Traversals extends FilterTest {
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_filterXfalseX() {
-            g.V.filter { false }
+            GroovyTestHelper.compute("g.V.filter { false }", g);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_filterXtrueX() {
-            g.V.filter { true }
+            GroovyTestHelper.compute("g.V.filter { true }", g);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_filterXlang_eq_javaX() {
-            g.V.filter { it.property('lang').orElse("none") == 'java' }
+            GroovyTestHelper.compute("g.V.filter { it.property('lang').orElse('none') == 'java' }", g);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_filterXage_gt_30X(final Object v1Id) {
-            g.V(v1Id).filter { it.age > 30 }
+            GroovyTestHelper.compute("g.V(v1Id).filter { it.age > 30 }", g, "v1Id", v1Id);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_out_filterXage_gt_30X(final Object v1Id) {
-            g.V(v1Id).out.filter { it.property('age').orElse(0) > 30 }
+            GroovyTestHelper.compute("g.V(v1Id).out.filter { it.property('age').orElse(0) > 30 }", g, "v1Id", v1Id);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_filterXname_startsWith_m_OR_name_startsWith_pX() {
-            g.V.filter { it.name.startsWith('m') || it.name.startsWith('p') }
+            GroovyTestHelper.compute("g.V.filter { it.name.startsWith('m') || it.name.startsWith('p') }", g);
         }
 
         @Override
         public Traversal<Edge, Edge> get_g_E_filterXfalseX() {
-            g.E.filter { false }
+            GroovyTestHelper.compute("g.E.filter { false }", g);
         }
 
         @Override
         public Traversal<Edge, Edge> get_g_E_filterXtrueX() {
-            g.E.filter { true }
-        }
-    }
-
-    @UseEngine(TraversalEngine.Type.COMPUTER)
-    public static class ComputerTraversals extends FilterTest {
-
-
-        @Test
-        @LoadGraphWith(org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN)
-        @Override
-        public void g_V_filterXfalseX() {
-            super.g_V_filterXfalseX();
-        }
-
-        @Test
-        @LoadGraphWith(org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN)
-        @Override
-        public void g_V_filterXtrueX() {
-            super.g_V_filterXtrueX();
-        }
-
-        @Test
-        @LoadGraphWith(org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN)
-        @Override
-        public void g_V_filterXlang_eq_javaX() {
-            super.g_V_filterXlang_eq_javaX();
-        }
-
-        @Test
-        @LoadGraphWith(org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN)
-        @Override
-        public void g_VX1X_filterXage_gt_30X() {
-            super.g_VX1X_filterXage_gt_30X();
-        }
-
-        @Test
-        @LoadGraphWith(org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN)
-        @Override
-        public void g_VX1X_out_filterXage_gt_30X() {
-            super.g_VX1X_out_filterXage_gt_30X();
-        }
-
-        @Test
-        @LoadGraphWith(org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN)
-        @Override
-        public void g_V_filterXname_startsWith_m_OR_name_startsWith_pX() {
-            super.g_V_filterXname_startsWith_m_OR_name_startsWith_pX();
-        }
-
-        @Test
-        @LoadGraphWith(org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN)
-        @Override
-        public void g_E_filterXfalseX() {
-            super.g_E_filterXfalseX();
-        }
-
-        @Test
-        @LoadGraphWith(org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN)
-        @Override
-        public void g_E_filterXtrueX() {
-            super.g_E_filterXtrueX();
-        }
-
-        @Override
-        public Traversal<Vertex, Vertex> get_g_V_filterXfalseX() {
-            ComputerTestHelper.compute("g.V.filter { false }", g);
-        }
-
-        @Override
-        public Traversal<Vertex, Vertex> get_g_V_filterXtrueX() {
-            ComputerTestHelper.compute("g.V.filter { true }", g);
-        }
-
-        @Override
-        public Traversal<Vertex, Vertex> get_g_V_filterXlang_eq_javaX() {
-            ComputerTestHelper.compute("g.V.filter { it.property('lang').orElse('none') == 'java' }", g);
-        }
-
-        @Override
-        public Traversal<Vertex, Vertex> get_g_VX1X_filterXage_gt_30X(final Object v1Id) {
-            ComputerTestHelper.compute("g.V(v1Id).filter { it.age > 30 }", g, "v1Id", v1Id);
-        }
-
-        @Override
-        public Traversal<Vertex, Vertex> get_g_VX1X_out_filterXage_gt_30X(final Object v1Id) {
-            ComputerTestHelper.compute("g.V(v1Id).out.filter { it.property('age').orElse(0) > 30 }", g, "v1Id", v1Id);
-        }
-
-        @Override
-        public Traversal<Vertex, Vertex> get_g_V_filterXname_startsWith_m_OR_name_startsWith_pX() {
-            ComputerTestHelper.compute("g.V.filter { it.name.startsWith('m') || it.name.startsWith('p') }", g);
-        }
-
-        @Override
-        public Traversal<Edge, Edge> get_g_E_filterXfalseX() {
-            ComputerTestHelper.compute("g.E.filter { false }", g);
-        }
-
-        @Override
-        public Traversal<Edge, Edge> get_g_E_filterXtrueX() {
-            ComputerTestHelper.compute("g.E.filter { true }", g);
+            GroovyTestHelper.compute("g.E.filter { true }", g);
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/abd23f4e/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyHasNotTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyHasNotTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyHasNotTest.groovy
index 5593053..839215f 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyHasNotTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyHasNotTest.groovy
@@ -18,11 +18,8 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.filter
 
-import org.apache.tinkerpop.gremlin.process.UseEngine
-import org.apache.tinkerpop.gremlin.process.computer.ComputerTestHelper
+import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
 /**
@@ -30,39 +27,20 @@ import org.apache.tinkerpop.gremlin.structure.Vertex
  */
 public abstract class GroovyHasNotTest {
 
-    @UseEngine(TraversalEngine.Type.STANDARD)
-    public static class StandardTraversals extends HasNotTest {
+    public static class Traversals extends HasNotTest {
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_hasNotXprop(final Object v1Id, final String propertyKey) {
-            g.V(v1Id).hasNot(propertyKey)
+            GroovyTestHelper.compute("g.V(v1Id).hasNot('${propertyKey}')", g, "v1Id", v1Id);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_hasNotXprop(final String propertyKey) {
-            g.V.hasNot(propertyKey)
+            GroovyTestHelper.compute("g.V.hasNot('${propertyKey}')", g);
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_hasNotXoutXcreatedXX() {
-            return g.V().hasNot(__.out('created')).values('name');
-        }
-    }
-
-    @UseEngine(TraversalEngine.Type.COMPUTER)
-    public static class ComputerTraversals extends HasNotTest {
-        @Override
-        public Traversal<Vertex, Vertex> get_g_VX1X_hasNotXprop(final Object v1Id, final String propertyKey) {
-            ComputerTestHelper.compute("g.V(v1Id).hasNot('${propertyKey}')", g, "v1Id", v1Id);
-        }
-
-        @Override
-        public Traversal<Vertex, Vertex> get_g_V_hasNotXprop(final String propertyKey) {
-            ComputerTestHelper.compute("g.V.hasNot('${propertyKey}')", g);
-        }
-
-        @Override
-        public Traversal<Vertex, String> get_g_V_hasNotXoutXcreatedXX() {
-            ComputerTestHelper.compute("return g.V().hasNot(__.out('created')).values('name')", g);
+            GroovyTestHelper.compute("return g.V().hasNot(__.out('created')).values('name')", g);
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/abd23f4e/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyHasTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyHasTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyHasTest.groovy
index 3295d70..2f5a86c 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyHasTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyHasTest.groovy
@@ -18,197 +18,101 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.filter
 
-import org.apache.tinkerpop.gremlin.process.UseEngine
-import org.apache.tinkerpop.gremlin.process.computer.ComputerTestHelper
+import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__
 import org.apache.tinkerpop.gremlin.structure.Edge
-import org.apache.tinkerpop.gremlin.structure.T
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
-import static org.apache.tinkerpop.gremlin.structure.P.gt
-import static org.apache.tinkerpop.gremlin.structure.P.inside
-
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
 public abstract class GroovyHasTest {
 
-    @UseEngine(TraversalEngine.Type.STANDARD)
-    public static class StandardTraversals extends HasTest {
-
-        @Override
-        public Traversal<Edge, Edge> get_g_EX11X_outV_outE_hasXid_10X(final Object e11Id, final Object e8Id) {
-            g.E(e11Id).outV.outE.has(T.id, e8Id);
-        }
-
-        @Override
-        public Traversal<Vertex, String> get_g_V_outXknowsX_hasXoutXcreatedXX_name() {
-            g.V.out('knows').has(__.out('created')).name
-        }
-
-        @Override
-        public Traversal<Vertex, Vertex> get_g_VX1X_hasXkeyX(final Object v1Id, final String key) {
-            g.V(v1Id).has(key)
-        }
-
-        @Override
-        public Traversal<Vertex, Vertex> get_g_VX1X_hasXname_markoX(final Object v1Id) {
-            g.V(v1Id).has('name', 'marko')
-        }
-
-        @Override
-        public Traversal<Vertex, Vertex> get_g_V_hasXname_markoX() {
-            g.V.has('name', 'marko')
-        }
-
-        @Override
-        public Traversal<Vertex, Vertex> get_g_V_hasXname_blahX() {
-            g.V.has('name', 'blah')
-        }
-
-        @Override
-        public Traversal<Vertex, Vertex> get_g_V_hasXblahX() {
-            g.V.has('blah')
-        }
-
-        @Override
-        public Traversal<Vertex, Vertex> get_g_VX1X_hasXage_gt_30X(final Object v1Id) {
-            g.V(v1Id).has('age', gt(30))
-        }
-
-        @Override
-        public Traversal<Vertex, Vertex> get_g_VX1X_out_hasIdX2X(final Object v1Id, final Object v2Id) {
-            g.V(v1Id).out.hasId(v2Id)
-        }
-
-        @Override
-        public Traversal<Vertex, Vertex> get_g_VX1X_out_hasIdX2_3X(final Object v1Id, final Object v2Id, final Object v3Id) {
-            g.V(v1Id).out.hasId(v2Id, v3Id)
-        }
-
-        @Override
-        public Traversal<Vertex, Vertex> get_g_V_hasXage_gt_30X() {
-            g.V.has('age', gt(30))
-        }
-
-        @Override
-        public Traversal<Edge, Edge> get_g_EX7X_hasLabelXknowsX(final Object e7Id) {
-            g.E(e7Id).hasLabel('knows')
-        }
-
-        @Override
-        public Traversal<Edge, Edge> get_g_E_hasLabelXknowsX() {
-            g.E.hasLabel('knows')
-        }
-
-        @Override
-        public Traversal<Edge, Edge> get_g_E_hasLabelXuses_traversesX() {
-            g.E.hasLabel('uses', 'traverses')
-        }
-
-        @Override
-        Traversal<Vertex, Vertex> get_g_V_hasLabelXperson_software_blahX() {
-            g.V.hasLabel("person", "software", 'blah');
-        }
-
-        @Override
-        public Traversal<Vertex, Integer> get_g_V_hasXperson_name_markoX_age() {
-            g.V.has('person', 'name', 'marko').age;
-        }
-
-        @Override
-        public Traversal<Vertex, Vertex> get_g_VX1X_outE_hasXweight_inside_0_06X_inV(final Object v1Id) {
-            g.V(v1Id).outE.has('weight', inside(0.0d, 0.6d)).inV
-        }
-    }
-
-    @UseEngine(TraversalEngine.Type.COMPUTER)
-    public static class ComputerTraversals extends HasTest {
+    public static class Traversals extends HasTest {
         @Override
         public Traversal<Edge, Edge> get_g_EX11X_outV_outE_hasXid_10X(final Object e11Id, final Object e8Id) {
-            ComputerTestHelper.compute("g.E(e11Id).outV.outE.has(T.id, e8Id)", g, "e11Id", e11Id, "e8Id", e8Id);
+            GroovyTestHelper.compute("g.E(e11Id).outV.outE.has(T.id, e8Id)", g, "e11Id", e11Id, "e8Id", e8Id);
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_outXknowsX_hasXoutXcreatedXX_name() {
-            ComputerTestHelper.compute("g.V.out('knows').has(__.out('created')).name", g);
+            GroovyTestHelper.compute("g.V.out('knows').has(__.out('created')).name", g);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_hasXkeyX(final Object v1Id, final String key) {
-            ComputerTestHelper.compute("g.V(v1Id).has('${key}')", g, "v1Id", v1Id);
+            GroovyTestHelper.compute("g.V(v1Id).has('${key}')", g, "v1Id", v1Id);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_hasXname_markoX(final Object v1Id) {
-            ComputerTestHelper.compute("g.V(v1Id).has('name', 'marko')", g, "v1Id", v1Id);
+            GroovyTestHelper.compute("g.V(v1Id).has('name', 'marko')", g, "v1Id", v1Id);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_hasXname_markoX() {
-            ComputerTestHelper.compute("g.V.has('name', 'marko')", g);
+            GroovyTestHelper.compute("g.V.has('name', 'marko')", g);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_hasXname_blahX() {
-            ComputerTestHelper.compute(" g.V.has('name', 'blah')", g);
+            GroovyTestHelper.compute(" g.V.has('name', 'blah')", g);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_hasXblahX() {
-            ComputerTestHelper.compute("g.V.has('blah')", g);
+            GroovyTestHelper.compute("g.V.has('blah')", g);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_hasXage_gt_30X(final Object v1Id) {
-            ComputerTestHelper.compute("g.V(v1Id).has('age', gt(30))", g, "v1Id", v1Id);
+            GroovyTestHelper.compute("g.V(v1Id).has('age', gt(30))", g, "v1Id", v1Id);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_out_hasIdX2X(final Object v1Id, final Object v2Id) {
-            ComputerTestHelper.compute(" g.V(v1Id).out.hasId(v2Id)", g, "v1Id", v1Id, "v2Id", v2Id);
+            GroovyTestHelper.compute(" g.V(v1Id).out.hasId(v2Id)", g, "v1Id", v1Id, "v2Id", v2Id);
         }
 
         @Override
-        public Traversal<Vertex, Vertex> get_g_VX1X_out_hasIdX2_3X(final Object v1Id, final Object v2Id, final Object v3Id) {
-            ComputerTestHelper.compute(" g.V(v1Id).out.hasId(v2Id, v3Id)", g, "v1Id", v1Id, "v2Id", v2Id, "v3Id", v3Id);
+        public Traversal<Vertex, Vertex> get_g_VX1X_out_hasIdX2_3X(
+                final Object v1Id, final Object v2Id, final Object v3Id) {
+            GroovyTestHelper.compute(" g.V(v1Id).out.hasId(v2Id, v3Id)", g, "v1Id", v1Id, "v2Id", v2Id, "v3Id", v3Id);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_hasXage_gt_30X() {
-            ComputerTestHelper.compute("g.V.has('age', gt(30))", g);
+            GroovyTestHelper.compute("g.V.has('age', gt(30))", g);
         }
 
         @Override
         public Traversal<Edge, Edge> get_g_EX7X_hasLabelXknowsX(final Object e7Id) {
-            ComputerTestHelper.compute("g.E(e7Id).hasLabel('knows')", g, "e7Id", e7Id);
+            GroovyTestHelper.compute("g.E(e7Id).hasLabel('knows')", g, "e7Id", e7Id);
         }
 
         @Override
         public Traversal<Edge, Edge> get_g_E_hasLabelXknowsX() {
-            ComputerTestHelper.compute("g.E.hasLabel('knows')", g);
+            GroovyTestHelper.compute("g.E.hasLabel('knows')", g);
         }
 
         @Override
         public Traversal<Edge, Edge> get_g_E_hasLabelXuses_traversesX() {
-            ComputerTestHelper.compute("g.E.hasLabel('uses', 'traverses')", g);
+            GroovyTestHelper.compute("g.E.hasLabel('uses', 'traverses')", g);
         }
 
         @Override
         Traversal<Vertex, Vertex> get_g_V_hasLabelXperson_software_blahX() {
-            ComputerTestHelper.compute("g.V.hasLabel('person', 'software', 'blah')", g);
+            GroovyTestHelper.compute("g.V.hasLabel('person', 'software', 'blah')", g);
         }
 
         @Override
         public Traversal<Vertex, Integer> get_g_V_hasXperson_name_markoX_age() {
-            ComputerTestHelper.compute("g.V.has('person', 'name', 'marko').age", g);
+            GroovyTestHelper.compute("g.V.has('person', 'name', 'marko').age", g);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_outE_hasXweight_inside_0_06X_inV(final Object v1Id) {
-            ComputerTestHelper.compute("g.V(v1Id).outE.has('weight', inside(0.0d, 0.6d)).inV", g, "v1Id", v1Id);
+            GroovyTestHelper.compute("g.V(v1Id).outE.has('weight', inside(0.0d, 0.6d)).inV", g, "v1Id", v1Id);
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/abd23f4e/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyIsTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyIsTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyIsTest.groovy
index e567735..05559e9 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyIsTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyIsTest.groovy
@@ -18,75 +18,40 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.filter
 
-import org.apache.tinkerpop.gremlin.process.UseEngine
-import org.apache.tinkerpop.gremlin.process.computer.ComputerTestHelper
+import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
-import static org.apache.tinkerpop.gremlin.structure.P.*
-
 /**
  * @author Daniel Kuppitz (http://gremlin.guru)
  */
 public abstract class GroovyIsTest {
 
-    @UseEngine(TraversalEngine.Type.STANDARD)
-    public static class StandardTraversals extends IsTest {
-
-        @Override
-        public Traversal<Vertex, Integer> get_g_V_valuesXageX_isX32X() {
-            return g.V().values('age').is(32);
-        }
-
-        @Override
-        public Traversal<Vertex, Integer> get_g_V_valuesXageX_isXlte_30X() {
-            return g.V().values('age').is(lte(30));
-        }
-
-        @Override
-        public Traversal<Vertex, Integer> get_g_V_valuesXageX_isXgte_29X_isXlt_34X() {
-            return g.V().values('age').is(gte(29)).is(lt(34));
-        }
-
-        @Override
-        public Traversal<Vertex, String> get_g_V_hasXinXcreatedX_count_isX1XX_valuesXnameX() {
-            return g.V().has(__.in('created').count().is(1)).values('name');
-        }
-
-        @Override
-        public Traversal<Vertex, String> get_g_V_hasXinXcreatedX_count_isXgte_2XX_valuesXnameX() {
-            return g.V().has(__.in('created').count().is(gte(2l))).values('name');
-        }
-    }
-
-    @UseEngine(TraversalEngine.Type.COMPUTER)
-    public static class ComputerTraversals extends IsTest {
+    public static class Traversals extends IsTest {
 
         @Override
         public Traversal<Vertex, Integer> get_g_V_valuesXageX_isX32X() {
-            ComputerTestHelper.compute("g.V.age.is(32)", g)
+            GroovyTestHelper.compute("g.V.age.is(32)", g)
         }
 
         @Override
         public Traversal<Vertex, Integer> get_g_V_valuesXageX_isXlte_30X() {
-            ComputerTestHelper.compute("g.V.age.is(lte(30))", g)
+            GroovyTestHelper.compute("g.V.age.is(lte(30))", g)
         }
 
         @Override
         public Traversal<Vertex, Integer> get_g_V_valuesXageX_isXgte_29X_isXlt_34X() {
-            ComputerTestHelper.compute("g.V.age.is(gte(29)).is(lt(34))", g)
+            GroovyTestHelper.compute("g.V.age.is(gte(29)).is(lt(34))", g)
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_hasXinXcreatedX_count_isX1XX_valuesXnameX() {
-            ComputerTestHelper.compute("g.V.has(__.in('created').count.is(1)).name", g)
+            GroovyTestHelper.compute("g.V.has(__.in('created').count.is(1)).name", g)
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_hasXinXcreatedX_count_isXgte_2XX_valuesXnameX() {
-            ComputerTestHelper.compute("g.V.has(__.in('created').count.is(gte(2l))).name", g)
+            GroovyTestHelper.compute("g.V.has(__.in('created').count.is(gte(2l))).name", g)
         }
     }
 }


[28/50] [abbrv] incubator-tinkerpop git commit: Merge remote-tracking branch 'origin/master'

Posted by dk...@apache.org.
Merge remote-tracking branch 'origin/master'


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

Branch: refs/heads/TINKERPOP3-666
Commit: 81d348d8caad5cf963b423a0c377c83d7b3ec61e
Parents: 2fb5ed9 80e511c
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri May 8 16:46:44 2015 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri May 8 16:46:44 2015 -0400

----------------------------------------------------------------------
 .../peerpressure/PeerPressureVertexProgram.java |  34 +--
 .../ranking/pagerank/PageRankVertexProgram.java |  38 +--
 .../traversal/TraversalObjectFunction.java      |  47 +++
 .../traversal/TraversalScriptFunction.java      |  69 +++++
 .../traversal/TraversalScriptSupplier.java      |  67 -----
 .../computer/traversal/TraversalSupplier.java   |  43 ---
 .../traversal/TraversalVertexProgram.java       |  35 +--
 .../traversal/step/map/ComputerResultStep.java  |   2 +-
 .../computer/util/ConfigurationTraversal.java   |  82 ++++++
 .../process/computer/util/LambdaHolder.java     | 114 --------
 .../process/computer/util/ShellGraph.java       | 283 -------------------
 .../process/traversal/TraversalStrategies.java  |   5 -
 .../dsl/graph/GraphTraversalSource.java         |   2 +-
 .../traversal/step/util/ComputerAwareStep.java  |   2 +-
 .../step/util/ReducingBarrierStep.java          |   3 +-
 .../traversal/util/DefaultTraversal.java        |   2 +-
 .../process/computer/ComputerTestHelper.groovy  |   6 +-
 .../groovy/plugin/HadoopRemoteAcceptor.java     |   2 +-
 .../computer/example/TraversalSupplier1.java    |  12 +-
 .../computer/example/TraversalSupplier2.java    |   3 +-
 .../computer/example/TraversalSupplier3.java    |   3 +-
 21 files changed, 265 insertions(+), 589 deletions(-)
----------------------------------------------------------------------



[37/50] [abbrv] incubator-tinkerpop git commit: Properly close the cluster in the profiling app.

Posted by dk...@apache.org.
Properly close the cluster in the profiling app.


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

Branch: refs/heads/TINKERPOP3-666
Commit: 2a5fa0404ebd10bc146e58e7f608f70249a5db0f
Parents: 125f9bb
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Sat May 9 11:51:03 2015 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Sat May 9 11:51:03 2015 -0400

----------------------------------------------------------------------
 .../driver/util/ConfigurationEvaluator.java     |  5 +-
 .../driver/util/ProfilingApplication.java       | 51 ++++++++++----------
 2 files changed, 29 insertions(+), 27 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/2a5fa040/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/util/ConfigurationEvaluator.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/util/ConfigurationEvaluator.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/util/ConfigurationEvaluator.java
index 2640683..33304b1 100644
--- a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/util/ConfigurationEvaluator.java
+++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/util/ConfigurationEvaluator.java
@@ -22,6 +22,7 @@ import java.util.Arrays;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
+import java.util.concurrent.TimeUnit;
 import java.util.stream.Stream;
 
 /**
@@ -39,7 +40,7 @@ public class ConfigurationEvaluator {
     private final List<Integer> nioPoolSizeRange = Arrays.asList(1,2,4);
     private final List<Integer> parallelismSizeRange = Arrays.asList(1,2,4,8,16);
 
-    public Stream<String[]> generate(final String [] args) {
+    public Stream<String[]> generate(final String [] args) throws Exception {
         final Set<Set<Integer>> configsTried = new HashSet<>();
 
         // get ready for the some serious brute-force action here
@@ -75,7 +76,7 @@ public class ConfigurationEvaluator {
                                                     final String[] stringProfilerArgs = Arrays.copyOf(withExtraArgs, withExtraArgs.length, String[].class);
                                                     System.out.println("Testing with: " + Arrays.toString(stringProfilerArgs));
                                                     ProfilingApplication.main(stringProfilerArgs);
-
+                                                    TimeUnit.SECONDS.sleep(5);
                                                     configsTried.add(s);
                                                 }
                                             }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/2a5fa040/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/util/ProfilingApplication.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/util/ProfilingApplication.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/util/ProfilingApplication.java
index bd7efd2..1b0e211 100644
--- a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/util/ProfilingApplication.java
+++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/util/ProfilingApplication.java
@@ -105,32 +105,32 @@ public class ProfilingApplication {
         final BasicThreadFactory threadFactory = new BasicThreadFactory.Builder().namingPattern("profiler-%d").build();
         final ExecutorService executor = Executors.newFixedThreadPool(parallelism, threadFactory);
 
-        try {
-            final String host = options.getOrDefault("host", "localhost").toString();
-            final int minExpectedRps = Integer.parseInt(options.getOrDefault("minExpectedRps", "1000").toString());
-            final int timeout = Integer.parseInt(options.getOrDefault("timeout", "1200000").toString());
-            final int warmups = Integer.parseInt(options.getOrDefault("warmups", "5").toString());
-            final int executions = Integer.parseInt(options.getOrDefault("executions", "10").toString());
-            final int nioPoolSize = Integer.parseInt(options.getOrDefault("nioPoolSize", "1").toString());
-            final int requests = Integer.parseInt(options.getOrDefault("requests", "10000").toString());
-            final int minConnectionPoolSize = Integer.parseInt(options.getOrDefault("minConnectionPoolSize", "256").toString());
-            final int maxConnectionPoolSize = Integer.parseInt(options.getOrDefault("maxConnectionPoolSize", "256").toString());
-            final int minSimultaneousUsagePerConnection = Integer.parseInt(options.getOrDefault("minSimultaneousUsagePerConnection", "8").toString());
-            final int maxSimultaneousUsagePerConnection = Integer.parseInt(options.getOrDefault("maxSimultaneousUsagePerConnection", "32").toString());
-            final int maxInProcessPerConnection = Integer.parseInt(options.getOrDefault("maxInProcessPerConnection", "64").toString());
-            final int minInProcessPerConnection = Integer.parseInt(options.getOrDefault("minInProcessPerConnection", "16").toString());
-            final int workerPoolSize = Integer.parseInt(options.getOrDefault("workerPoolSize", "2").toString());
-
-            final Cluster cluster = Cluster.build(host)
-                    .minConnectionPoolSize(minConnectionPoolSize)
-                    .maxConnectionPoolSize(maxConnectionPoolSize)
-                    .minSimultaneousUsagePerConnection(minSimultaneousUsagePerConnection)
-                    .maxSimultaneousUsagePerConnection(maxSimultaneousUsagePerConnection)
-                    .minInProcessPerConnection(minInProcessPerConnection)
-                    .maxInProcessPerConnection(maxInProcessPerConnection)
-                    .nioPoolSize(nioPoolSize)
-                    .workerPoolSize(workerPoolSize).create();
+        final String host = options.getOrDefault("host", "localhost").toString();
+        final int minExpectedRps = Integer.parseInt(options.getOrDefault("minExpectedRps", "1000").toString());
+        final int timeout = Integer.parseInt(options.getOrDefault("timeout", "1200000").toString());
+        final int warmups = Integer.parseInt(options.getOrDefault("warmups", "5").toString());
+        final int executions = Integer.parseInt(options.getOrDefault("executions", "10").toString());
+        final int nioPoolSize = Integer.parseInt(options.getOrDefault("nioPoolSize", "1").toString());
+        final int requests = Integer.parseInt(options.getOrDefault("requests", "10000").toString());
+        final int minConnectionPoolSize = Integer.parseInt(options.getOrDefault("minConnectionPoolSize", "256").toString());
+        final int maxConnectionPoolSize = Integer.parseInt(options.getOrDefault("maxConnectionPoolSize", "256").toString());
+        final int minSimultaneousUsagePerConnection = Integer.parseInt(options.getOrDefault("minSimultaneousUsagePerConnection", "8").toString());
+        final int maxSimultaneousUsagePerConnection = Integer.parseInt(options.getOrDefault("maxSimultaneousUsagePerConnection", "32").toString());
+        final int maxInProcessPerConnection = Integer.parseInt(options.getOrDefault("maxInProcessPerConnection", "64").toString());
+        final int minInProcessPerConnection = Integer.parseInt(options.getOrDefault("minInProcessPerConnection", "16").toString());
+        final int workerPoolSize = Integer.parseInt(options.getOrDefault("workerPoolSize", "2").toString());
+
+        final Cluster cluster = Cluster.build(host)
+                .minConnectionPoolSize(minConnectionPoolSize)
+                .maxConnectionPoolSize(maxConnectionPoolSize)
+                .minSimultaneousUsagePerConnection(minSimultaneousUsagePerConnection)
+                .maxSimultaneousUsagePerConnection(maxSimultaneousUsagePerConnection)
+                .minInProcessPerConnection(minInProcessPerConnection)
+                .maxInProcessPerConnection(maxInProcessPerConnection)
+                .nioPoolSize(nioPoolSize)
+                .workerPoolSize(workerPoolSize).create();
 
+        try {
             final Object fileName = options.get("store");
             final File f = null == fileName ? null : new File(fileName.toString());
             if (f != null && f.length() == 0) {
@@ -176,6 +176,7 @@ public class ProfilingApplication {
             if (!noExit) System.exit(1);
         } finally {
             executor.shutdown();
+            cluster.close();
         }
     }
 }


[47/50] [abbrv] incubator-tinkerpop git commit: TraveraslScriptFunction tests the bindings at constructor. GroovyHasTest minor tweak. private Constants() {}.

Posted by dk...@apache.org.
TraveraslScriptFunction tests the bindings at constructor. GroovyHasTest minor tweak. private Constants() {}.


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

Branch: refs/heads/TINKERPOP3-666
Commit: 4ae2b2a5aea3473685158aaaede3caa311466d21
Parents: 0c24fdd
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Sat May 9 16:58:36 2015 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Sat May 9 16:58:36 2015 -0600

----------------------------------------------------------------------
 .../process/traversal/util/TraversalScriptFunction.java  | 11 ++++-------
 .../process/traversal/step/filter/GroovyHasTest.groovy   |  4 ++--
 .../org/apache/tinkerpop/gremlin/hadoop/Constants.java   |  4 ++++
 3 files changed, 10 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/4ae2b2a5/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalScriptFunction.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalScriptFunction.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalScriptFunction.java
index 6d67b0b..110e070 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalScriptFunction.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalScriptFunction.java
@@ -18,10 +18,10 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.util;
 
-import org.apache.tinkerpop.gremlin.util.ScriptEngineCache;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalSource;
 import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.apache.tinkerpop.gremlin.util.ScriptEngineCache;
 
 import javax.script.Bindings;
 import javax.script.ScriptEngine;
@@ -44,6 +44,8 @@ public final class TraversalScriptFunction<S, E> implements Function<Graph, Trav
         this.scriptEngineName = scriptEngineName;
         this.traversalScript = traversalScript;
         this.bindings = bindings;
+        if (this.bindings.length % 2 != 0)
+            throw new IllegalArgumentException("The provided key/value bindings array length must be a multiple of two");
     }
 
     public Traversal.Admin<S, E> apply(final Graph graph) {
@@ -51,16 +53,11 @@ public final class TraversalScriptFunction<S, E> implements Function<Graph, Trav
             final ScriptEngine engine = ScriptEngineCache.get(this.scriptEngineName);
             final Bindings engineBindings = engine.createBindings();
             engineBindings.put("g", this.traversalContextBuilder.create(graph));
-            if (this.bindings.length % 2 != 0)
-                throw new IllegalArgumentException("The provided key/value bindings array length must be a multiple of two");
             for (int i = 0; i < this.bindings.length; i = i + 2) {
                 engineBindings.put((String) this.bindings[i], this.bindings[i + 1]);
             }
             final Traversal.Admin<S, E> traversal = (Traversal.Admin<S, E>) engine.eval(this.traversalScript, engineBindings);
-            if (!traversal.isLocked()) {
-                traversal.setGraph(graph);
-                traversal.applyStrategies();
-            }
+            if (!traversal.isLocked()) traversal.applyStrategies();
             return traversal;
         } catch (final ScriptException e) {
             throw new IllegalStateException(e.getMessage(), e);

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/4ae2b2a5/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyHasTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyHasTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyHasTest.groovy
index cbedf72..e292bfc 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyHasTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyHasTest.groovy
@@ -18,8 +18,8 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.filter
 
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
 import org.apache.tinkerpop.gremlin.structure.Edge
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
@@ -41,7 +41,7 @@ public abstract class GroovyHasTest {
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_hasXkeyX(final Object v1Id, final String key) {
-            TraversalScriptHelper.compute("g.V(v1Id).has('${key}')", g, "v1Id", v1Id);
+            TraversalScriptHelper.compute("g.V(v1Id).has(k)", g, "v1Id", v1Id, "k", key);
         }
 
         @Override

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/4ae2b2a5/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/Constants.java
----------------------------------------------------------------------
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/Constants.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/Constants.java
index 2d70bdc..2aaa53b 100644
--- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/Constants.java
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/Constants.java
@@ -25,6 +25,10 @@ import org.apache.tinkerpop.gremlin.structure.Graph;
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
 public class Constants {
+
+    private Constants() {
+    }
+
     public static final String GREMLIN_HADOOP_INPUT_LOCATION = "gremlin.hadoop.inputLocation";
     public static final String GREMLIN_HADOOP_OUTPUT_LOCATION = "gremlin.hadoop.outputLocation";
     public static final String GREMLIN_HADOOP_GRAPH_INPUT_FORMAT = "gremlin.hadoop.graphInputFormat";


[44/50] [abbrv] incubator-tinkerpop git commit: GroovyComputerTestHelper is now general to gremlin-core/process/util. Renamed to TraversalScriptHelper and it will determine from the Source and Script whether its a STANDARD or COMPUTER traversal. Neat. Mo

Posted by dk...@apache.org.
GroovyComputerTestHelper is now general to gremlin-core/process/util. Renamed to TraversalScriptHelper and it will determine from the Source and Script whether its a STANDARD or COMPUTER traversal. Neat. Moved ScriptEngineLambda to gremlin-core/function.


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

Branch: refs/heads/TINKERPOP3-666
Commit: 97e46779a45d019ce450725c5a787af78a69cf06
Parents: abd23f4
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Sat May 9 14:41:32 2015 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Sat May 9 14:41:32 2015 -0600

----------------------------------------------------------------------
 .../peerpressure/PeerPressureVertexProgram.java |   4 +-
 .../ranking/pagerank/PageRankVertexProgram.java |   4 +-
 .../traversal/TraversalObjectFunction.java      |  47 --------
 .../traversal/TraversalScriptFunction.java      |  69 ------------
 .../traversal/TraversalVertexProgram.java       |   3 +-
 .../computer/util/ScriptEngineLambda.java       | 111 -------------------
 .../process/traversal/step/util/BulkSet.java    |   2 +-
 .../traversal/util/TraversalObjectFunction.java |  47 ++++++++
 .../traversal/util/TraversalScriptFunction.java |  69 ++++++++++++
 .../traversal/util/TraversalScriptHelper.java   |  59 ++++++++++
 .../util/function/ScriptEngineLambda.java       | 111 +++++++++++++++++++
 .../process/computer/GroovyTestHelper.groovy    |  53 ---------
 .../step/branch/GroovyBranchTest.groovy         |   6 +-
 .../step/branch/GroovyChooseTest.groovy         |   4 +-
 .../step/branch/GroovyLocalTest.groovy          |  22 ++--
 .../step/branch/GroovyRepeatTest.groovy         |  20 ++--
 .../step/branch/GroovyUnionTest.groovy          |  16 ++-
 .../traversal/step/filter/GroovyAndTest.groovy  |   6 +-
 .../traversal/step/filter/GroovyCoinTest.groovy |   6 +-
 .../step/filter/GroovyCyclicPathTest.groovy     |   6 +-
 .../step/filter/GroovyDedupTest.groovy          |  10 +-
 .../traversal/step/filter/GroovyDropTest.groovy |   8 +-
 .../step/filter/GroovyExceptTest.groovy         |  18 +--
 .../step/filter/GroovyFilterTest.groovy         |  22 ++--
 .../step/filter/GroovyHasNotTest.groovy         |   8 +-
 .../traversal/step/filter/GroovyHasTest.groovy  |  36 +++---
 .../traversal/step/filter/GroovyIsTest.groovy   |  12 +-
 .../traversal/step/filter/GroovyOrTest.groovy   |   6 +-
 .../step/filter/GroovyRangeTest.groovy          |  16 +--
 .../step/filter/GroovyRetainTest.groovy         |   8 +-
 .../step/filter/GroovySampleTest.groovy         |  21 +---
 .../step/filter/GroovySimplePathTest.groovy     |   6 +-
 .../step/filter/GroovyWhereTest.groovy          |  14 +--
 .../traversal/step/map/GroovyAddEdgeTest.groovy |   8 +-
 .../step/map/GroovyAddVertexTest.groovy         |   6 +-
 .../step/map/GroovyCoalesceTest.groovy          |  12 +-
 .../traversal/step/map/GroovyCountTest.groovy   |  16 +--
 .../traversal/step/map/GroovyFoldTest.groovy    |   8 +-
 .../traversal/step/map/GroovyMapTest.groovy     |  12 +-
 .../traversal/step/map/GroovyMaxTest.groovy     |   9 +-
 .../traversal/step/map/GroovyMeanTest.groovy    |   6 +-
 .../traversal/step/map/GroovyMinTest.groovy     |   8 +-
 .../traversal/step/map/GroovyOrderTest.groovy   |  20 ++--
 .../traversal/step/map/GroovyPathTest.groovy    |  12 +-
 .../step/map/GroovyPropertiesTest.groovy        |   8 +-
 .../traversal/step/map/GroovySelectTest.groovy  |  50 ++++-----
 .../traversal/step/map/GroovySumTest.groovy     |   6 +-
 .../traversal/step/map/GroovyUnfoldTest.groovy  |   6 +-
 .../step/map/GroovyValueMapTest.groovy          |   8 +-
 .../traversal/step/map/GroovyVertexTest.groovy  |  54 ++++-----
 .../step/sideEffect/GroovyAggregateTest.groovy  |   8 +-
 .../step/sideEffect/GroovyGroupCountTest.groovy |  18 +--
 .../step/sideEffect/GroovyGroupTest.groovy      |  14 +--
 .../step/sideEffect/GroovyProfileTest.groovy    |   8 +-
 .../step/sideEffect/GroovySackTest.groovy       |   8 +-
 .../sideEffect/GroovySideEffectCapTest.groovy   |  11 +-
 .../step/sideEffect/GroovySideEffectTest.groovy |   8 +-
 .../step/sideEffect/GroovyStoreTest.groovy      |  10 +-
 .../step/sideEffect/GroovySubgraphTest.groovy   |   6 +-
 .../step/sideEffect/GroovyTreeTest.groovy       |  14 +--
 .../computer/util/ScriptEngineLambdaTest.java   |   1 +
 61 files changed, 597 insertions(+), 608 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/97e46779/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/clustering/peerpressure/PeerPressureVertexProgram.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/clustering/peerpressure/PeerPressureVertexProgram.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/clustering/peerpressure/PeerPressureVertexProgram.java
index 907179a..7e697a2 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/clustering/peerpressure/PeerPressureVertexProgram.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/clustering/peerpressure/PeerPressureVertexProgram.java
@@ -23,8 +23,8 @@ import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
 import org.apache.tinkerpop.gremlin.process.computer.Memory;
 import org.apache.tinkerpop.gremlin.process.computer.MessageScope;
 import org.apache.tinkerpop.gremlin.process.computer.Messenger;
-import org.apache.tinkerpop.gremlin.process.computer.traversal.TraversalObjectFunction;
-import org.apache.tinkerpop.gremlin.process.computer.traversal.TraversalScriptFunction;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalObjectFunction;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptFunction;
 import org.apache.tinkerpop.gremlin.process.computer.util.AbstractVertexProgramBuilder;
 import org.apache.tinkerpop.gremlin.process.computer.util.ConfigurationTraversal;
 import org.apache.tinkerpop.gremlin.process.computer.util.StaticVertexProgram;

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/97e46779/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/ranking/pagerank/PageRankVertexProgram.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/ranking/pagerank/PageRankVertexProgram.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/ranking/pagerank/PageRankVertexProgram.java
index bc07e99..b91efa4 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/ranking/pagerank/PageRankVertexProgram.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/ranking/pagerank/PageRankVertexProgram.java
@@ -24,8 +24,8 @@ import org.apache.tinkerpop.gremlin.process.computer.Memory;
 import org.apache.tinkerpop.gremlin.process.computer.MessageCombiner;
 import org.apache.tinkerpop.gremlin.process.computer.MessageScope;
 import org.apache.tinkerpop.gremlin.process.computer.Messenger;
-import org.apache.tinkerpop.gremlin.process.computer.traversal.TraversalObjectFunction;
-import org.apache.tinkerpop.gremlin.process.computer.traversal.TraversalScriptFunction;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalObjectFunction;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptFunction;
 import org.apache.tinkerpop.gremlin.process.computer.util.AbstractVertexProgramBuilder;
 import org.apache.tinkerpop.gremlin.process.computer.util.ConfigurationTraversal;
 import org.apache.tinkerpop.gremlin.process.computer.util.StaticVertexProgram;

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/97e46779/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalObjectFunction.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalObjectFunction.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalObjectFunction.java
deleted file mode 100644
index 662d8fa..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalObjectFunction.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tinkerpop.gremlin.process.computer.traversal;
-
-import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.structure.Graph;
-
-import java.io.Serializable;
-import java.util.function.Function;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public final class TraversalObjectFunction<S, E> implements Function<Graph, Traversal.Admin<S, E>>, Serializable {
-
-    private final Traversal.Admin<S, E> traversal;
-
-    public TraversalObjectFunction(final Traversal.Admin<S, E> traversal) {
-        this.traversal = traversal;
-    }
-
-    @Override
-    public Traversal.Admin<S, E> apply(final Graph graph) {
-        final Traversal.Admin<S, E> clone = this.traversal.clone();
-        if (!clone.isLocked()) {
-            clone.setGraph(graph);
-            clone.applyStrategies();
-        }
-        return clone;
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/97e46779/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalScriptFunction.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalScriptFunction.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalScriptFunction.java
deleted file mode 100644
index abce73a..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalScriptFunction.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tinkerpop.gremlin.process.computer.traversal;
-
-import org.apache.tinkerpop.gremlin.process.computer.util.ScriptEngineCache;
-import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalSource;
-import org.apache.tinkerpop.gremlin.structure.Graph;
-
-import javax.script.Bindings;
-import javax.script.ScriptEngine;
-import javax.script.ScriptException;
-import java.io.Serializable;
-import java.util.function.Function;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public final class TraversalScriptFunction<S, E> implements Function<Graph, Traversal.Admin<S, E>>, Serializable {
-
-    private final TraversalSource.Builder traversalContextBuilder;
-    private final String scriptEngineName;
-    private final String traversalScript;
-    private final Object[] bindings;
-
-    public TraversalScriptFunction(final TraversalSource.Builder traversalContextBuilder, final String scriptEngineName, final String traversalScript, final Object... bindings) {
-        this.traversalContextBuilder = traversalContextBuilder;
-        this.scriptEngineName = scriptEngineName;
-        this.traversalScript = traversalScript;
-        this.bindings = bindings;
-    }
-
-    public Traversal.Admin<S, E> apply(final Graph graph) {
-        try {
-            final ScriptEngine engine = ScriptEngineCache.get(this.scriptEngineName);
-            final Bindings engineBindings = engine.createBindings();
-            engineBindings.put("g", this.traversalContextBuilder.create(graph));
-            if (this.bindings.length % 2 != 0)
-                throw new IllegalArgumentException("The provided key/value bindings array length must be a multiple of two");
-            for (int i = 0; i < this.bindings.length; i = i + 2) {
-                engineBindings.put((String) this.bindings[i], this.bindings[i + 1]);
-            }
-            final Traversal.Admin<S, E> traversal = (Traversal.Admin<S, E>) engine.eval(this.traversalScript, engineBindings);
-            if (!traversal.isLocked()) {
-                traversal.setGraph(graph);
-                traversal.applyStrategies();
-            }
-            return traversal;
-        } catch (final ScriptException e) {
-            throw new IllegalStateException(e.getMessage(), e);
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/97e46779/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 5e74393..e7dff8e 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
@@ -43,6 +43,8 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.util.ReducingBarrierS
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.util.TraverserSet;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalMatrix;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalObjectFunction;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptFunction;
 import org.apache.tinkerpop.gremlin.structure.Direction;
 import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Element;
@@ -59,7 +61,6 @@ import java.util.Iterator;
 import java.util.Optional;
 import java.util.Set;
 import java.util.function.Function;
-import java.util.function.Supplier;
 
 
 /**

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/97e46779/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/ScriptEngineLambda.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/ScriptEngineLambda.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/ScriptEngineLambda.java
deleted file mode 100644
index a3f70dc..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/ScriptEngineLambda.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tinkerpop.gremlin.process.computer.util;
-
-import org.apache.tinkerpop.gremlin.util.function.TriConsumer;
-
-import javax.script.Bindings;
-import javax.script.ScriptEngine;
-import javax.script.ScriptException;
-import javax.script.SimpleBindings;
-import java.util.function.BiConsumer;
-import java.util.function.Consumer;
-import java.util.function.Function;
-import java.util.function.Predicate;
-import java.util.function.Supplier;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public class ScriptEngineLambda implements Function, Supplier, Consumer, Predicate, BiConsumer, TriConsumer {
-
-    private static final String A = "a";
-    private static final String B = "b";
-    private static final String C = "c";
-
-    protected final ScriptEngine engine;
-    protected final String script;
-
-    public ScriptEngineLambda(final String engineName, final String script) {
-        this.engine = ScriptEngineCache.get(engineName);
-        this.script = script;
-    }
-
-    public Object apply(final Object a) {
-        try {
-            final Bindings bindings = new SimpleBindings();
-            bindings.put(A, a);
-            return this.engine.eval(this.script, bindings);
-        } catch (final ScriptException e) {
-            throw new IllegalArgumentException(e.getMessage());
-        }
-    }
-
-    public Object get() {
-        try {
-            return this.engine.eval(this.script);
-        } catch (final ScriptException e) {
-            throw new IllegalArgumentException(e.getMessage());
-        }
-    }
-
-    public void accept(final Object a) {
-        try {
-            final Bindings bindings = new SimpleBindings();
-            bindings.put(A, a);
-            this.engine.eval(this.script, bindings);
-        } catch (final ScriptException e) {
-            throw new IllegalArgumentException(e.getMessage());
-        }
-    }
-
-    public void accept(final Object a, final Object b) {
-        try {
-            final Bindings bindings = new SimpleBindings();
-            bindings.put(A, a);
-            bindings.put(B, b);
-            this.engine.eval(this.script, bindings);
-        } catch (final ScriptException e) {
-            throw new IllegalArgumentException(e.getMessage());
-        }
-    }
-
-    public void accept(final Object a, final Object b, final Object c) {
-        try {
-            final Bindings bindings = new SimpleBindings();
-            bindings.put(A, a);
-            bindings.put(B, b);
-            bindings.put(C, c);
-            this.engine.eval(this.script, bindings);
-        } catch (final ScriptException e) {
-            throw new IllegalArgumentException(e.getMessage());
-        }
-    }
-
-    public boolean test(final Object a) {
-        try {
-            final Bindings bindings = new SimpleBindings();
-            bindings.put(A, a);
-            return (boolean) this.engine.eval(this.script, bindings);
-        } catch (final ScriptException e) {
-            throw new IllegalArgumentException(e.getMessage());
-        }
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/97e46779/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/BulkSet.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/BulkSet.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/BulkSet.java
index a90b009..ce29b5a 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/BulkSet.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/BulkSet.java
@@ -38,7 +38,7 @@ import java.util.stream.Collectors;
  *
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public class BulkSet<S> extends AbstractSet<S> implements Set<S>, Serializable {
+public final class BulkSet<S> extends AbstractSet<S> implements Set<S>, Serializable {
     private final Map<S, Long> map = new LinkedHashMap<>();
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/97e46779/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalObjectFunction.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalObjectFunction.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalObjectFunction.java
new file mode 100644
index 0000000..729dfdb
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalObjectFunction.java
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.process.traversal.util;
+
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+
+import java.io.Serializable;
+import java.util.function.Function;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public final class TraversalObjectFunction<S, E> implements Function<Graph, Traversal.Admin<S, E>>, Serializable {
+
+    private final Traversal.Admin<S, E> traversal;
+
+    public TraversalObjectFunction(final Traversal.Admin<S, E> traversal) {
+        this.traversal = traversal;
+    }
+
+    @Override
+    public Traversal.Admin<S, E> apply(final Graph graph) {
+        final Traversal.Admin<S, E> clone = this.traversal.clone();
+        if (!clone.isLocked()) {
+            clone.setGraph(graph);
+            clone.applyStrategies();
+        }
+        return clone;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/97e46779/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalScriptFunction.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalScriptFunction.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalScriptFunction.java
new file mode 100644
index 0000000..73337ef
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalScriptFunction.java
@@ -0,0 +1,69 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.process.traversal.util;
+
+import org.apache.tinkerpop.gremlin.process.computer.util.ScriptEngineCache;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalSource;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+
+import javax.script.Bindings;
+import javax.script.ScriptEngine;
+import javax.script.ScriptException;
+import java.io.Serializable;
+import java.util.function.Function;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public final class TraversalScriptFunction<S, E> implements Function<Graph, Traversal.Admin<S, E>>, Serializable {
+
+    private final TraversalSource.Builder traversalContextBuilder;
+    private final String scriptEngineName;
+    private final String traversalScript;
+    private final Object[] bindings;
+
+    public TraversalScriptFunction(final TraversalSource.Builder traversalContextBuilder, final String scriptEngineName, final String traversalScript, final Object... bindings) {
+        this.traversalContextBuilder = traversalContextBuilder;
+        this.scriptEngineName = scriptEngineName;
+        this.traversalScript = traversalScript;
+        this.bindings = bindings;
+    }
+
+    public Traversal.Admin<S, E> apply(final Graph graph) {
+        try {
+            final ScriptEngine engine = ScriptEngineCache.get(this.scriptEngineName);
+            final Bindings engineBindings = engine.createBindings();
+            engineBindings.put("g", this.traversalContextBuilder.create(graph));
+            if (this.bindings.length % 2 != 0)
+                throw new IllegalArgumentException("The provided key/value bindings array length must be a multiple of two");
+            for (int i = 0; i < this.bindings.length; i = i + 2) {
+                engineBindings.put((String) this.bindings[i], this.bindings[i + 1]);
+            }
+            final Traversal.Admin<S, E> traversal = (Traversal.Admin<S, E>) engine.eval(this.traversalScript, engineBindings);
+            if (!traversal.isLocked()) {
+                traversal.setGraph(graph);
+                traversal.applyStrategies();
+            }
+            return traversal;
+        } catch (final ScriptException e) {
+            throw new IllegalStateException(e.getMessage(), e);
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/97e46779/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalScriptHelper.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalScriptHelper.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalScriptHelper.java
new file mode 100644
index 0000000..235392e
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalScriptHelper.java
@@ -0,0 +1,59 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.process.traversal.util;
+
+import org.apache.tinkerpop.gremlin.process.computer.ComputerResult;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.TraversalVertexProgram;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalSource;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public final class TraversalScriptHelper {
+
+    private TraversalScriptHelper() {
+    }
+
+    public static <S, E> Traversal.Admin<S, E> compute(
+            final Graph graph,
+            final TraversalSource.Builder builder,
+            final String scriptEngineName,
+            final String traversalScript,
+            final Object... bindings) {
+
+        try {
+            if (builder.create(graph).getGraphComputer().isPresent()) {
+                final TraversalVertexProgram program = TraversalVertexProgram.build().traversal(builder, scriptEngineName, traversalScript, bindings).create(graph);
+                final ComputerResult result = builder.create(graph).getGraphComputer().get().program(program).submit().get();
+                return program.computerResultTraversal(result);
+            } else {
+                return new TraversalScriptFunction<S, E>(builder, scriptEngineName, traversalScript, bindings).apply(graph);
+            }
+        } catch (final Exception e) {
+            throw new IllegalArgumentException(e.getMessage());
+        }
+    }
+
+    public static <S, E> Traversal.Admin<S, E> compute(final String script, final GraphTraversalSource g, final Object... bindings) {
+        return TraversalScriptHelper.compute(g.getGraph().get(), g.asBuilder(), "gremlin-groovy", script, bindings);
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/97e46779/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/function/ScriptEngineLambda.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/function/ScriptEngineLambda.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/function/ScriptEngineLambda.java
new file mode 100644
index 0000000..cafba62
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/function/ScriptEngineLambda.java
@@ -0,0 +1,111 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.util.function;
+
+import org.apache.tinkerpop.gremlin.process.computer.util.ScriptEngineCache;
+
+import javax.script.Bindings;
+import javax.script.ScriptEngine;
+import javax.script.ScriptException;
+import javax.script.SimpleBindings;
+import java.util.function.BiConsumer;
+import java.util.function.Consumer;
+import java.util.function.Function;
+import java.util.function.Predicate;
+import java.util.function.Supplier;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public final class ScriptEngineLambda implements Function, Supplier, Consumer, Predicate, BiConsumer, TriConsumer {
+
+    private static final String A = "a";
+    private static final String B = "b";
+    private static final String C = "c";
+
+    protected final ScriptEngine engine;
+    protected final String script;
+
+    public ScriptEngineLambda(final String engineName, final String script) {
+        this.engine = ScriptEngineCache.get(engineName);
+        this.script = script;
+    }
+
+    public Object apply(final Object a) {
+        try {
+            final Bindings bindings = new SimpleBindings();
+            bindings.put(A, a);
+            return this.engine.eval(this.script, bindings);
+        } catch (final ScriptException e) {
+            throw new IllegalArgumentException(e.getMessage());
+        }
+    }
+
+    public Object get() {
+        try {
+            return this.engine.eval(this.script);
+        } catch (final ScriptException e) {
+            throw new IllegalArgumentException(e.getMessage());
+        }
+    }
+
+    public void accept(final Object a) {
+        try {
+            final Bindings bindings = new SimpleBindings();
+            bindings.put(A, a);
+            this.engine.eval(this.script, bindings);
+        } catch (final ScriptException e) {
+            throw new IllegalArgumentException(e.getMessage());
+        }
+    }
+
+    public void accept(final Object a, final Object b) {
+        try {
+            final Bindings bindings = new SimpleBindings();
+            bindings.put(A, a);
+            bindings.put(B, b);
+            this.engine.eval(this.script, bindings);
+        } catch (final ScriptException e) {
+            throw new IllegalArgumentException(e.getMessage());
+        }
+    }
+
+    public void accept(final Object a, final Object b, final Object c) {
+        try {
+            final Bindings bindings = new SimpleBindings();
+            bindings.put(A, a);
+            bindings.put(B, b);
+            bindings.put(C, c);
+            this.engine.eval(this.script, bindings);
+        } catch (final ScriptException e) {
+            throw new IllegalArgumentException(e.getMessage());
+        }
+    }
+
+    public boolean test(final Object a) {
+        try {
+            final Bindings bindings = new SimpleBindings();
+            bindings.put(A, a);
+            return (boolean) this.engine.eval(this.script, bindings);
+        } catch (final ScriptException e) {
+            throw new IllegalArgumentException(e.getMessage());
+        }
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/97e46779/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/computer/GroovyTestHelper.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/computer/GroovyTestHelper.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/computer/GroovyTestHelper.groovy
deleted file mode 100644
index d648720..0000000
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/computer/GroovyTestHelper.groovy
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tinkerpop.gremlin.process.computer
-
-import org.apache.tinkerpop.gremlin.process.computer.traversal.TraversalScriptFunction
-import org.apache.tinkerpop.gremlin.process.computer.traversal.TraversalVertexProgram
-import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalSource
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource
-import org.apache.tinkerpop.gremlin.structure.Graph
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public class GroovyTestHelper {
-
-    public static final Traversal.Admin<?, ?> compute(
-            final Graph graph,
-            final TraversalSource.Builder builder,
-            final String scriptEngineName,
-            final String traversalScript,
-            final Object... bindings) {
-
-        if (builder.create(graph).getGraphComputer().isPresent()) {
-            final TraversalVertexProgram program = TraversalVertexProgram.build().traversal(builder, scriptEngineName, traversalScript, bindings).create(graph);
-            final ComputerResult result = builder.create(graph).getGraphComputer().get().program(program).submit().get();
-            return program.computerResultTraversal(result);
-        } else {
-            return new TraversalScriptFunction<>(builder, scriptEngineName, traversalScript, bindings).apply(graph);
-        }
-    }
-
-    public static final <S, E> Traversal.Admin<S, E> compute(
-            final String script, final GraphTraversalSource g, final Object... bindings) {
-        return GroovyTestHelper.compute(g.getGraph().get(), g.asBuilder(), "gremlin-groovy", script, bindings);
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/97e46779/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyBranchTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyBranchTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyBranchTest.groovy
index 8e0c6eb..e31418d 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyBranchTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyBranchTest.groovy
@@ -18,7 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.branch
 
-import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
@@ -31,12 +31,12 @@ public abstract class GroovyBranchTest {
 
         @Override
         public Traversal<Vertex, Object> get_g_V_branchXlabel_eq_person__a_bX_optionXa__ageX_optionXb__langX_optionXb__nameX() {
-            GroovyTestHelper.compute("g.V.branch(__.label.is('person').count).option(1L, __.age).option(0L, __.lang).option(0L,__.name)", g);
+            TraversalScriptHelper.compute("g.V.branch(__.label.is('person').count).option(1L, __.age).option(0L, __.lang).option(0L,__.name)", g);
         }
 
         @Override
         public Traversal<Vertex, Object> get_g_V_branchXlabelX_optionXperson__ageX_optionXsoftware__langX_optionXsoftware__nameX() {
-            GroovyTestHelper.compute("""
+            TraversalScriptHelper.compute("""
             g.V.branch(__.label)
                     .option('person', __.age)
                     .option('software', __.lang)

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/97e46779/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyChooseTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyChooseTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyChooseTest.groovy
index f0c66b9..6fea6b0 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyChooseTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyChooseTest.groovy
@@ -18,7 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.branch
 
-import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
@@ -31,7 +31,7 @@ public abstract class GroovyChooseTest {
     public static class Traversals extends ChooseTest {
         @Override
         public Traversal<Vertex, Object> get_g_V_chooseXout_countX_optionX2L__nameX_optionX3L__valueMapX() {
-            GroovyTestHelper.compute("g.V.choose(__.out.count).option(2L, __.values('name')).option(3L, __.valueMap())", g);
+            TraversalScriptHelper.compute("g.V.choose(__.out.count).option(2L, __.values('name')).option(3L, __.valueMap())", g);
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/97e46779/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyLocalTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyLocalTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyLocalTest.groovy
index fcf7a8c..7ed2673 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyLocalTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyLocalTest.groovy
@@ -18,7 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.branch
 
-import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
 import org.apache.tinkerpop.gremlin.structure.Edge
 import org.apache.tinkerpop.gremlin.structure.Vertex
@@ -32,52 +32,52 @@ public abstract class GroovyLocalTest {
 
         @Override
         public Traversal<Vertex, String> get_g_V_localXpropertiesXlocationX_order_byXvalueX_limitX2XX_value() {
-            GroovyTestHelper.compute("g.V.local(__.properties('location').order.by(T.value,Order.incr).limit(2)).value", g);
+            TraversalScriptHelper.compute("g.V.local(__.properties('location').order.by(T.value,Order.incr).limit(2)).value", g);
         }
 
         @Override
         public Traversal<Vertex, Map<String, Object>> get_g_V_hasXlabel_personX_asXaX_localXoutXcreatedX_asXbXX_selectXa_bX_byXnameX_byXidX() {
-            GroovyTestHelper.compute("g.V.has(T.label, 'person').as('a').local(__.out('created').as('b')).select('a', 'b').by('name').by(T.id)", g);
+            TraversalScriptHelper.compute("g.V.has(T.label, 'person').as('a').local(__.out('created').as('b')).select('a', 'b').by('name').by(T.id)", g);
         }
 
         @Override
         public Traversal<Vertex, Long> get_g_V_localXoutE_countX() {
-            GroovyTestHelper.compute("g.V.local(__.outE.count())", g);
+            TraversalScriptHelper.compute("g.V.local(__.outE.count())", g);
         }
 
         @Override
         public Traversal<Vertex, String> get_g_VX1X_localXoutEXknowsX_limitX1XX_inV_name(final Object v1Id) {
-            GroovyTestHelper.compute("g.V(v1Id).local(__.outE('knows').limit(1)).inV.name", g, "v1Id", v1Id);
+            TraversalScriptHelper.compute("g.V(v1Id).local(__.outE('knows').limit(1)).inV.name", g, "v1Id", v1Id);
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_localXbothEXcreatedX_limitX1XX_otherV_name() {
-            GroovyTestHelper.compute("g.V().local(__.bothE('created').limit(1)).otherV.name", g);
+            TraversalScriptHelper.compute("g.V().local(__.bothE('created').limit(1)).otherV.name", g);
         }
 
         @Override
         public Traversal<Vertex, Edge> get_g_VX4X_localXbothEX1_createdX_limitX1XX(final Object v4Id) {
-            GroovyTestHelper.compute("g.V(v4Id).local(__.bothE('created').limit(1))", g, "v4Id", v4Id);
+            TraversalScriptHelper.compute("g.V(v4Id).local(__.bothE('created').limit(1))", g, "v4Id", v4Id);
         }
 
         @Override
         public Traversal<Vertex, Edge> get_g_VX4X_localXbothEXknows_createdX_limitX1XX(final Object v4Id) {
-            GroovyTestHelper.compute("g.V(v4Id).local(__.bothE('knows', 'created').limit(1))", g, "v4Id", v4Id);
+            TraversalScriptHelper.compute("g.V(v4Id).local(__.bothE('knows', 'created').limit(1))", g, "v4Id", v4Id);
         }
 
         @Override
         public Traversal<Vertex, String> get_g_VX4X_localXbothE_limitX1XX_otherV_name(final Object v4Id) {
-            GroovyTestHelper.compute("g.V(v4Id).local(__.bothE.limit(1)).otherV.name", g, "v4Id", v4Id);
+            TraversalScriptHelper.compute("g.V(v4Id).local(__.bothE.limit(1)).otherV.name", g, "v4Id", v4Id);
         }
 
         @Override
         public Traversal<Vertex, String> get_g_VX4X_localXbothE_limitX2XX_otherV_name(final Object v4Id) {
-            GroovyTestHelper.compute("g.V(v4Id).local(__.bothE.limit(2)).otherV.name", g, "v4Id", v4Id);
+            TraversalScriptHelper.compute("g.V(v4Id).local(__.bothE.limit(2)).otherV.name", g, "v4Id", v4Id);
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_localXinEXknowsX_limitX2XX_outV_name() {
-            GroovyTestHelper.compute("g.V().local(__.inE('knows').limit(2).outV).name", g);
+            TraversalScriptHelper.compute("g.V().local(__.inE('knows').limit(2).outV).name", g);
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/97e46779/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyRepeatTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyRepeatTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyRepeatTest.groovy
index c3c872e..024ed6c 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyRepeatTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyRepeatTest.groovy
@@ -18,7 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.branch
 
-import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Path
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
@@ -32,47 +32,47 @@ public abstract class GroovyRepeatTest {
 
         @Override
         public Traversal<Vertex, Path> get_g_V_repeatXoutX_timesX2X_emit_path() {
-            GroovyTestHelper.compute("g.V.repeat(__.out).times(2).emit.path", g)
+            TraversalScriptHelper.compute("g.V.repeat(__.out).times(2).emit.path", g)
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_repeatXoutX_timesX2X_repeatXinX_timesX2X_name() {
-            GroovyTestHelper.compute("g.V.repeat(__.out).times(2).repeat(__.in).times(2).name", g)
+            TraversalScriptHelper.compute("g.V.repeat(__.out).times(2).repeat(__.in).times(2).name", g)
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_repeatXoutX_timesX2X() {
-            GroovyTestHelper.compute("g.V.repeat(__.out).times(2)", g)
+            TraversalScriptHelper.compute("g.V.repeat(__.out).times(2)", g)
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_repeatXoutX_timesX2X_emit() {
-            GroovyTestHelper.compute("g.V.repeat(__.out).times(2).emit", g)
+            TraversalScriptHelper.compute("g.V.repeat(__.out).times(2).emit", g)
         }
 
         @Override
         public Traversal<Vertex, String> get_g_VX1X_timesX2X_repeatXoutX_name(Object v1Id) {
-            GroovyTestHelper.compute("g.V(v1Id).times(2).repeat(__.out).name", g, "v1Id", v1Id)
+            TraversalScriptHelper.compute("g.V(v1Id).times(2).repeat(__.out).name", g, "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Path> get_g_V_emit_repeatXoutX_timesX2X_path() {
-            GroovyTestHelper.compute("g.V.emit.repeat(__.out).times(2).path", g)
+            TraversalScriptHelper.compute("g.V.emit.repeat(__.out).times(2).path", g)
         }
 
         @Override
         public Traversal<Vertex, Path> get_g_V_emit_timesX2X_repeatXoutX_path() {
-            GroovyTestHelper.compute("g.V.emit.times(2).repeat(__.out).path", g)
+            TraversalScriptHelper.compute("g.V.emit.times(2).repeat(__.out).path", g)
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_emitXhasXlabel_personXX_repeatXoutX_name(final Object v1Id) {
-            GroovyTestHelper.compute("g.V(v1Id).emit(has(T.label, 'person')).repeat(__.out).name", g, "v1Id", v1Id)
+            TraversalScriptHelper.compute("g.V(v1Id).emit(has(T.label, 'person')).repeat(__.out).name", g, "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Long>> get_g_V_repeatXgroupCountXmX_byXnameX_outX_timesX2X_capXmX() {
-            GroovyTestHelper.compute("g.V.repeat(groupCount('m').by('name').out).times(2).cap('m')", g)
+            TraversalScriptHelper.compute("g.V.repeat(groupCount('m').by('name').out).times(2).cap('m')", g)
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/97e46779/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyUnionTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyUnionTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyUnionTest.groovy
index c20daee..a31b437 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyUnionTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyUnionTest.groovy
@@ -18,10 +18,8 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.branch
 
-import org.apache.tinkerpop.gremlin.process.UseEngine
-import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
 /**
@@ -32,23 +30,23 @@ public abstract class GroovyUnionTest {
     public static class Traversals extends UnionTest {
 
         public Traversal<Vertex, String> get_g_V_unionXout__inX_name() {
-            GroovyTestHelper.compute("g.V.union(__.out, __.in).name", g)
+            TraversalScriptHelper.compute("g.V.union(__.out, __.in).name", g)
         }
 
         public Traversal<Vertex, String> get_g_VX1X_unionXrepeatXoutX_timesX2X__outX_name(final Object v1Id) {
-            GroovyTestHelper.compute("g.V(v1Id).union(repeat(__.out).times(2), __.out).name", g, "v1Id", v1Id)
+            TraversalScriptHelper.compute("g.V(v1Id).union(repeat(__.out).times(2), __.out).name", g, "v1Id", v1Id)
         }
 
         public Traversal<Vertex, String> get_g_V_chooseXlabel_is_person__unionX__out_lang__out_nameX__in_labelX() {
-            GroovyTestHelper.compute("g.V.choose(__.label.is('person'), union(__.out.lang, __.out.name), __.in.label)", g)
+            TraversalScriptHelper.compute("g.V.choose(__.label.is('person'), union(__.out.lang, __.out.name), __.in.label)", g)
         }
 
         public Traversal<Vertex, Map<String, Long>> get_g_V_chooseXlabel_is_person__unionX__out_lang__out_nameX__in_labelX_groupCount() {
-            GroovyTestHelper.compute("g.V.choose(__.label.is('person'), union(__.out.lang, __.out.name), __.in.label).groupCount", g)
+            TraversalScriptHelper.compute("g.V.choose(__.label.is('person'), union(__.out.lang, __.out.name), __.in.label).groupCount", g)
         }
 
         public Traversal<Vertex, Map<String, Long>> get_g_V_unionXrepeatXunionXoutXcreatedX__inXcreatedXX_timesX2X__repeatXunionXinXcreatedX__outXcreatedXX_timesX2XX_label_groupCount() {
-            GroovyTestHelper.compute("""
+            TraversalScriptHelper.compute("""
             g.V.union(
                     repeat(union(
                             out('created'),
@@ -62,7 +60,7 @@ public abstract class GroovyUnionTest {
         @Override
         public Traversal<Vertex, Number> get_g_VX1_2X_unionXoutE_count__inE_count__outE_weight_sumX(
                 final Object v1Id, final Object v2Id) {
-            GroovyTestHelper.compute("g.V(v1Id, v2Id).union(outE().count, inE().count, outE().weight.sum)", g, "v1Id", v1Id, "v2Id", v2Id);
+            TraversalScriptHelper.compute("g.V(v1Id, v2Id).union(outE().count, inE().count, outE().weight.sum)", g, "v1Id", v1Id, "v2Id", v2Id);
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/97e46779/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyAndTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyAndTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyAndTest.groovy
index fdd8f90..abce9ab 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyAndTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyAndTest.groovy
@@ -18,7 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.filter
 
-import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
@@ -31,12 +31,12 @@ public abstract class GroovyAndTest {
 
         @Override
         public Traversal<Vertex, String> get_g_V_andXhasXage_gt_27X__outE_count_gt_2X_name() {
-            GroovyTestHelper.compute("g.V.and(has('age',gt(27)), outE().count.is(gte(2l))).name", g)
+            TraversalScriptHelper.compute("g.V.and(has('age',gt(27)), outE().count.is(gte(2l))).name", g)
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_andXoutE__hasXlabel_personX_and_hasXage_gte_32XX_name() {
-            GroovyTestHelper.compute("g.V.and(outE(), has(T.label, 'person') & has('age', gte(32))).name", g)
+            TraversalScriptHelper.compute("g.V.and(outE(), has(T.label, 'person') & has('age', gte(32))).name", g)
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/97e46779/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyCoinTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyCoinTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyCoinTest.groovy
index 8127595..a8207c4 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyCoinTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyCoinTest.groovy
@@ -18,7 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.filter
 
-import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
@@ -30,12 +30,12 @@ public abstract class GroovyCoinTest {
     public static class Traversals extends CoinTest {
         @Override
         public Traversal<Vertex, Vertex> get_g_V_coinX1X() {
-            GroovyTestHelper.compute("g.V.coin(1.0f)", g);
+            TraversalScriptHelper.compute("g.V.coin(1.0f)", g);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_coinX0X() {
-            GroovyTestHelper.compute("g.V.coin(0.0f)", g);
+            TraversalScriptHelper.compute("g.V.coin(0.0f)", g);
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/97e46779/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyCyclicPathTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyCyclicPathTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyCyclicPathTest.groovy
index fceaec9..5359db4 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyCyclicPathTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyCyclicPathTest.groovy
@@ -18,7 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.filter
 
-import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Path
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
@@ -32,12 +32,12 @@ public abstract class GroovyCyclicPathTest {
 
         @Override
         Traversal<Vertex, Vertex> get_g_VX1X_outXcreatedX_inXcreatedX_cyclicPath(final Object v1Id) {
-            GroovyTestHelper.compute("g.V(v1Id).out('created').in('created').cyclicPath", g, "v1Id", v1Id);
+            TraversalScriptHelper.compute("g.V(v1Id).out('created').in('created').cyclicPath", g, "v1Id", v1Id);
         }
 
         @Override
         Traversal<Vertex, Path> get_g_VX1X_outXcreatedX_inXcreatedX_cyclicPath_path(final Object v1Id) {
-            GroovyTestHelper.compute("g.V(v1Id).out('created').in('created').cyclicPath().path()", g, "v1Id", v1Id);
+            TraversalScriptHelper.compute("g.V(v1Id).out('created').in('created').cyclicPath().path()", g, "v1Id", v1Id);
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/97e46779/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyDedupTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyDedupTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyDedupTest.groovy
index 5e22987..f0ca09c 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyDedupTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyDedupTest.groovy
@@ -18,7 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.filter
 
-import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
@@ -49,23 +49,23 @@ public abstract class GroovyDedupTest {
 
         @Override
         public Traversal<Vertex, String> get_g_V_both_dedup_name() {
-            GroovyTestHelper.compute("g.V.both.dedup.name", g);
+            TraversalScriptHelper.compute("g.V.both.dedup.name", g);
         }
 
         @Override
         public Traversal<Vertex, Map<String, Set<Double>>> get_g_V_group_byXlabelX_byXbothE_valuesXweightX_foldX_byXdedupXlocalXX() {
-            GroovyTestHelper.compute("g.V().group().by(T.label).by(bothE().values('weight').fold()).by(dedup(Scope.local))", g);
+            TraversalScriptHelper.compute("g.V().group().by(T.label).by(bothE().values('weight').fold()).by(dedup(Scope.local))", g);
         }
 
 
         @Override
         public Traversal<Vertex, String> get_g_V_both_hasXlabel_softwareX_dedup_byXlangX_name() {
-            GroovyTestHelper.compute("g.V.both.has(T.label, 'software').dedup.by('lang').name", g);
+            TraversalScriptHelper.compute("g.V.both.has(T.label, 'software').dedup.by('lang').name", g);
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_both_name_orderXa_bX_dedup() {
-            return GroovyTestHelper.compute("g.V().both().properties('name').order.by { a, b -> a.value() <=> b.value() }.dedup.value", g);
+            return TraversalScriptHelper.compute("g.V().both().properties('name').order.by { a, b -> a.value() <=> b.value() }.dedup.value", g);
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/97e46779/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyDropTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyDropTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyDropTest.groovy
index 1f5a8d7..1ff4a95 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyDropTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyDropTest.groovy
@@ -19,7 +19,7 @@
 
 package org.apache.tinkerpop.gremlin.process.traversal.step.filter
 
-import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
 import org.apache.tinkerpop.gremlin.structure.Edge
 import org.apache.tinkerpop.gremlin.structure.Vertex
@@ -34,17 +34,17 @@ public abstract class GroovyDropTest {
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_drop() {
-            GroovyTestHelper.compute("g.V.drop", g)
+            TraversalScriptHelper.compute("g.V.drop", g)
         }
 
         @Override
         public Traversal<Vertex, Edge> get_g_V_outE_drop() {
-            GroovyTestHelper.compute("g.V.outE.drop", g)
+            TraversalScriptHelper.compute("g.V.outE.drop", g)
         }
 
         @Override
         public Traversal<Vertex, VertexProperty> get_g_V_properties_drop() {
-            GroovyTestHelper.compute("g.V.properties().drop", g)
+            TraversalScriptHelper.compute("g.V.properties().drop", g)
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/97e46779/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyExceptTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyExceptTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyExceptTest.groovy
index 0b03f2d..96b68b9 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyExceptTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyExceptTest.groovy
@@ -18,7 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.filter
 
-import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Path
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
@@ -33,44 +33,44 @@ public abstract class GroovyExceptTest {
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_out_exceptXg_v2X(final Object v1Id, final Object v2Id) {
-            GroovyTestHelper.compute("g.V(v1Id).out.except(g.V(v2Id).next())", g, "v1Id", v1Id, "v2Id", v2Id);
+            TraversalScriptHelper.compute("g.V(v1Id).out.except(g.V(v2Id).next())", g, "v1Id", v1Id, "v2Id", v2Id);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_out_aggregateXxX_out_exceptXxX(final Object v1Id) {
-            GroovyTestHelper.compute("g.V(v1Id).out.aggregate('x').out.except('x')", g, "v1Id", v1Id);
+            TraversalScriptHelper.compute("g.V(v1Id).out.aggregate('x').out.except('x')", g, "v1Id", v1Id);
         }
 
         @Override
         public Traversal<Vertex, String> get_g_VX1X_outXcreatedX_inXcreatedX_exceptXg_v1X_name(final Object v1Id) {
-            GroovyTestHelper.compute("g.V(v1Id).out('created').in('created').except(g.V(v1Id).next()).values('name')", g, "v1Id", v1Id);
+            TraversalScriptHelper.compute("g.V(v1Id).out('created').in('created').except(g.V(v1Id).next()).values('name')", g, "v1Id", v1Id);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_exceptXg_V_toListX() {
-            GroovyTestHelper.compute("g.V.out.except(g.V.toList())", g);
+            TraversalScriptHelper.compute("g.V.out.except(g.V.toList())", g);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_exceptXX() {
-            GroovyTestHelper.compute("g.V.out.except([])", g);
+            TraversalScriptHelper.compute("g.V.out.except([])", g);
         }
 
         @Override
         public Traversal<Vertex, Path> get_g_VX1X_repeatXbothEXcreatedX_exceptXeX_aggregateXeX_otherVX_emit_path(
                 final Object v1Id) {
-            GroovyTestHelper.compute("g.V(v1Id).repeat(__.bothE('created').except('e').aggregate('e').otherV).emit.path", g, "v1Id", v1Id);
+            TraversalScriptHelper.compute("g.V(v1Id).repeat(__.bothE('created').except('e').aggregate('e').otherV).emit.path", g, "v1Id", v1Id);
         }
 
         @Override
         public Traversal<Vertex, Path> get_g_VX1X_repeatXbothEXcreatedX_dedup_otherVX_emit_path(
                 final Object v1Id) {
-            GroovyTestHelper.compute("g.V(v1Id).repeat(__.bothE('created').dedup.otherV).emit.path", g, "v1Id", v1Id);
+            TraversalScriptHelper.compute("g.V(v1Id).repeat(__.bothE('created').dedup.otherV).emit.path", g, "v1Id", v1Id);
         }
 
         @Override
         public Traversal<Vertex, String> get_g_VX1X_asXaX_outXcreatedX_inXcreatedX_exceptXaX_name(final Object v1Id) {
-            GroovyTestHelper.compute("g.V(v1Id).as('a').out('created').in('created').except('a').name", g, "v1Id", v1Id);
+            TraversalScriptHelper.compute("g.V(v1Id).as('a').out('created').in('created').except('a').name", g, "v1Id", v1Id);
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/97e46779/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyFilterTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyFilterTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyFilterTest.groovy
index ffc7140..11476bd 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyFilterTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyFilterTest.groovy
@@ -18,14 +18,10 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.filter
 
-import org.apache.tinkerpop.gremlin.LoadGraphWith
-import org.apache.tinkerpop.gremlin.process.UseEngine
-import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine
 import org.apache.tinkerpop.gremlin.structure.Edge
 import org.apache.tinkerpop.gremlin.structure.Vertex
-import org.junit.Test
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -36,42 +32,42 @@ public abstract class GroovyFilterTest {
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_filterXfalseX() {
-            GroovyTestHelper.compute("g.V.filter { false }", g);
+            TraversalScriptHelper.compute("g.V.filter { false }", g);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_filterXtrueX() {
-            GroovyTestHelper.compute("g.V.filter { true }", g);
+            TraversalScriptHelper.compute("g.V.filter { true }", g);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_filterXlang_eq_javaX() {
-            GroovyTestHelper.compute("g.V.filter { it.property('lang').orElse('none') == 'java' }", g);
+            TraversalScriptHelper.compute("g.V.filter { it.property('lang').orElse('none') == 'java' }", g);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_filterXage_gt_30X(final Object v1Id) {
-            GroovyTestHelper.compute("g.V(v1Id).filter { it.age > 30 }", g, "v1Id", v1Id);
+            TraversalScriptHelper.compute("g.V(v1Id).filter { it.age > 30 }", g, "v1Id", v1Id);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_out_filterXage_gt_30X(final Object v1Id) {
-            GroovyTestHelper.compute("g.V(v1Id).out.filter { it.property('age').orElse(0) > 30 }", g, "v1Id", v1Id);
+            TraversalScriptHelper.compute("g.V(v1Id).out.filter { it.property('age').orElse(0) > 30 }", g, "v1Id", v1Id);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_filterXname_startsWith_m_OR_name_startsWith_pX() {
-            GroovyTestHelper.compute("g.V.filter { it.name.startsWith('m') || it.name.startsWith('p') }", g);
+            TraversalScriptHelper.compute("g.V.filter { it.name.startsWith('m') || it.name.startsWith('p') }", g);
         }
 
         @Override
         public Traversal<Edge, Edge> get_g_E_filterXfalseX() {
-            GroovyTestHelper.compute("g.E.filter { false }", g);
+            TraversalScriptHelper.compute("g.E.filter { false }", g);
         }
 
         @Override
         public Traversal<Edge, Edge> get_g_E_filterXtrueX() {
-            GroovyTestHelper.compute("g.E.filter { true }", g);
+            TraversalScriptHelper.compute("g.E.filter { true }", g);
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/97e46779/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyHasNotTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyHasNotTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyHasNotTest.groovy
index 839215f..430d9b8 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyHasNotTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyHasNotTest.groovy
@@ -18,7 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.filter
 
-import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
@@ -30,17 +30,17 @@ public abstract class GroovyHasNotTest {
     public static class Traversals extends HasNotTest {
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_hasNotXprop(final Object v1Id, final String propertyKey) {
-            GroovyTestHelper.compute("g.V(v1Id).hasNot('${propertyKey}')", g, "v1Id", v1Id);
+            TraversalScriptHelper.compute("g.V(v1Id).hasNot('${propertyKey}')", g, "v1Id", v1Id);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_hasNotXprop(final String propertyKey) {
-            GroovyTestHelper.compute("g.V.hasNot('${propertyKey}')", g);
+            TraversalScriptHelper.compute("g.V.hasNot('${propertyKey}')", g);
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_hasNotXoutXcreatedXX() {
-            GroovyTestHelper.compute("return g.V().hasNot(__.out('created')).values('name')", g);
+            TraversalScriptHelper.compute("return g.V().hasNot(__.out('created')).values('name')", g);
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/97e46779/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyHasTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyHasTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyHasTest.groovy
index 2f5a86c..cbedf72 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyHasTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyHasTest.groovy
@@ -18,7 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.filter
 
-import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
 import org.apache.tinkerpop.gremlin.structure.Edge
 import org.apache.tinkerpop.gremlin.structure.Vertex
@@ -31,88 +31,88 @@ public abstract class GroovyHasTest {
     public static class Traversals extends HasTest {
         @Override
         public Traversal<Edge, Edge> get_g_EX11X_outV_outE_hasXid_10X(final Object e11Id, final Object e8Id) {
-            GroovyTestHelper.compute("g.E(e11Id).outV.outE.has(T.id, e8Id)", g, "e11Id", e11Id, "e8Id", e8Id);
+            TraversalScriptHelper.compute("g.E(e11Id).outV.outE.has(T.id, e8Id)", g, "e11Id", e11Id, "e8Id", e8Id);
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_outXknowsX_hasXoutXcreatedXX_name() {
-            GroovyTestHelper.compute("g.V.out('knows').has(__.out('created')).name", g);
+            TraversalScriptHelper.compute("g.V.out('knows').has(__.out('created')).name", g);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_hasXkeyX(final Object v1Id, final String key) {
-            GroovyTestHelper.compute("g.V(v1Id).has('${key}')", g, "v1Id", v1Id);
+            TraversalScriptHelper.compute("g.V(v1Id).has('${key}')", g, "v1Id", v1Id);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_hasXname_markoX(final Object v1Id) {
-            GroovyTestHelper.compute("g.V(v1Id).has('name', 'marko')", g, "v1Id", v1Id);
+            TraversalScriptHelper.compute("g.V(v1Id).has('name', 'marko')", g, "v1Id", v1Id);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_hasXname_markoX() {
-            GroovyTestHelper.compute("g.V.has('name', 'marko')", g);
+            TraversalScriptHelper.compute("g.V.has('name', 'marko')", g);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_hasXname_blahX() {
-            GroovyTestHelper.compute(" g.V.has('name', 'blah')", g);
+            TraversalScriptHelper.compute(" g.V.has('name', 'blah')", g);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_hasXblahX() {
-            GroovyTestHelper.compute("g.V.has('blah')", g);
+            TraversalScriptHelper.compute("g.V.has('blah')", g);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_hasXage_gt_30X(final Object v1Id) {
-            GroovyTestHelper.compute("g.V(v1Id).has('age', gt(30))", g, "v1Id", v1Id);
+            TraversalScriptHelper.compute("g.V(v1Id).has('age', gt(30))", g, "v1Id", v1Id);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_out_hasIdX2X(final Object v1Id, final Object v2Id) {
-            GroovyTestHelper.compute(" g.V(v1Id).out.hasId(v2Id)", g, "v1Id", v1Id, "v2Id", v2Id);
+            TraversalScriptHelper.compute(" g.V(v1Id).out.hasId(v2Id)", g, "v1Id", v1Id, "v2Id", v2Id);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_out_hasIdX2_3X(
                 final Object v1Id, final Object v2Id, final Object v3Id) {
-            GroovyTestHelper.compute(" g.V(v1Id).out.hasId(v2Id, v3Id)", g, "v1Id", v1Id, "v2Id", v2Id, "v3Id", v3Id);
+            TraversalScriptHelper.compute(" g.V(v1Id).out.hasId(v2Id, v3Id)", g, "v1Id", v1Id, "v2Id", v2Id, "v3Id", v3Id);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_hasXage_gt_30X() {
-            GroovyTestHelper.compute("g.V.has('age', gt(30))", g);
+            TraversalScriptHelper.compute("g.V.has('age', gt(30))", g);
         }
 
         @Override
         public Traversal<Edge, Edge> get_g_EX7X_hasLabelXknowsX(final Object e7Id) {
-            GroovyTestHelper.compute("g.E(e7Id).hasLabel('knows')", g, "e7Id", e7Id);
+            TraversalScriptHelper.compute("g.E(e7Id).hasLabel('knows')", g, "e7Id", e7Id);
         }
 
         @Override
         public Traversal<Edge, Edge> get_g_E_hasLabelXknowsX() {
-            GroovyTestHelper.compute("g.E.hasLabel('knows')", g);
+            TraversalScriptHelper.compute("g.E.hasLabel('knows')", g);
         }
 
         @Override
         public Traversal<Edge, Edge> get_g_E_hasLabelXuses_traversesX() {
-            GroovyTestHelper.compute("g.E.hasLabel('uses', 'traverses')", g);
+            TraversalScriptHelper.compute("g.E.hasLabel('uses', 'traverses')", g);
         }
 
         @Override
         Traversal<Vertex, Vertex> get_g_V_hasLabelXperson_software_blahX() {
-            GroovyTestHelper.compute("g.V.hasLabel('person', 'software', 'blah')", g);
+            TraversalScriptHelper.compute("g.V.hasLabel('person', 'software', 'blah')", g);
         }
 
         @Override
         public Traversal<Vertex, Integer> get_g_V_hasXperson_name_markoX_age() {
-            GroovyTestHelper.compute("g.V.has('person', 'name', 'marko').age", g);
+            TraversalScriptHelper.compute("g.V.has('person', 'name', 'marko').age", g);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_outE_hasXweight_inside_0_06X_inV(final Object v1Id) {
-            GroovyTestHelper.compute("g.V(v1Id).outE.has('weight', inside(0.0d, 0.6d)).inV", g, "v1Id", v1Id);
+            TraversalScriptHelper.compute("g.V(v1Id).outE.has('weight', inside(0.0d, 0.6d)).inV", g, "v1Id", v1Id);
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/97e46779/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyIsTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyIsTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyIsTest.groovy
index 05559e9..e44c48d 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyIsTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyIsTest.groovy
@@ -18,7 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.filter
 
-import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
@@ -31,27 +31,27 @@ public abstract class GroovyIsTest {
 
         @Override
         public Traversal<Vertex, Integer> get_g_V_valuesXageX_isX32X() {
-            GroovyTestHelper.compute("g.V.age.is(32)", g)
+            TraversalScriptHelper.compute("g.V.age.is(32)", g)
         }
 
         @Override
         public Traversal<Vertex, Integer> get_g_V_valuesXageX_isXlte_30X() {
-            GroovyTestHelper.compute("g.V.age.is(lte(30))", g)
+            TraversalScriptHelper.compute("g.V.age.is(lte(30))", g)
         }
 
         @Override
         public Traversal<Vertex, Integer> get_g_V_valuesXageX_isXgte_29X_isXlt_34X() {
-            GroovyTestHelper.compute("g.V.age.is(gte(29)).is(lt(34))", g)
+            TraversalScriptHelper.compute("g.V.age.is(gte(29)).is(lt(34))", g)
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_hasXinXcreatedX_count_isX1XX_valuesXnameX() {
-            GroovyTestHelper.compute("g.V.has(__.in('created').count.is(1)).name", g)
+            TraversalScriptHelper.compute("g.V.has(__.in('created').count.is(1)).name", g)
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_hasXinXcreatedX_count_isXgte_2XX_valuesXnameX() {
-            GroovyTestHelper.compute("g.V.has(__.in('created').count.is(gte(2l))).name", g)
+            TraversalScriptHelper.compute("g.V.has(__.in('created').count.is(gte(2l))).name", g)
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/97e46779/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyOrTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyOrTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyOrTest.groovy
index 7b0a014..a647f36 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyOrTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyOrTest.groovy
@@ -18,7 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.filter
 
-import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
@@ -31,12 +31,12 @@ public abstract class GroovyOrTest {
 
         @Override
         public Traversal<Vertex, String> get_g_V_orXhasXage_gt_27X__outE_count_gte_2X_name() {
-            GroovyTestHelper.compute("g.V.or(has('age', gt(27)), outE().count.is(gte(2l))).name", g)
+            TraversalScriptHelper.compute("g.V.or(has('age', gt(27)), outE().count.is(gte(2l))).name", g)
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_orXoutEXknowsX__hasXlabel_softwareX_or_hasXage_gte_35XX_name() {
-            GroovyTestHelper.compute("g.V.or(outE('knows'), has(T.label, 'software') | has('age', gte(35))).name", g)
+            TraversalScriptHelper.compute("g.V.or(outE('knows'), has(T.label, 'software') | has('age', gte(35))).name", g)
         }
     }
 }


[43/50] [abbrv] incubator-tinkerpop git commit: GroovyComputerTestHelper is now general to gremlin-core/process/util. Renamed to TraversalScriptHelper and it will determine from the Source and Script whether its a STANDARD or COMPUTER traversal. Neat. Mo

Posted by dk...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/97e46779/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyRangeTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyRangeTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyRangeTest.groovy
index d8f183f..f1be1d4 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyRangeTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyRangeTest.groovy
@@ -18,7 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.filter
 
-import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
@@ -31,37 +31,37 @@ public abstract class GroovyRangeTest {
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_out_limitX2X(final Object v1Id) {
-            GroovyTestHelper.compute("g.V(v1Id).out.limit(2)", g, "v1Id", v1Id)
+            TraversalScriptHelper.compute("g.V(v1Id).out.limit(2)", g, "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_localXoutE_limitX1X_inVX_limitX3X() {
-            GroovyTestHelper.compute("g.V.local(__.outE.limit(3)).inV.limit(3)", g)
+            TraversalScriptHelper.compute("g.V.local(__.outE.limit(3)).inV.limit(3)", g)
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_outXknowsX_outEXcreatedX_rangeX0_1X_inV(final Object v1Id) {
-            GroovyTestHelper.compute("g.V(v1Id).out('knows').outE('created')[0].inV()", g, "v1Id", v1Id)
+            TraversalScriptHelper.compute("g.V(v1Id).out('knows').outE('created')[0].inV()", g, "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_outXknowsX_outXcreatedX_rangeX0_1X(final Object v1Id) {
-            GroovyTestHelper.compute("g.V(v1Id).out('knows').out('created')[0]", g, "v1Id", v1Id)
+            TraversalScriptHelper.compute("g.V(v1Id).out('knows').out('created')[0]", g, "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_outXcreatedX_inXcreatedX_rangeX1_3X(final Object v1Id) {
-            GroovyTestHelper.compute("g.V(v1Id).out('created').in('created')[1..3]", g, "v1Id", v1Id)
+            TraversalScriptHelper.compute("g.V(v1Id).out('created').in('created')[1..3]", g, "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_outXcreatedX_inEXcreatedX_rangeX1_3X_outV(final Object v1Id) {
-            GroovyTestHelper.compute("g.V(v1Id).out('created').inE('created')[1..3].outV", g, "v1Id", v1Id)
+            TraversalScriptHelper.compute("g.V(v1Id).out('created').inE('created')[1..3].outV", g, "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_repeatXbothX_timesX3X_rangeX5_11X() {
-            GroovyTestHelper.compute("g.V().repeat(__.both).times(3)[5..11]", g)
+            TraversalScriptHelper.compute("g.V().repeat(__.both).times(3)[5..11]", g)
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/97e46779/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyRetainTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyRetainTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyRetainTest.groovy
index 4182840..5067093 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyRetainTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyRetainTest.groovy
@@ -18,7 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.filter
 
-import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
@@ -30,17 +30,17 @@ public abstract class GroovyRetainTest {
     public static class Traversals extends RetainTest {
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_out_retainXg_v2X(final Object v1Id, final Object v2Id) {
-            GroovyTestHelper.compute("g.V(v1Id).out.retain(g.V(v2Id).next())", g, "v1Id", v1Id, "v2Id", v2Id);
+            TraversalScriptHelper.compute("g.V(v1Id).out.retain(g.V(v2Id).next())", g, "v1Id", v1Id, "v2Id", v2Id);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_out_aggregateXxX_out_retainXxX(final Object v1Id) {
-            GroovyTestHelper.compute("g.V(v1Id).out.aggregate('x').out.retain('x')", g, "v1Id", v1Id);
+            TraversalScriptHelper.compute("g.V(v1Id).out.aggregate('x').out.retain('x')", g, "v1Id", v1Id);
         }
 
         @Override
         public Traversal<Vertex, String> get_g_VX1X_asXaX_outXcreatedX_inXcreatedX_retainXaX_name(final Object v1Id) {
-            GroovyTestHelper.compute("g.V(v1Id).as('a').out('created').in('created').retain('a').name", g, "v1Id", v1Id);
+            TraversalScriptHelper.compute("g.V(v1Id).as('a').out('created').in('created').retain('a').name", g, "v1Id", v1Id);
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/97e46779/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovySampleTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovySampleTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovySampleTest.groovy
index 531fd40..f936ae6 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovySampleTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovySampleTest.groovy
@@ -18,19 +18,10 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.filter
 
-import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
-import org.apache.tinkerpop.gremlin.process.traversal.Scope
-import org.apache.tinkerpop.gremlin.structure.T
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine
-import org.apache.tinkerpop.gremlin.process.UseEngine
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__
 import org.apache.tinkerpop.gremlin.structure.Edge
 import org.apache.tinkerpop.gremlin.structure.Vertex
-import org.junit.Test
-
-import static __.bothE
-import static __.sample
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -41,27 +32,27 @@ public abstract class GroovySampleTest {
 
         @Override
         public Traversal<Edge, Edge> get_g_E_sampleX1X() {
-            GroovyTestHelper.compute("g.E.sample(1)",g)
+            TraversalScriptHelper.compute("g.E.sample(1)",g)
         }
 
         @Override
         public Traversal<Edge, Edge> get_g_E_sampleX2X_byXweightX() {
-            GroovyTestHelper.compute("g.E.sample(2).by('weight')",g)
+            TraversalScriptHelper.compute("g.E.sample(2).by('weight')",g)
         }
 
         @Override
         public Traversal<Vertex, Edge> get_g_V_localXoutE_sampleX1X_byXweightXX() {
-            GroovyTestHelper.compute("g.V.local(__.outE.sample(1).by('weight'))",g)
+            TraversalScriptHelper.compute("g.V.local(__.outE.sample(1).by('weight'))",g)
         }
 
         @Override
         Traversal<Vertex, Map<String, Collection<Double>>> get_g_V_group_byXlabelX_byXbothE_valuesXweightX_foldX_byXsampleXlocal_2XX() {
-            GroovyTestHelper.compute("g.V().group().by(T.label).by(bothE().values('weight').fold()).by(sample(local, 2))",g)
+            TraversalScriptHelper.compute("g.V().group().by(T.label).by(bothE().values('weight').fold()).by(sample(local, 2))",g)
         }
 
         @Override
         Traversal<Vertex, Map<String, Collection<Double>>> get_g_V_group_byXlabelX_byXbothE_valuesXweightX_foldX_byXsampleXlocal_5XX() {
-            GroovyTestHelper.compute("g.V().group().by(T.label).by(bothE().values('weight').fold()).by(sample(local, 5))",g)
+            TraversalScriptHelper.compute("g.V().group().by(T.label).by(bothE().values('weight').fold()).by(sample(local, 5))",g)
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/97e46779/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovySimplePathTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovySimplePathTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovySimplePathTest.groovy
index 74762ac..3a814a4 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovySimplePathTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovySimplePathTest.groovy
@@ -18,7 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.filter
 
-import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Path
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
@@ -32,12 +32,12 @@ public abstract class GroovySimplePathTest {
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_outXcreatedX_inXcreatedX_simplePath(final Object v1Id) {
-            GroovyTestHelper.compute("g.V(v1Id).out('created').in('created').simplePath", g, "v1Id", v1Id);
+            TraversalScriptHelper.compute("g.V(v1Id).out('created').in('created').simplePath", g, "v1Id", v1Id);
         }
 
         @Override
         public Traversal<Vertex, Path> get_g_V_repeatXboth_simplePathX_timesX3X_path() {
-            GroovyTestHelper.compute("g.V.repeat(__.both.simplePath).times(3).path()", g);
+            TraversalScriptHelper.compute("g.V.repeat(__.both.simplePath).times(3).path()", g);
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/97e46779/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyWhereTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyWhereTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyWhereTest.groovy
index 6e6fad0..5b2f195 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyWhereTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyWhereTest.groovy
@@ -18,7 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.filter
 
-import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
@@ -33,22 +33,22 @@ public abstract class GroovyWhereTest {
 
         @Override
         public Traversal<Vertex, Map<String, Object>> get_g_V_hasXageX_asXaX_out_in_hasXageX_asXbX_select_whereXa_eq_bX() {
-            GroovyTestHelper.compute("g.V.has('age').as('a').out.in.has('age').as('b').select().where('a', eq('b'))", g)
+            TraversalScriptHelper.compute("g.V.has('age').as('a').out.in.has('age').as('b').select().where('a', eq('b'))", g)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Object>> get_g_V_hasXageX_asXaX_out_in_hasXageX_asXbX_select_whereXa_neq_bX() {
-            GroovyTestHelper.compute("g.V.has('age').as('a').out.in.has('age').as('b').select().where('a', neq('b'))", g)
+            TraversalScriptHelper.compute("g.V.has('age').as('a').out.in.has('age').as('b').select().where('a', neq('b'))", g)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Object>> get_g_V_hasXageX_asXaX_out_in_hasXageX_asXbX_select_whereXb_hasXname_markoXX() {
-            GroovyTestHelper.compute("g.V.has('age').as('a').out.in.has('age').as('b').select().where(__.as('b').has('name', 'marko'))", g)
+            TraversalScriptHelper.compute("g.V.has('age').as('a').out.in.has('age').as('b').select().where(__.as('b').has('name', 'marko'))", g)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Object>> get_g_V_hasXageX_asXaX_out_in_hasXageX_asXbX_select_whereXa_outXknowsX_bX() {
-            GroovyTestHelper.compute("g.V().has('age').as('a').out.in.has('age').as('b').select().where(__.as('a').out('knows').as('b'))", g)
+            TraversalScriptHelper.compute("g.V().has('age').as('a').out.in.has('age').as('b').select().where(__.as('a').out('knows').as('b'))", g)
         }
 
         /// where(global)
@@ -56,13 +56,13 @@ public abstract class GroovyWhereTest {
         @Override
         public Traversal<Vertex, String> get_g_VX1X_asXaX_outXcreatedX_inXcreatedX_asXbX_whereXa_neq_bX_name(
                 final Object v1Id) {
-            GroovyTestHelper.compute("g.V(v1Id).as('a').out('created').in('created').as('b').where('a', neq('b')).name", g, "v1Id", v1Id)
+            TraversalScriptHelper.compute("g.V(v1Id).as('a').out('created').in('created').as('b').where('a', neq('b')).name", g, "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Object> get_g_VX1X_asXaX_outXcreatedX_inXcreatedX_asXbX_whereXasXbX_outXcreatedX_hasXname_rippleXX_valuesXage_nameX(
                 final Object v1Id) {
-            GroovyTestHelper.compute("g.V(v1Id).as('a').out('created').in('created').as('b').where(__.as('b').out('created').has('name','ripple')).values('age','name')", g, "v1Id", v1Id)
+            TraversalScriptHelper.compute("g.V(v1Id).as('a').out('created').in('created').as('b').where(__.as('b').out('created').has('name','ripple')).values('age','name')", g, "v1Id", v1Id)
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/97e46779/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyAddEdgeTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyAddEdgeTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyAddEdgeTest.groovy
index 1c1b4c4..5efe44f 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyAddEdgeTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyAddEdgeTest.groovy
@@ -18,7 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.map
 
-import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
 import org.apache.tinkerpop.gremlin.structure.Edge
 import org.apache.tinkerpop.gremlin.structure.Vertex
@@ -32,18 +32,18 @@ public abstract class GroovyAddEdgeTest {
 
         @Override
         public Traversal<Vertex, Edge> get_g_VX1X_asXaX_outXcreatedX_addOutEXcreatedBy_aX(final Object v1Id) {
-            GroovyTestHelper.compute("g.V(v1Id).as('a').out('created').addOutE('createdBy', 'a')", g, "v1Id", v1Id)
+            TraversalScriptHelper.compute("g.V(v1Id).as('a').out('created').addOutE('createdBy', 'a')", g, "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Edge> get_g_VX1X_asXaX_outXcreatedX_addOutEXcreatedBy_a_weight_2X(
                 final Object v1Id) {
-            GroovyTestHelper.compute("g.V(v1Id).as('a').out('created').addOutE('createdBy', 'a', 'weight', 2)", g, "v1Id", v1Id)
+            TraversalScriptHelper.compute("g.V(v1Id).as('a').out('created').addOutE('createdBy', 'a', 'weight', 2)", g, "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Edge> get_g_V_addOutEXexistsWith__g_V__time_nowX() {
-            GroovyTestHelper.compute("g.V.addOutE('existsWith', g.V, 'time', 'now')", g)
+            TraversalScriptHelper.compute("g.V.addOutE('existsWith', g.V, 'time', 'now')", g)
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/97e46779/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyAddVertexTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyAddVertexTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyAddVertexTest.groovy
index dc161f0..5fe5b86 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyAddVertexTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyAddVertexTest.groovy
@@ -19,7 +19,7 @@
 
 package org.apache.tinkerpop.gremlin.process.traversal.step.map
 
-import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
@@ -32,12 +32,12 @@ public abstract class GroovyAddVertexTest {
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_addVXlabel_animal_age_0X() {
-            GroovyTestHelper.compute("g.V.addV(T.label, 'animal', 'age', 0)", g)
+            TraversalScriptHelper.compute("g.V.addV(T.label, 'animal', 'age', 0)", g)
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_addVXlabel_person_name_stephenX() {
-            GroovyTestHelper.compute("g.addV(T.label, 'person', 'name', 'stephen')", g)
+            TraversalScriptHelper.compute("g.addV(T.label, 'person', 'name', 'stephen')", g)
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/97e46779/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyCoalesceTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyCoalesceTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyCoalesceTest.groovy
index 760c60a..b3005ff 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyCoalesceTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyCoalesceTest.groovy
@@ -18,7 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.map
 
-import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Path
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
@@ -33,27 +33,27 @@ public abstract class GroovyCoalesceTest {
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_coalesceXoutXfooX_outXbarXX() {
-            GroovyTestHelper.compute("g.V().coalesce(out('foo'), out('bar'))", g)
+            TraversalScriptHelper.compute("g.V().coalesce(out('foo'), out('bar'))", g)
         }
 
         @Override
         public Traversal<Vertex, String> get_g_VX1X_coalesceXoutXknowsX_outXcreatedXX_valuesXnameX(final Object v1Id) {
-            GroovyTestHelper.compute("g.V(v1Id).coalesce(out('knows'), out('created')).values('name')", g, "v1Id", v1Id)
+            TraversalScriptHelper.compute("g.V(v1Id).coalesce(out('knows'), out('created')).values('name')", g, "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, String> get_g_VX1X_coalesceXoutXcreatedX_outXknowsXX_valuesXnameX(final Object v1Id) {
-            GroovyTestHelper.compute("g.V(v1Id).coalesce(out('created'), out('knows')).values('name')", g, "v1Id", v1Id)
+            TraversalScriptHelper.compute("g.V(v1Id).coalesce(out('created'), out('knows')).values('name')", g, "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Long>> get_g_V_coalesceXoutXlikesX_outXknowsX_inXcreatedXX_groupCount_byXnameX() {
-            GroovyTestHelper.compute("g.V().coalesce(out('likes'), out('knows'), out('created')).groupCount().by('name')", g)
+            TraversalScriptHelper.compute("g.V().coalesce(out('likes'), out('knows'), out('created')).groupCount().by('name')", g)
         }
 
         @Override
         Traversal<Vertex, Path> get_g_V_coalesceXoutEXknowsX_outEXcreatedXX_otherV_path_byXnameX_byXlabelX() {
-            GroovyTestHelper.compute("g.V.coalesce(outE('knows'), outE('created')).otherV.path.by('name').by(T.label)", g)
+            TraversalScriptHelper.compute("g.V.coalesce(outE('knows'), outE('created')).otherV.path.by('name').by(T.label)", g)
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/97e46779/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyCountTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyCountTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyCountTest.groovy
index e0b5f9c..3c4e48f 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyCountTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyCountTest.groovy
@@ -18,7 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.map
 
-import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
@@ -30,37 +30,37 @@ public abstract class GroovyCountTest {
     public static class Traversals extends CountTest {
         @Override
         public Traversal<Vertex, Long> get_g_V_count() {
-            GroovyTestHelper.compute("g.V.count()", g)
+            TraversalScriptHelper.compute("g.V.count()", g)
         }
 
         @Override
         public Traversal<Vertex, Long> get_g_V_out_count() {
-            GroovyTestHelper.compute("g.V.out.count", g)
+            TraversalScriptHelper.compute("g.V.out.count", g)
         }
 
         @Override
         public Traversal<Vertex, Long> get_g_V_both_both_count() {
-            GroovyTestHelper.compute("g.V.both.both.count()", g)
+            TraversalScriptHelper.compute("g.V.both.both.count()", g)
         }
 
         @Override
         public Traversal<Vertex, Long> get_g_V_repeatXoutX_timesX3X_count() {
-            GroovyTestHelper.compute("g.V().repeat(__.out).times(3).count()", g);
+            TraversalScriptHelper.compute("g.V().repeat(__.out).times(3).count()", g);
         }
 
         @Override
         public Traversal<Vertex, Long> get_g_V_repeatXoutX_timesX8X_count() {
-            GroovyTestHelper.compute("g.V.repeat(__.out).times(8).count()", g);
+            TraversalScriptHelper.compute("g.V.repeat(__.out).times(8).count()", g);
         }
 
         @Override
         public Traversal<Vertex, Long> get_g_V_hasXnoX_count() {
-            GroovyTestHelper.compute("g.V.has('no').count", g)
+            TraversalScriptHelper.compute("g.V.has('no').count", g)
         }
 
         @Override
         public Traversal<Vertex, Long> get_g_V_fold_countXlocalX() {
-            GroovyTestHelper.compute("g.V.fold.count(local)", g);
+            TraversalScriptHelper.compute("g.V.fold.count(local)", g);
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/97e46779/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyFoldTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyFoldTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyFoldTest.groovy
index ecbe53c..db7bcfc 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyFoldTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyFoldTest.groovy
@@ -18,7 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.map
 
-import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
@@ -30,17 +30,17 @@ public abstract class GroovyFoldTest {
     public static class Traversals extends FoldTest {
         @Override
         public Traversal<Vertex, List<Vertex>> get_g_V_fold() {
-            GroovyTestHelper.compute("g.V.fold", g)
+            TraversalScriptHelper.compute("g.V.fold", g)
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_fold_unfold() {
-            GroovyTestHelper.compute("g.V.fold.unfold", g)
+            TraversalScriptHelper.compute("g.V.fold.unfold", g)
         }
 
         @Override
         public Traversal<Vertex, Integer> get_g_V_age_foldX0_plusX() {
-            GroovyTestHelper.compute("g.V.age.fold(0) { seed, age -> seed + age }", g)
+            TraversalScriptHelper.compute("g.V.age.fold(0) { seed, age -> seed + age }", g)
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/97e46779/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMapTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMapTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMapTest.groovy
index f76f995..e230215 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMapTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMapTest.groovy
@@ -18,7 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.map
 
-import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
@@ -31,27 +31,27 @@ public abstract class GroovyMapTest {
 
         @Override
         public Traversal<Vertex, String> get_g_VX1X_mapXnameX(final Object v1Id) {
-            GroovyTestHelper.compute("g.V(v1Id).map { v -> v.name }", g, "v1Id", v1Id)
+            TraversalScriptHelper.compute("g.V(v1Id).map { v -> v.name }", g, "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Integer> get_g_VX1X_outE_label_mapXlengthX(final Object v1Id) {
-            GroovyTestHelper.compute("g.V(v1Id).outE.label.map { l -> l.length() }", g, "v1Id", v1Id)
+            TraversalScriptHelper.compute("g.V(v1Id).outE.label.map { l -> l.length() }", g, "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Integer> get_g_VX1X_out_mapXnameX_mapXlengthX(final Object v1Id) {
-            GroovyTestHelper.compute("g.V(v1Id).out.map { v -> v.name }.map { n -> n.length() }", g, "v1Id", v1Id)
+            TraversalScriptHelper.compute("g.V(v1Id).out.map { v -> v.name }.map { n -> n.length() }", g, "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, String> get_g_withPath_V_asXaX_out_mapXa_nameX() {
-            GroovyTestHelper.compute("g.withPath().V.as('a').out.map { v -> v.path('a').name }", g)
+            TraversalScriptHelper.compute("g.withPath().V.as('a').out.map { v -> v.path('a').name }", g)
         }
 
         @Override
         public Traversal<Vertex, String> get_g_withPath_V_asXaX_out_out_mapXa_name_it_nameX() {
-            GroovyTestHelper.compute("g.withPath().V().as('a').out.out().map { v -> v.path('a').name + v.name }", g)
+            TraversalScriptHelper.compute("g.withPath().V().as('a').out.out().map { v -> v.path('a').name + v.name }", g)
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/97e46779/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMaxTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMaxTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMaxTest.groovy
index 1acd815..bd2fe80 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMaxTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMaxTest.groovy
@@ -18,9 +18,8 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.map
 
-import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
 /**
@@ -32,17 +31,17 @@ public abstract class GroovyMaxTest {
 
         @Override
         public Traversal<Vertex, Integer> get_g_V_age_max() {
-            GroovyTestHelper.compute("g.V.age.max", g)
+            TraversalScriptHelper.compute("g.V.age.max", g)
         }
 
         @Override
         public Traversal<Vertex, Integer> get_g_V_repeatXbothX_timesX5X_age_max() {
-            GroovyTestHelper.compute("g.V.repeat(__.both).times(5).age.max", g)
+            TraversalScriptHelper.compute("g.V.repeat(__.both).times(5).age.max", g)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Number>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_valuesXweightX_foldX_byXmaxXlocalXX() {
-            GroovyTestHelper.compute("g.V().hasLabel('software').group().by('name').by(bothE().values('weight').fold()).by(max(Scope.local))", g)
+            TraversalScriptHelper.compute("g.V().hasLabel('software').group().by('name').by(bothE().values('weight').fold()).by(max(Scope.local))", g)
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/97e46779/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMeanTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMeanTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMeanTest.groovy
index ea6018e..3a7ee84 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMeanTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMeanTest.groovy
@@ -18,7 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.map
 
-import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
@@ -31,12 +31,12 @@ public abstract class GroovyMeanTest {
 
         @Override
         public Traversal<Vertex, Double> get_g_V_age_mean() {
-            GroovyTestHelper.compute("g.V.age.mean", g)
+            TraversalScriptHelper.compute("g.V.age.mean", g)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Number>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_valuesXweightX_foldX_byXmeanXlocalXX() {
-            GroovyTestHelper.compute("g.V().hasLabel('software').group().by('name').by(bothE().values('weight').fold()).by(mean(Scope.local))", g)
+            TraversalScriptHelper.compute("g.V().hasLabel('software').group().by('name').by(bothE().values('weight').fold()).by(mean(Scope.local))", g)
         }
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/97e46779/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMinTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMinTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMinTest.groovy
index 0f3e522..1f9089a 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMinTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMinTest.groovy
@@ -18,7 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.map
 
-import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
@@ -31,17 +31,17 @@ public abstract class GroovyMinTest {
 
         @Override
         public Traversal<Vertex, Integer> get_g_V_age_min() {
-            GroovyTestHelper.compute("g.V.age.min", g)
+            TraversalScriptHelper.compute("g.V.age.min", g)
         }
 
         @Override
         public Traversal<Vertex, Integer> get_g_V_repeatXbothX_timesX5X_age_min() {
-            GroovyTestHelper.compute("g.V.repeat(__.both).times(5).age.min", g)
+            TraversalScriptHelper.compute("g.V.repeat(__.both).times(5).age.min", g)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Number>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_valuesXweightX_foldX_byXminXlocalXX() {
-            GroovyTestHelper.compute("g.V().hasLabel('software').group().by('name').by(bothE().values('weight').fold()).by(min(local))", g)
+            TraversalScriptHelper.compute("g.V().hasLabel('software').group().by('name').by(bothE().values('weight').fold()).by(min(local))", g)
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/97e46779/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyOrderTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyOrderTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyOrderTest.groovy
index e055594..0e2877e 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyOrderTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyOrderTest.groovy
@@ -18,7 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.map
 
-import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
@@ -31,43 +31,43 @@ public abstract class GroovyOrderTest {
 
         @Override
         public Traversal<Vertex, String> get_g_V_name_order() {
-            GroovyTestHelper.compute("g.V().name.order()", g)
+            TraversalScriptHelper.compute("g.V().name.order()", g)
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_name_order_byXa1_b1X_byXb2_a2X() {
-            GroovyTestHelper.compute("g.V.name.order.by { a, b -> a[1] <=> b[1] }.by { a, b -> b[2] <=> a[2] }", g)
+            TraversalScriptHelper.compute("g.V.name.order.by { a, b -> a[1] <=> b[1] }.by { a, b -> b[2] <=> a[2] }", g)
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_order_byXname_incrX_name() {
-            GroovyTestHelper.compute("g.V.order.by('name', Order.incr).name", g)
+            TraversalScriptHelper.compute("g.V.order.by('name', Order.incr).name", g)
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_order_byXnameX_name() {
-            GroovyTestHelper.compute("g.V.order.by('name', Order.incr).name", g)
+            TraversalScriptHelper.compute("g.V.order.by('name', Order.incr).name", g)
         }
 
         @Override
         public Traversal<Vertex, Double> get_g_V_outE_order_byXweight_decrX_weight() {
-            GroovyTestHelper.compute("g.V.outE.order.by('weight', Order.decr).weight", g)
+            TraversalScriptHelper.compute("g.V.outE.order.by('weight', Order.decr).weight", g)
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_order_byXname_a1_b1X_byXname_b2_a2X_name() {
-            GroovyTestHelper.compute("g.V.order.by('name', { a, b -> a[1].compareTo(b[1]) }).by('name', { a, b -> b[2].compareTo(a[2]) }).name", g)
+            TraversalScriptHelper.compute("g.V.order.by('name', { a, b -> a[1].compareTo(b[1]) }).by('name', { a, b -> b[2].compareTo(a[2]) }).name", g)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Vertex>> get_g_V_asXaX_outXcreatedX_asXbX_order_byXshuffleX_select() {
-            GroovyTestHelper.compute("g.V.as('a').out('created').as('b').order.by(Order.shuffle).select()", g)
+            TraversalScriptHelper.compute("g.V.as('a').out('created').as('b').order.by(Order.shuffle).select()", g)
         }
 
         @Override
         public Traversal<Vertex, Map<Integer, Integer>> get_g_VX1X_hasXlabel_personX_mapXmapXint_ageXX_orderXlocalX_byXvalueDecrX_byXkeyIncrX(
                 final Object v1Id) {
-            GroovyTestHelper.compute("""g.V(v1Id).map {
+            TraversalScriptHelper.compute("""g.V(v1Id).map {
                 final Map map = [:];
                 map[1] = it.age;
                 map[2] = it.age * 2;
@@ -79,7 +79,7 @@ public abstract class GroovyOrderTest {
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_order_byXoutE_count__decrX() {
-            GroovyTestHelper.compute("g.V.order.by(__.outE.count, decr)", g)
+            TraversalScriptHelper.compute("g.V.order.by(__.outE.count, decr)", g)
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/97e46779/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyPathTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyPathTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyPathTest.groovy
index 42a031c..fa0e2be 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyPathTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyPathTest.groovy
@@ -18,7 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.map
 
-import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Path
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
@@ -32,27 +32,27 @@ public abstract class GroovyPathTest {
 
         @Override
         public Traversal<Vertex, Path> get_g_VX1X_name_path(final Object v1Id) {
-            GroovyTestHelper.compute("g.V(v1Id).name.path", g, "v1Id", v1Id);
+            TraversalScriptHelper.compute("g.V(v1Id).name.path", g, "v1Id", v1Id);
         }
 
         @Override
         public Traversal<Vertex, Path> get_g_VX1X_out_path_byXageX_byXnameX(final Object v1Id) {
-            GroovyTestHelper.compute("g.V(v1Id).out.path.by('age').by('name')", g, "v1Id", v1Id)
+            TraversalScriptHelper.compute("g.V(v1Id).out.path.by('age').by('name')", g, "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Path> get_g_V_repeatXoutX_timesX2X_path_by_byXnameX_byXlangX() {
-            GroovyTestHelper.compute("g.V.repeat(__.out).times(2).path.by.by('name').by('lang')", g)
+            TraversalScriptHelper.compute("g.V.repeat(__.out).times(2).path.by.by('name').by('lang')", g)
         }
 
         @Override
         public Traversal<Vertex, Path> get_g_V_out_out_path_byXnameX_byXageX() {
-            GroovyTestHelper.compute("g.V.out.out.path.by('name').by('age')", g)
+            TraversalScriptHelper.compute("g.V.out.out.path.by('name').by('age')", g)
         }
 
         @Override
         public Traversal<Vertex, Path> get_g_V_asXaX_hasXname_markoX_asXbX_hasXage_29X_asXcX_path() {
-            GroovyTestHelper.compute("g.V.as('a').has('name', 'marko').as('b').has('age', 29).as('c').path", g)
+            TraversalScriptHelper.compute("g.V.as('a').has('name', 'marko').as('b').has('age', 29).as('c').path", g)
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/97e46779/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyPropertiesTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyPropertiesTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyPropertiesTest.groovy
index b998cd3..8ed7859 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyPropertiesTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyPropertiesTest.groovy
@@ -18,7 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.map
 
-import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
@@ -31,17 +31,17 @@ public abstract class GroovyPropertiesTest {
 
         @Override
         public Traversal<Vertex, Object> get_g_V_hasXageX_propertiesXname_ageX_value() {
-            GroovyTestHelper.compute("g.V.has('age').properties('name', 'age').value", g)
+            TraversalScriptHelper.compute("g.V.has('age').properties('name', 'age').value", g)
         }
 
         @Override
         public Traversal<Vertex, Object> get_g_V_hasXageX_propertiesXage_nameX_value() {
-            GroovyTestHelper.compute("g.V.has('age').properties('age', 'name').value", g)
+            TraversalScriptHelper.compute("g.V.has('age').properties('age', 'name').value", g)
         }
 
         @Override
         public Traversal<Vertex, Object> get_g_V_hasXageX_properties_hasXid_nameIdX_value(final Object nameId) {
-            GroovyTestHelper.compute("g.V.has('age').properties().has(T.id, nameId).value()", g, "nameId", nameId)
+            TraversalScriptHelper.compute("g.V.has('age').properties().has(T.id, nameId).value()", g, "nameId", nameId)
         }
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/97e46779/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 1238cca..4c5143b 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
@@ -19,7 +19,7 @@
 package org.apache.tinkerpop.gremlin.process.traversal.step.map
 
 import org.apache.tinkerpop.gremlin.process.UseEngine
-import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine
 import org.apache.tinkerpop.gremlin.structure.Edge
@@ -36,132 +36,132 @@ public abstract class GroovySelectTest {
 
         @Override
         public Traversal<Vertex, Map<String, Vertex>> get_g_VX1X_asXaX_outXknowsX_asXbX_select(final Object v1Id) {
-            GroovyTestHelper.compute("g.V(v1Id).as('a').out('knows').as('b').select()", g, "v1Id", v1Id)
+            TraversalScriptHelper.compute("g.V(v1Id).as('a').out('knows').as('b').select()", g, "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Map<String, String>> get_g_VX1X_asXaX_outXknowsX_asXbX_select_byXnameX(
                 final Object v1Id) {
-            GroovyTestHelper.compute("g.V(v1Id).as('a').out('knows').as('b').select.by('name')", g, "v1Id", v1Id)
+            TraversalScriptHelper.compute("g.V(v1Id).as('a').out('knows').as('b').select.by('name')", g, "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_asXaX_outXknowsX_asXbX_selectXaX(final Object v1Id) {
-            GroovyTestHelper.compute("g.V(v1Id).as('a').out('knows').as('b').select('a')", g, "v1Id", v1Id)
+            TraversalScriptHelper.compute("g.V(v1Id).as('a').out('knows').as('b').select('a')", g, "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, String> get_g_VX1X_asXaX_outXknowsX_asXbX_selectXaX_byXnameX(
                 final Object v1Id) {
-            GroovyTestHelper.compute("g.V(v1Id).as('a').out('knows').as('b').select('a').by('name')", g, "v1Id", v1Id)
+            TraversalScriptHelper.compute("g.V(v1Id).as('a').out('knows').as('b').select('a').by('name')", g, "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Map<String, String>> get_g_V_asXaX_out_asXbX_select_byXnameX() {
-            GroovyTestHelper.compute("g.V.as('a').out.as('b').select.by('name')", g)
+            TraversalScriptHelper.compute("g.V.as('a').out.as('b').select.by('name')", g)
         }
 
         @Override
         public Traversal<Vertex, Map<String, String>> get_g_V_asXaX_out_aggregateXxX_asXbX_select_byXnameX() {
-            GroovyTestHelper.compute("g.V.as('a').out.aggregate('x').as('b').select.by('name')", g)
+            TraversalScriptHelper.compute("g.V.as('a').out.aggregate('x').as('b').select.by('name')", g)
         }
 
         @Override
         public Traversal<Vertex, Map<String, String>> get_g_V_asXaX_name_order_asXbX_select_byXnameX_by_XitX() {
-            GroovyTestHelper.compute("g.V().as('a').name.order().as('b').select.by('name').by", g)
+            TraversalScriptHelper.compute("g.V().as('a').name.order().as('b').select.by('name').by", g)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Object>> get_g_V_hasXname_gremlinX_inEXusesX_order_byXskill_incrX_asXaX_outV_asXbX_select_byXskillX_byXnameX() {
-            GroovyTestHelper.compute("g.V.has('name', 'gremlin').inE('uses').order.by('skill', Order.incr).as('a').outV.as('b').select.by('skill').by('name')", g)
+            TraversalScriptHelper.compute("g.V.has('name', 'gremlin').inE('uses').order.by('skill', Order.incr).as('a').outV.as('b').select.by('skill').by('name')", g)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Object>> get_g_V_hasXname_isXmarkoXX_asXaX_select() {
-            GroovyTestHelper.compute("g.V.has(values('name').is('marko')).as('a').select", g)
+            TraversalScriptHelper.compute("g.V.has(values('name').is('marko')).as('a').select", g)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Object>> get_g_V_label_groupCount_asXxX_select() {
-            GroovyTestHelper.compute("g.V().label().groupCount().as('x').select()", g)
+            TraversalScriptHelper.compute("g.V().label().groupCount().as('x').select()", g)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Object>> get_g_V_hasLabelXpersonX_asXpersonX_localXbothE_label_groupCountX_asXrelationsX_select_byXnameX_by() {
-            GroovyTestHelper.compute("g.V().hasLabel('person').as('person').local(__.bothE().label().groupCount()).as('relations').select().by('name').by()", g)
+            TraversalScriptHelper.compute("g.V().hasLabel('person').as('person').local(__.bothE().label().groupCount()).as('relations').select().by('name').by()", g)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Vertex>> get_g_V_chooseXoutE_count_isX0X__asXaX__asXbXX_select() {
-            GroovyTestHelper.compute("g.V().choose(__.outE().count().is(0L), __.as('a'), __.as('b')).select()", g)
+            TraversalScriptHelper.compute("g.V().choose(__.outE().count().is(0L), __.as('a'), __.as('b')).select()", g)
         }
 
         @Override
         Traversal<Vertex, Map<String, List<Vertex>>> get_g_V_asXaX_outXcreatedX_asXaX_select() {
-            GroovyTestHelper.compute("g.V.as('a').out('created').as('a').select", g)
+            TraversalScriptHelper.compute("g.V.as('a').out('created').as('a').select", g)
         }
 //
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_asXhereX_out_selectXhereX(final Object v1Id) {
-            GroovyTestHelper.compute("g.V(v1Id).as('here').out.select('here')", g, "v1Id", v1Id)
+            TraversalScriptHelper.compute("g.V(v1Id).as('here').out.select('here')", g, "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX4X_out_asXhereX_hasXlang_javaX_selectXhereX(final Object v4Id) {
-            GroovyTestHelper.compute("g.V(v4Id).out.as('here').has('lang', 'java').select('here')", g, "v4Id", v4Id)
+            TraversalScriptHelper.compute("g.V(v4Id).out.as('here').has('lang', 'java').select('here')", g, "v4Id", v4Id)
         }
 
         @Override
         public Traversal<Vertex, String> get_g_VX4X_out_asXhereX_hasXlang_javaX_selectXhereX_name(
                 final Object v4Id) {
-            GroovyTestHelper.compute("g.V(v4Id).out.as('here').has('lang', 'java').select('here').name", g, "v4Id", v4Id)
+            TraversalScriptHelper.compute("g.V(v4Id).out.as('here').has('lang', 'java').select('here').name", g, "v4Id", v4Id)
         }
 
         @Override
         public Traversal<Vertex, Edge> get_g_VX1X_outE_asXhereX_inV_hasXname_vadasX_selectXhereX(final Object v1Id) {
-            GroovyTestHelper.compute("g.V(v1Id).outE.as('here').inV.has('name', 'vadas').select('here')", g, "v1Id", v1Id)
+            TraversalScriptHelper.compute("g.V(v1Id).outE.as('here').inV.has('name', 'vadas').select('here')", g, "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Edge> get_g_VX1X_outEXknowsX_hasXweight_1X_asXhereX_inV_hasXname_joshX_selectXhereX(
                 final Object v1Id) {
-            GroovyTestHelper.compute("g.V(v1Id).outE('knows').has('weight', 1.0d).as('here').inV.has('name', 'josh').select('here')", g, "v1Id", v1Id)
+            TraversalScriptHelper.compute("g.V(v1Id).outE('knows').has('weight', 1.0d).as('here').inV.has('name', 'josh').select('here')", g, "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Edge> get_g_VX1X_outEXknowsX_asXhereX_hasXweight_1X_inV_hasXname_joshX_selectXhereX(
                 final Object v1Id) {
-            GroovyTestHelper.compute("g.V(v1Id).outE('knows').as('here').has('weight', 1.0d).inV.has('name', 'josh').select('here')", g, "v1Id", v1Id)
+            TraversalScriptHelper.compute("g.V(v1Id).outE('knows').as('here').has('weight', 1.0d).inV.has('name', 'josh').select('here')", g, "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Edge> get_g_VX1X_outEXknowsX_asXhereX_hasXweight_1X_asXfakeX_inV_hasXname_joshX_selectXhereX(
                 final Object v1Id) {
-            GroovyTestHelper.compute("g.V(v1Id).outE('knows').as('here').has('weight', 1.0d).as('fake').inV.has('name', 'josh').select('here')", g, "v1Id", v1Id)
+            TraversalScriptHelper.compute("g.V(v1Id).outE('knows').as('here').has('weight', 1.0d).as('fake').inV.has('name', 'josh').select('here')", g, "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_asXhereXout_name_selectXhereX() {
-            GroovyTestHelper.compute("g.V().as('here').out.name.select('here')", g)
+            TraversalScriptHelper.compute("g.V().as('here').out.name.select('here')", g)
         }
 
 
         @Override
         public Traversal<Vertex, Map<String, Long>> get_g_V_outXcreatedX_unionXasXprojectX_inXcreatedX_hasXname_markoX_selectXprojectX__asXprojectX_inXcreatedX_inXknowsX_hasXname_markoX_selectXprojectXX_groupCount_byXnameX() {
-            GroovyTestHelper.compute("""g.V.out('created')
+            TraversalScriptHelper.compute("""g.V.out('created')
                     .union(__.as('project').in('created').has('name', 'marko').select('project'),
                     __.as('project').in('created').in('knows').has('name', 'marko').select('project')).groupCount().by('name')""", g)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Object>> get_g_V_asXaX_hasXname_markoX_asXbX_asXcX_select_by_byXnameX_byXageX() {
-            GroovyTestHelper.compute("g.V.as('a').has('name', 'marko').as('b').as('c').select().by().by('name').by('age')", g)
+            TraversalScriptHelper.compute("g.V.as('a').has('name', 'marko').as('b').as('c').select().by().by('name').by('age')", g)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Object>> get_g_V_hasLabelXsoftwareX_asXnameX_asXlanguageX_asXcreatorsX_select_byXnameX_byXlangX_byXinXcreatedX_valuesXnameX_fold_orderXlocalXX() {
-            GroovyTestHelper.compute("""g.V.hasLabel('software').as('name').as('language').as('creators').select().by('name').by('lang').
+            TraversalScriptHelper.compute("""g.V.hasLabel('software').as('name').as('language').as('creators').select().by('name').by('lang').
                     by(__.in('created').values('name').fold().order(local))""", g)
         }
     }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/97e46779/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovySumTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovySumTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovySumTest.groovy
index 27fd903..6f29bd5 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovySumTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovySumTest.groovy
@@ -18,7 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.map
 
-import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
@@ -31,12 +31,12 @@ public abstract class GroovySumTest {
 
         @Override
         public Traversal<Vertex, Double> get_g_V_valuesXageX_sum() {
-            GroovyTestHelper.compute("g.V.age.sum", g)
+            TraversalScriptHelper.compute("g.V.age.sum", g)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Number>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_valuesXweightX_foldX_byXsumXlocalXX() {
-            GroovyTestHelper.compute("g.V().hasLabel('software').group().by('name').by(bothE().values('weight').fold()).by(sum(local))", g)
+            TraversalScriptHelper.compute("g.V().hasLabel('software').group().by('name').by(bothE().values('weight').fold()).by(sum(local))", g)
         }
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/97e46779/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyUnfoldTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyUnfoldTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyUnfoldTest.groovy
index 06d3504..409172f 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyUnfoldTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyUnfoldTest.groovy
@@ -18,7 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.map
 
-import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
 import org.apache.tinkerpop.gremlin.structure.Edge
 import org.apache.tinkerpop.gremlin.structure.Vertex
@@ -32,12 +32,12 @@ public abstract class GroovyUnfoldTest {
 
         @Override
         public Traversal<Vertex, Edge> get_g_V_localXoutE_foldX_unfold() {
-            GroovyTestHelper.compute("g.V.local(__.outE.fold).unfold", g)
+            TraversalScriptHelper.compute("g.V.local(__.outE.fold).unfold", g)
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_valueMap_unfold_mapXkeyX() {
-            GroovyTestHelper.compute("g.V.valueMap.unfold.map { it.key }", g)
+            TraversalScriptHelper.compute("g.V.valueMap.unfold.map { it.key }", g)
         }
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/97e46779/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyValueMapTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyValueMapTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyValueMapTest.groovy
index 96ab120..8b8f301 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyValueMapTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyValueMapTest.groovy
@@ -18,7 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.map
 
-import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
@@ -30,17 +30,17 @@ public abstract class GroovyValueMapTest {
     public static class Traversals extends ValueMapTest {
         @Override
         public Traversal<Vertex, Map<String, List>> get_g_V_valueMap() {
-            GroovyTestHelper.compute("g.V.valueMap", g);
+            TraversalScriptHelper.compute("g.V.valueMap", g);
         }
 
         @Override
         public Traversal<Vertex, Map<String, List>> get_g_V_valueMapXname_ageX() {
-            GroovyTestHelper.compute("g.V.valueMap('name', 'age')", g);
+            TraversalScriptHelper.compute("g.V.valueMap('name', 'age')", g);
         }
 
         @Override
         public Traversal<Vertex, Map<String, List<String>>> get_g_VX1X_outXcreatedX_valueMap(final Object v1Id) {
-            GroovyTestHelper.compute("g.V(v1Id).out('created').valueMap", g, "v1Id", v1Id);
+            TraversalScriptHelper.compute("g.V(v1Id).out('created').valueMap", g, "v1Id", v1Id);
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/97e46779/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 91b736e..71041e4 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
@@ -18,7 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.map
 
-import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
 import org.apache.tinkerpop.gremlin.structure.Edge
 import org.apache.tinkerpop.gremlin.structure.Vertex
@@ -32,132 +32,132 @@ public abstract class GroovyVertexTest {
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V() {
-            GroovyTestHelper.compute("g.V", g);
+            TraversalScriptHelper.compute("g.V", g);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_out(final Object v1Id) {
-            GroovyTestHelper.compute("g.V(v1Id).out", g, "v1Id", v1Id);
+            TraversalScriptHelper.compute("g.V(v1Id).out", g, "v1Id", v1Id);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX2X_in(final Object v2Id) {
-            GroovyTestHelper.compute("g.V(v2Id).in", g, "v2Id", v2Id);
+            TraversalScriptHelper.compute("g.V(v2Id).in", g, "v2Id", v2Id);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX4X_both(final Object v4Id) {
-            GroovyTestHelper.compute("g.V(v4Id).both", g, "v4Id", v4Id);
+            TraversalScriptHelper.compute("g.V(v4Id).both", g, "v4Id", v4Id);
         }
 
         @Override
         public Traversal<Edge, Edge> get_g_E() {
-            GroovyTestHelper.compute("g.E", g);
+            TraversalScriptHelper.compute("g.E", g);
         }
 
         @Override
         public Traversal<Edge, Edge> get_g_EX11X(final Object e11Id) {
-            GroovyTestHelper.compute("g.E(e11Id)", g, "e11Id", e11Id)
+            TraversalScriptHelper.compute("g.E(e11Id)", g, "e11Id", e11Id)
         }
 
         @Override
         public Traversal<Vertex, Edge> get_g_VX1X_outE(final Object v1Id) {
-            GroovyTestHelper.compute("g.V(v1Id).outE", g, "v1Id", v1Id);
+            TraversalScriptHelper.compute("g.V(v1Id).outE", g, "v1Id", v1Id);
         }
 
         @Override
         public Traversal<Vertex, Edge> get_g_VX2X_inE(final Object v2Id) {
-            GroovyTestHelper.compute("g.V(v2Id).inE", g, "v2Id", v2Id);
+            TraversalScriptHelper.compute("g.V(v2Id).inE", g, "v2Id", v2Id);
         }
 
         @Override
         public Traversal<Vertex, Edge> get_g_VX4X_bothE(final Object v4Id) {
-            GroovyTestHelper.compute("g.V(v4Id).bothE", g, "v4Id", v4Id);
+            TraversalScriptHelper.compute("g.V(v4Id).bothE", g, "v4Id", v4Id);
         }
 
         @Override
         public Traversal<Vertex, Edge> get_g_VX4X_bothEXcreatedX(final Object v4Id) {
-            GroovyTestHelper.compute("g.V(v4Id).bothE('created')", g, "v4Id", v4Id);
+            TraversalScriptHelper.compute("g.V(v4Id).bothE('created')", g, "v4Id", v4Id);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_outE_inV(final Object v1Id) {
-            GroovyTestHelper.compute("g.V(v1Id).outE.inV", g, "v1Id", v1Id);
+            TraversalScriptHelper.compute("g.V(v1Id).outE.inV", g, "v1Id", v1Id);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX2X_inE_outV(final Object v2Id) {
-            GroovyTestHelper.compute("g.V(v2Id).inE.outV", g, "v2Id", v2Id);
+            TraversalScriptHelper.compute("g.V(v2Id).inE.outV", g, "v2Id", v2Id);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_outE_hasXweight_1X_outV() {
-            GroovyTestHelper.compute("g.V.outE.has('weight', 1.0d).outV", g);
+            TraversalScriptHelper.compute("g.V.outE.has('weight', 1.0d).outV", g);
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_out_outE_inV_inE_inV_both_name() {
-            GroovyTestHelper.compute("g.V.out.outE.inV.inE.inV.both.name", g);
+            TraversalScriptHelper.compute("g.V.out.outE.inV.inE.inV.both.name", g);
         }
 
         @Override
         public Traversal<Vertex, String> get_g_VX1X_outEXknowsX_bothV_name(final Object v1Id) {
-            GroovyTestHelper.compute("g.V(v1Id).outE('knows').bothV.name", g, "v1Id", v1Id);
+            TraversalScriptHelper.compute("g.V(v1Id).outE('knows').bothV.name", g, "v1Id", v1Id);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_outXknowsX(final Object v1Id) {
-            GroovyTestHelper.compute("g.V(v1Id).out('knows')", g, "v1Id", v1Id);
+            TraversalScriptHelper.compute("g.V(v1Id).out('knows')", g, "v1Id", v1Id);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_outXknows_createdX(final Object v1Id) {
-            GroovyTestHelper.compute("g.V(v1Id).out('knows', 'created')", g, "v1Id", v1Id);
+            TraversalScriptHelper.compute("g.V(v1Id).out('knows', 'created')", g, "v1Id", v1Id);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_outEXknowsX_inV(final Object v1Id) {
-            GroovyTestHelper.compute("g.V(v1Id).outE('knows').inV()", g, "v1Id", v1Id);
+            TraversalScriptHelper.compute("g.V(v1Id).outE('knows').inV()", g, "v1Id", v1Id);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_outEXknows_createdX_inV(final Object v1Id) {
-            GroovyTestHelper.compute("g.V(v1Id).outE('knows', 'created').inV", g, "v1Id", v1Id);
+            TraversalScriptHelper.compute("g.V(v1Id).outE('knows', 'created').inV", g, "v1Id", v1Id);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_out_out() {
-            GroovyTestHelper.compute("g.V.out().out()", g);
+            TraversalScriptHelper.compute("g.V.out().out()", g);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_out_out_out(final Object v1Id) {
-            GroovyTestHelper.compute("g.V(v1Id).out.out.out", g, "v1Id", v1Id);
+            TraversalScriptHelper.compute("g.V(v1Id).out.out.out", g, "v1Id", v1Id);
         }
 
         @Override
         public Traversal<Vertex, String> get_g_VX1X_out_name(final Object v1Id) {
-            GroovyTestHelper.compute("g.V(v1Id).out.name", g, "v1Id", v1Id);
+            TraversalScriptHelper.compute("g.V(v1Id).out.name", g, "v1Id", v1Id);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_outE_otherV(final Object v1Id) {
-            GroovyTestHelper.compute("g.V(v1Id).outE.otherV", g, "v1Id", v1Id);
+            TraversalScriptHelper.compute("g.V(v1Id).outE.otherV", g, "v1Id", v1Id);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX4X_bothE_otherV(final Object v4Id) {
-            GroovyTestHelper.compute("g.V(v4Id).bothE.otherV", g, "v4Id", v4Id);
+            TraversalScriptHelper.compute("g.V(v4Id).bothE.otherV", g, "v4Id", v4Id);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX4X_bothE_hasXweight_lt_1X_otherV(final Object v4Id) {
-            GroovyTestHelper.compute("g.V(v4Id).bothE.has('weight', lt(1.0d)).otherV", g, "v4Id", v4Id);
+            TraversalScriptHelper.compute("g.V(v4Id).bothE.has('weight', lt(1.0d)).otherV", g, "v4Id", v4Id);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_to_XOUT_knowsX(final Object v1Id) {
-            GroovyTestHelper.compute("g.V(v1Id).to(Direction.OUT, 'knows')", g, "v1Id", v1Id);
+            TraversalScriptHelper.compute("g.V(v1Id).to(Direction.OUT, 'knows')", g, "v1Id", v1Id);
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/97e46779/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyAggregateTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyAggregateTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyAggregateTest.groovy
index 76b7338..a2743e9 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyAggregateTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyAggregateTest.groovy
@@ -18,7 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect
 
-import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Path
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
@@ -32,17 +32,17 @@ public abstract class GroovyAggregateTest {
 
         @Override
         public Traversal<Vertex, List<String>> get_g_V_name_aggregateXxX_capXxX() {
-            GroovyTestHelper.compute("g.V.name.aggregate('x').cap('x')", g)
+            TraversalScriptHelper.compute("g.V.name.aggregate('x').cap('x')", g)
         }
 
         @Override
         public Traversal<Vertex, List<String>> get_g_V_aggregateXxX_byXnameX_capXxX() {
-            GroovyTestHelper.compute("g.V.aggregate('x').by('name').cap('x')", g)
+            TraversalScriptHelper.compute("g.V.aggregate('x').by('name').cap('x')", g)
         }
 
         @Override
         public Traversal<Vertex, Path> get_g_V_out_aggregateXaX_path() {
-            GroovyTestHelper.compute("g.V.out.aggregate('a').path", g)
+            TraversalScriptHelper.compute("g.V.out.aggregate('a').path", g)
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/97e46779/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyGroupCountTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyGroupCountTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyGroupCountTest.groovy
index ad5bec1..6a60278 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyGroupCountTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyGroupCountTest.groovy
@@ -18,7 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect
 
-import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
@@ -31,42 +31,42 @@ public abstract class GroovyGroupCountTest {
 
         @Override
         public Traversal<Vertex, Map<String, Long>> get_g_V_outXcreatedX_groupCount_byXnameX() {
-            GroovyTestHelper.compute("g.V.out('created').groupCount.by('name')", g)
+            TraversalScriptHelper.compute("g.V.out('created').groupCount.by('name')", g)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Long>> get_g_V_outXcreatedX_groupCountXaX_byXnameX_capXaX() {
-            GroovyTestHelper.compute("g.V.out('created').groupCount('a').by('name').cap('a')", g)
+            TraversalScriptHelper.compute("g.V.out('created').groupCount('a').by('name').cap('a')", g)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Long>> get_g_V_outXcreatedX_name_groupCount() {
-            GroovyTestHelper.compute("g.V.out('created').name.groupCount", g)
+            TraversalScriptHelper.compute("g.V.out('created').name.groupCount", g)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Long>> get_g_V_outXcreatedX_name_groupCountXaX_capXaX() {
-            GroovyTestHelper.compute("g.V.out('created').name.groupCount('a').cap('a')", g)
+            TraversalScriptHelper.compute("g.V.out('created').name.groupCount('a').cap('a')", g)
         }
 
         @Override
         public Traversal<Vertex, Map<Object, Long>> get_g_V_hasXnoX_groupCount() {
-            GroovyTestHelper.compute("g.V.has('no').groupCount", g)
+            TraversalScriptHelper.compute("g.V.has('no').groupCount", g)
         }
 
         @Override
         public Traversal<Vertex, Map<Object, Long>> get_g_V_hasXnoX_groupCountXaX_capXaX() {
-            GroovyTestHelper.compute("g.V.has('no').groupCount('a').cap('a')", g)
+            TraversalScriptHelper.compute("g.V.has('no').groupCount('a').cap('a')", g)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Long>> get_g_V_repeatXout_groupCountXaX_byXnameXX_timesX2X_capXaX() {
-            GroovyTestHelper.compute("g.V.repeat(__.out.groupCount('a').by('name')).times(2).cap('a')", g)
+            TraversalScriptHelper.compute("g.V.repeat(__.out.groupCount('a').by('name')).times(2).cap('a')", g)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Long>> get_g_V_unionXrepeatXoutX_timesX2X_groupCountXmX_byXlangXX__repeatXinX_timesX2X_groupCountXmX_byXnameXX_capXmX() {
-            GroovyTestHelper.compute("""
+            TraversalScriptHelper.compute("""
             g.V.union(
                     __.repeat(__.out).times(2).groupCount('m').by('lang'),
                     __.repeat(__.in).times(2).groupCount('m').by('name')).cap('m')

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/97e46779/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyGroupTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyGroupTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyGroupTest.groovy
index 52733de..89600a3 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyGroupTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyGroupTest.groovy
@@ -18,7 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect
 
-import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
@@ -31,32 +31,32 @@ public abstract class GroovyGroupTest {
 
         @Override
         public Traversal<Vertex, Map<String, Collection<Vertex>>> get_g_V_group_byXnameX() {
-            GroovyTestHelper.compute("g.V.group.by('name')", g)
+            TraversalScriptHelper.compute("g.V.group.by('name')", g)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Collection<Vertex>>> get_g_V_groupXaX_byXnameX_capXaX() {
-            GroovyTestHelper.compute("g.V.group('a').by('name').cap('a')", g)
+            TraversalScriptHelper.compute("g.V.group('a').by('name').cap('a')", g)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Collection<String>>> get_g_V_hasXlangX_groupXaX_byXlangX_byXnameX_out_capXaX() {
-            GroovyTestHelper.compute("g.V.has('lang').group('a').by('lang').by('name').out.cap('a')", g)
+            TraversalScriptHelper.compute("g.V.has('lang').group('a').by('lang').by('name').out.cap('a')", g)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Long>> get_g_V_hasXlangX_group_byXlangX_byX1X_byXcountXlocalXX() {
-            GroovyTestHelper.compute("g.V.has('lang').group.by('lang').by(__.inject(1)).by(__.count(Scope.local))", g)
+            TraversalScriptHelper.compute("g.V.has('lang').group.by('lang').by(__.inject(1)).by(__.count(Scope.local))", g)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Long>> get_g_V_repeatXout_groupXaX_byXnameX_by_byXcountXlocalXX_timesX2X_capXaX() {
-            GroovyTestHelper.compute("g.V.repeat(__.out.group('a').by('name').by.by(__.count(Scope.local))).times(2).cap('a')", g)
+            TraversalScriptHelper.compute("g.V.repeat(__.out.group('a').by('name').by.by(__.count(Scope.local))).times(2).cap('a')", g)
         }
 
         @Override
         public Traversal<Vertex, Map<Long, Collection<String>>> get_g_V_group_byXoutE_countX_byXnameX() {
-            GroovyTestHelper.compute("g.V.group.by(__.outE.count).by('name')", g)
+            TraversalScriptHelper.compute("g.V.group.by(__.outE.count).by('name')", g)
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/97e46779/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyProfileTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyProfileTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyProfileTest.groovy
index 886cacc..74fe09a 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyProfileTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyProfileTest.groovy
@@ -18,7 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect
 
-import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
 import org.apache.tinkerpop.gremlin.process.traversal.util.StandardTraversalMetrics
 import org.apache.tinkerpop.gremlin.structure.Vertex
@@ -38,17 +38,17 @@ public abstract class GroovyProfileTest {
 
         @Override
         public Traversal<Vertex, StandardTraversalMetrics> get_g_V_repeat_both_profile() {
-            GroovyTestHelper.compute("g.V.repeat(__.both()).times(3).profile()", g);
+            TraversalScriptHelper.compute("g.V.repeat(__.both()).times(3).profile()", g);
         }
 
         @Override
         Traversal<Vertex, StandardTraversalMetrics> get_g_V_hasXinXcreatedX_count_isX1XX_valuesXnameX_profile() {
-            GroovyTestHelper.compute("g.V().has(__.in('created').count().is(1l)).values('name').profile()", g);
+            TraversalScriptHelper.compute("g.V().has(__.in('created').count().is(1l)).values('name').profile()", g);
         }
 
         @Override
         Traversal<Vertex, StandardTraversalMetrics> get_g_V_sleep_sleep_profile() {
-            GroovyTestHelper.compute("g.V().sideEffect{Thread.sleep(10)}.sideEffect{Thread.sleep(5)}.profile()", g)
+            TraversalScriptHelper.compute("g.V().sideEffect{Thread.sleep(10)}.sideEffect{Thread.sleep(5)}.profile()", g)
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/97e46779/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySackTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySackTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySackTest.groovy
index e29af96..7bdd30a 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySackTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySackTest.groovy
@@ -18,7 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect
 
-import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
@@ -31,17 +31,17 @@ public abstract class GroovySackTest {
 
         @Override
         public Traversal<Vertex, Double> get_g_withSackX0X_V_outE_sackXsum_weightX_inV_sack_sum() {
-            GroovyTestHelper.compute("g.withSack(0.0f).V().outE.sack(sum, 'weight').inV.sack.sum()", g);
+            TraversalScriptHelper.compute("g.withSack(0.0f).V().outE.sack(sum, 'weight').inV.sack.sum()", g);
         }
 
         @Override
         public Traversal<Vertex, Float> get_g_withSackX0X_V_repeatXoutE_sackXsum_weightX_inVX_timesX2X_sack() {
-            GroovyTestHelper.compute("g.withSack(0.0f).V.repeat(__.outE.sack(sum, 'weight').inV).times(2).sack", g)
+            TraversalScriptHelper.compute("g.withSack(0.0f).V.repeat(__.outE.sack(sum, 'weight').inV).times(2).sack", g)
         }
 
         @Override
         public Traversal<Vertex, Map> get_g_withSackXmap__map_cloneX_V_out_out_sackXmap_a_nameX_sack() {
-            GroovyTestHelper.compute("g.withSack{[:]}{ it.clone() }.V.out().out().sack { m, v -> m['a'] = v.name; m }.sack()", g);
+            TraversalScriptHelper.compute("g.withSack{[:]}{ it.clone() }.V.out().out().sack { m, v -> m['a'] = v.name; m }.sack()", g);
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/97e46779/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySideEffectCapTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySideEffectCapTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySideEffectCapTest.groovy
index 24456fe..e45d711 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySideEffectCapTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySideEffectCapTest.groovy
@@ -18,13 +18,10 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect
 
-import org.apache.tinkerpop.gremlin.structure.T
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine
-import org.apache.tinkerpop.gremlin.process.UseEngine
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
 import org.apache.tinkerpop.gremlin.structure.Vertex
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__
+
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
@@ -33,12 +30,12 @@ public abstract class GroovySideEffectCapTest {
     public static class Traversals extends SideEffectCapTest {
         @Override
         public Traversal<Vertex, Map<String, Long>> get_g_V_hasXageX_groupCountXaX_byXnameX_out_capXaX() {
-            GroovyTestHelper.compute("g.V.has('age').groupCount('a').by('name').out.cap('a')", g)
+            TraversalScriptHelper.compute("g.V.has('age').groupCount('a').by('name').out.cap('a')", g)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Map<Object, Long>>> get_g_V_chooseXlabel_person__age_groupCountXaX__name_groupCountXbXX_capXa_bX() {
-            GroovyTestHelper.compute("""
+            TraversalScriptHelper.compute("""
             g.V.choose(__.has(T.label, 'person'),
                     __.age.groupCount('a'),
                     __.values("name").groupCount('b')).cap('a', 'b')


[39/50] [abbrv] incubator-tinkerpop git commit: greatly simplified the groovy test suite. its all generated via strings and thus, no need for STANDARD and COMPUTER versions of the tests.

Posted by dk...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/abd23f4e/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 06cf352..1238cca 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
@@ -19,17 +19,11 @@
 package org.apache.tinkerpop.gremlin.process.traversal.step.map
 
 import org.apache.tinkerpop.gremlin.process.UseEngine
-import org.apache.tinkerpop.gremlin.process.computer.ComputerTestHelper
+import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__
 import org.apache.tinkerpop.gremlin.structure.Edge
-import org.apache.tinkerpop.gremlin.structure.Order
 import org.apache.tinkerpop.gremlin.structure.Vertex
-import org.junit.Test
-
-import static __.values
-import static org.apache.tinkerpop.gremlin.process.traversal.Scope.local
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -38,321 +32,137 @@ import static org.apache.tinkerpop.gremlin.process.traversal.Scope.local
 public abstract class GroovySelectTest {
 
     @UseEngine(TraversalEngine.Type.STANDARD)
-    public static class StandardTraversals extends SelectTest {
+    public static class Traversals extends SelectTest {
 
         @Override
         public Traversal<Vertex, Map<String, Vertex>> get_g_VX1X_asXaX_outXknowsX_asXbX_select(final Object v1Id) {
-            g.V(v1Id).as('a').out('knows').as('b').select()
+            GroovyTestHelper.compute("g.V(v1Id).as('a').out('knows').as('b').select()", g, "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Map<String, String>> get_g_VX1X_asXaX_outXknowsX_asXbX_select_byXnameX(
                 final Object v1Id) {
-            g.V(v1Id).as('a').out('knows').as('b').select.by('name')
+            GroovyTestHelper.compute("g.V(v1Id).as('a').out('knows').as('b').select.by('name')", g, "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_asXaX_outXknowsX_asXbX_selectXaX(final Object v1Id) {
-            g.V(v1Id).as('a').out('knows').as('b').select('a')
+            GroovyTestHelper.compute("g.V(v1Id).as('a').out('knows').as('b').select('a')", g, "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, String> get_g_VX1X_asXaX_outXknowsX_asXbX_selectXaX_byXnameX(
                 final Object v1Id) {
-            g.V(v1Id).as('a').out('knows').as('b').select('a').by('name')
+            GroovyTestHelper.compute("g.V(v1Id).as('a').out('knows').as('b').select('a').by('name')", g, "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Map<String, String>> get_g_V_asXaX_out_asXbX_select_byXnameX() {
-            g.V.as('a').out.as('b').select.by('name')
+            GroovyTestHelper.compute("g.V.as('a').out.as('b').select.by('name')", g)
         }
 
         @Override
         public Traversal<Vertex, Map<String, String>> get_g_V_asXaX_out_aggregateXxX_asXbX_select_byXnameX() {
-            g.V.as('a').out.aggregate('x').as('b').select.by('name')
+            GroovyTestHelper.compute("g.V.as('a').out.aggregate('x').as('b').select.by('name')", g)
         }
 
         @Override
         public Traversal<Vertex, Map<String, String>> get_g_V_asXaX_name_order_asXbX_select_byXnameX_by_XitX() {
-            g.V().as('a').name.order().as('b').select.by('name').by
+            GroovyTestHelper.compute("g.V().as('a').name.order().as('b').select.by('name').by", g)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Object>> get_g_V_hasXname_gremlinX_inEXusesX_order_byXskill_incrX_asXaX_outV_asXbX_select_byXskillX_byXnameX() {
-            g.V.has('name', 'gremlin').inE('uses').order.by('skill', Order.incr).as('a').outV.as('b').select.by('skill').by('name')
+            GroovyTestHelper.compute("g.V.has('name', 'gremlin').inE('uses').order.by('skill', Order.incr).as('a').outV.as('b').select.by('skill').by('name')", g)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Object>> get_g_V_hasXname_isXmarkoXX_asXaX_select() {
-            g.V.has(values('name').is('marko')).as('a').select
+            GroovyTestHelper.compute("g.V.has(values('name').is('marko')).as('a').select", g)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Object>> get_g_V_label_groupCount_asXxX_select() {
-            g.V().label().groupCount().as('x').select()
+            GroovyTestHelper.compute("g.V().label().groupCount().as('x').select()", g)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Object>> get_g_V_hasLabelXpersonX_asXpersonX_localXbothE_label_groupCountX_asXrelationsX_select_byXnameX_by() {
-            g.V().hasLabel('person').as('person').local(__.bothE().label().groupCount()).as('relations').select().by('name').by()
+            GroovyTestHelper.compute("g.V().hasLabel('person').as('person').local(__.bothE().label().groupCount()).as('relations').select().by('name').by()", g)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Vertex>> get_g_V_chooseXoutE_count_isX0X__asXaX__asXbXX_select() {
-            g.V().choose(__.outE().count().is(0L), __.as('a'), __.as('b')).select();
+            GroovyTestHelper.compute("g.V().choose(__.outE().count().is(0L), __.as('a'), __.as('b')).select()", g)
         }
 
         @Override
         Traversal<Vertex, Map<String, List<Vertex>>> get_g_V_asXaX_outXcreatedX_asXaX_select() {
-            g.V.as('a').out('created').as('a').select
+            GroovyTestHelper.compute("g.V.as('a').out('created').as('a').select", g)
         }
 //
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_asXhereX_out_selectXhereX(final Object v1Id) {
-            g.V(v1Id).as('here').out.select('here')
+            GroovyTestHelper.compute("g.V(v1Id).as('here').out.select('here')", g, "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX4X_out_asXhereX_hasXlang_javaX_selectXhereX(final Object v4Id) {
-            g.V(v4Id).out.as('here').has('lang', 'java').select('here')
+            GroovyTestHelper.compute("g.V(v4Id).out.as('here').has('lang', 'java').select('here')", g, "v4Id", v4Id)
         }
 
         @Override
         public Traversal<Vertex, String> get_g_VX4X_out_asXhereX_hasXlang_javaX_selectXhereX_name(
                 final Object v4Id) {
-            g.V(v4Id).out.as('here').has('lang', 'java').select('here').name
+            GroovyTestHelper.compute("g.V(v4Id).out.as('here').has('lang', 'java').select('here').name", g, "v4Id", v4Id)
         }
 
         @Override
         public Traversal<Vertex, Edge> get_g_VX1X_outE_asXhereX_inV_hasXname_vadasX_selectXhereX(final Object v1Id) {
-            g.V(v1Id).outE.as('here').inV.has('name', 'vadas').select('here')
+            GroovyTestHelper.compute("g.V(v1Id).outE.as('here').inV.has('name', 'vadas').select('here')", g, "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Edge> get_g_VX1X_outEXknowsX_hasXweight_1X_asXhereX_inV_hasXname_joshX_selectXhereX(
                 final Object v1Id) {
-            g.V(v1Id).outE('knows').has('weight', 1.0d).as('here').inV.has('name', 'josh').select('here')
+            GroovyTestHelper.compute("g.V(v1Id).outE('knows').has('weight', 1.0d).as('here').inV.has('name', 'josh').select('here')", g, "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Edge> get_g_VX1X_outEXknowsX_asXhereX_hasXweight_1X_inV_hasXname_joshX_selectXhereX(
                 final Object v1Id) {
-            g.V(v1Id).outE('knows').as('here').has('weight', 1.0d).inV.has('name', 'josh').select('here')
+            GroovyTestHelper.compute("g.V(v1Id).outE('knows').as('here').has('weight', 1.0d).inV.has('name', 'josh').select('here')", g, "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Edge> get_g_VX1X_outEXknowsX_asXhereX_hasXweight_1X_asXfakeX_inV_hasXname_joshX_selectXhereX(
                 final Object v1Id) {
-            g.V(v1Id).outE("knows").as('here').has('weight', 1.0d).as('fake').inV.has("name", 'josh').select('here')
+            GroovyTestHelper.compute("g.V(v1Id).outE('knows').as('here').has('weight', 1.0d).as('fake').inV.has('name', 'josh').select('here')", g, "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_asXhereXout_name_selectXhereX() {
-            g.V().as("here").out.name.select("here");
-        }
-
-
-        @Override
-        public Traversal<Vertex, Map<String, Long>> get_g_V_outXcreatedX_unionXasXprojectX_inXcreatedX_hasXname_markoX_selectXprojectX__asXprojectX_inXcreatedX_inXknowsX_hasXname_markoX_selectXprojectXX_groupCount_byXnameX() {
-            g.V.out('created')
-                    .union(__.as('project').in('created').has('name', 'marko').select('project'),
-                    __.as('project').in('created').in('knows').has('name', 'marko').select('project')).groupCount().by('name');
-        }
-
-        @Override
-        public Traversal<Vertex, Map<String, Object>> get_g_V_asXaX_hasXname_markoX_asXbX_asXcX_select_by_byXnameX_byXageX() {
-            g.V.as('a').has('name', 'marko').as('b').as('c').select().by().by('name').by('age')
-        }
-
-        @Override
-        public Traversal<Vertex, Map<String, Object>> get_g_V_hasLabelXsoftwareX_asXnameX_asXlanguageX_asXcreatorsX_select_byXnameX_byXlangX_byXinXcreatedX_valuesXnameX_fold_orderXlocalXX() {
-            g.V.hasLabel('software').as('name').as('language').as('creators').select().by('name').by('lang').
-                    by(__.in('created').values('name').fold().order(local))
-        }
-    }
-
-    @UseEngine(TraversalEngine.Type.COMPUTER)
-    public static class ComputerTraversals extends SelectTest {
-
-        @Override
-        public Traversal<Vertex, Map<String, Vertex>> get_g_VX1X_asXaX_outXknowsX_asXbX_select(final Object v1Id) {
-            ComputerTestHelper.compute("g.V(v1Id).as('a').out('knows').as('b').select()", g, "v1Id", v1Id);
-        }
-
-        @Override
-        @Test
-        @org.junit.Ignore("Traversal not supported by ComputerTraversalEngine.computer")
-        public void g_VX1X_asXaX_outXknowsX_asXbX_select_byXnameX() {
-        }
-
-        @Override
-        public Traversal<Vertex, Vertex> get_g_VX1X_asXaX_outXknowsX_asXbX_selectXaX(final Object v1Id) {
-            ComputerTestHelper.compute("g.V(v1Id).as('a').out('knows').as('b').select('a')", g, "v1Id", v1Id);
-        }
-
-        @Override
-        @Test
-        @org.junit.Ignore("Traversal not supported by ComputerTraversalEngine.computer")
-        public void g_VX1X_asXaX_outXknowsX_asXbX_selectXaX_byXnameX() {
-        }
-
-        @Override
-        @Test
-        @org.junit.Ignore("Traversal not supported by ComputerTraversalEngine.computer")
-        public void g_V_asXaX_out_asXbX_select_byXnameX() {
-        }
-
-        @Override
-        @Test
-        @org.junit.Ignore("Traversal not supported by ComputerTraversalEngine.computer")
-        public void g_V_asXaX_name_order_asXbX_select_byXnameX_byXitX() {
-        }
-
-        @Override
-        @Test
-        @org.junit.Ignore("Traversal not supported by ComputerTraversalEngine.computer")
-        public void g_V_hasXname_gremlinX_inEXusesX_order_byXskill_incrX_asXaX_outV_asXbX_select_byXskillX_byXnameX() {
-        }
-
-        @Override
-        public Traversal<Vertex, Map<String, Object>> get_g_V_hasXname_isXmarkoXX_asXaX_select() {
-            ComputerTestHelper.compute("g.V.has(values('name').is('marko')).as('a').select", g)
-        }
-
-        @Override
-        @Test
-        @org.junit.Ignore("Traversal not supported by ComputerTraversalEngine.computer")
-        public void g_V_label_groupCount_asXxX_select() {
-        }
-
-        @Override
-        @Test
-        @org.junit.Ignore("Traversal not supported by ComputerTraversalEngine.computer")
-        void g_V_hasLabelXpersonX_asXpersonX_localXbothE_label_groupCountX_asXrelationsX_select_byXnameX_by() {
-        }
-
-        @Override
-        Traversal<Vertex, Map<String, String>> get_g_VX1X_asXaX_outXknowsX_asXbX_select_byXnameX(Object v1Id) {
-            // override with nothing until the test itself is supported
-            return null
-        }
-
-        @Override
-        Traversal<Vertex, String> get_g_VX1X_asXaX_outXknowsX_asXbX_selectXaX_byXnameX(Object v1Id) {
-            // override with nothing until the test itself is supported
-            return null
-        }
-
-        @Override
-        Traversal<Vertex, Map<String, String>> get_g_V_asXaX_out_asXbX_select_byXnameX() {
-            // override with nothing until the test itself is supported
-            return null
+            GroovyTestHelper.compute("g.V().as('here').out.name.select('here')", g)
         }
 
-        @Override
-        Traversal<Vertex, Map<String, String>> get_g_V_asXaX_out_aggregateXxX_asXbX_select_byXnameX() {
-            // override with nothing until the test itself is supported
-            return null
-        }
-
-        @Override
-        Traversal<Vertex, Map<String, String>> get_g_V_asXaX_name_order_asXbX_select_byXnameX_by_XitX() {
-            // override with nothing until the test itself is supported
-            return null
-        }
-
-        @Override
-        Traversal<Vertex, Map<String, Object>> get_g_V_hasXname_gremlinX_inEXusesX_order_byXskill_incrX_asXaX_outV_asXbX_select_byXskillX_byXnameX() {
-            // override with nothing until the test itself is supported
-            return null
-        }
-
-        @Override
-        Traversal<Vertex, Map<String, Object>> get_g_V_label_groupCount_asXxX_select() {
-            // override with nothing until the test itself is supported
-            return null
-        }
-
-        @Override
-        Traversal<Vertex, Map<String, Object>> get_g_V_hasLabelXpersonX_asXpersonX_localXbothE_label_groupCountX_asXrelationsX_select_byXnameX_by() {
-            // override with nothing until the test itself is supported
-            return null
-        }
-
-        @Override
-        public Traversal<Vertex, Map<String, Vertex>> get_g_V_chooseXoutE_count_isX0X__asXaX__asXbXX_select() {
-            ComputerTestHelper.compute("g.V.choose(__.outE.count.is(0L), __.as('a'), __.as('b')).select()", g)
-        }
-
-        @Override
-        public Traversal<Vertex, Map<String, List<Vertex>>> get_g_V_asXaX_outXcreatedX_asXaX_select() {
-            ComputerTestHelper.compute("g.V.as('a').out('created').as('a').select", g);
-        }
-
-        //
-
-        @Override
-        public Traversal<Vertex, Vertex> get_g_VX1X_asXhereX_out_selectXhereX(final Object v1Id) {
-            ComputerTestHelper.compute("g.V(v1Id).as('here').out.select('here')", g, "v1Id", v1Id);
-        }
-
-        @Override
-        public Traversal<Vertex, Vertex> get_g_VX4X_out_asXhereX_hasXlang_javaX_selectXhereX(final Object v4Id) {
-            ComputerTestHelper.compute("g.V(v4Id).out.as('here').has('lang', 'java').select('here')", g, "v4Id", v4Id);
-        }
-
-        @Override
-        public Traversal<Vertex, String> get_g_VX4X_out_asXhereX_hasXlang_javaX_selectXhereX_name(
-                final Object v4Id) {
-            ComputerTestHelper.compute("g.V(v4Id).out.as('here').has('lang', 'java').select('here').name", g, "v4Id", v4Id);
-        }
-
-        @Override
-        public Traversal<Vertex, Edge> get_g_VX1X_outE_asXhereX_inV_hasXname_vadasX_selectXhereX(final Object v1Id) {
-            ComputerTestHelper.compute("g.V(v1Id).outE.as('here').inV.has('name', 'vadas').select('here')", g, "v1Id", v1Id);
-        }
-
-        @Override
-        public Traversal<Vertex, Edge> get_g_VX1X_outEXknowsX_hasXweight_1X_asXhereX_inV_hasXname_joshX_selectXhereX(
-                final Object v1Id) {
-            ComputerTestHelper.compute("g.V(v1Id).outE('knows').has('weight', 1.0d).as('here').inV.has('name', 'josh').select('here')", g, "v1Id", v1Id);
-        }
-
-        @Override
-        public Traversal<Vertex, Edge> get_g_VX1X_outEXknowsX_asXhereX_hasXweight_1X_inV_hasXname_joshX_selectXhereX(
-                final Object v1Id) {
-            ComputerTestHelper.compute("g.V(v1Id).outE('knows').as('here').has('weight', 1.0d).inV.has('name','josh').select('here')", g, "v1Id", v1Id);
-        }
-
-        @Override
-        public Traversal<Vertex, Edge> get_g_VX1X_outEXknowsX_asXhereX_hasXweight_1X_asXfakeX_inV_hasXname_joshX_selectXhereX(
-                final Object v1Id) {
-            ComputerTestHelper.compute("g.V(v1Id).outE('knows').as('here').has('weight', 1.0d).as('fake').inV.has('name','josh').select('here')", g, "v1Id", v1Id);
-        }
-
-        @Override
-        public Traversal<Vertex, Vertex> get_g_V_asXhereXout_name_selectXhereX() {
-            ComputerTestHelper.compute("g.V().as('here').out.name.select('here')", g);
-        }
 
         @Override
         public Traversal<Vertex, Map<String, Long>> get_g_V_outXcreatedX_unionXasXprojectX_inXcreatedX_hasXname_markoX_selectXprojectX__asXprojectX_inXcreatedX_inXknowsX_hasXname_markoX_selectXprojectXX_groupCount_byXnameX() {
-            ComputerTestHelper.compute("""
-            g.V.out('created')
+            GroovyTestHelper.compute("""g.V.out('created')
                     .union(__.as('project').in('created').has('name', 'marko').select('project'),
-                    __.as('project').in('created').in('knows').has('name', 'marko').select('project')).groupCount().by('name');
-            """, g)
+                    __.as('project').in('created').in('knows').has('name', 'marko').select('project')).groupCount().by('name')""", g)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Object>> get_g_V_asXaX_hasXname_markoX_asXbX_asXcX_select_by_byXnameX_byXageX() {
-            ComputerTestHelper.compute("g.V.as('a').has('name', 'marko').as('b').as('c').select().by().by('name').by('age')", g)
+            GroovyTestHelper.compute("g.V.as('a').has('name', 'marko').as('b').as('c').select().by().by('name').by('age')", g)
         }
 
         @Override
-        @org.junit.Ignore("Traversal not supported by ComputerTraversalEngine.computer")
         public Traversal<Vertex, Map<String, Object>> get_g_V_hasLabelXsoftwareX_asXnameX_asXlanguageX_asXcreatorsX_select_byXnameX_byXlangX_byXinXcreatedX_valuesXnameX_fold_orderXlocalXX() {
+            GroovyTestHelper.compute("""g.V.hasLabel('software').as('name').as('language').as('creators').select().by('name').by('lang').
+                    by(__.in('created').values('name').fold().order(local))""", g)
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/abd23f4e/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovySumTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovySumTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovySumTest.groovy
index 9c72f6c..27fd903 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovySumTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovySumTest.groovy
@@ -18,46 +18,25 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.map
 
-import org.apache.tinkerpop.gremlin.process.computer.ComputerTestHelper
-import org.apache.tinkerpop.gremlin.process.traversal.Scope
+import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine
-import org.apache.tinkerpop.gremlin.process.UseEngine
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
-import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.bothE
-import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.sum
-
 /**
  * @author Daniel Kuppitz (http://gremlin.guru)
  */
 public abstract class GroovySumTest {
 
-    @UseEngine(TraversalEngine.Type.STANDARD)
-    public static class StandardTraversals extends SumTest {
-
-        @Override
-        public Traversal<Vertex, Double> get_g_V_valuesXageX_sum() {
-            g.V().values('age').sum()
-        }
-
-        @Override
-        public Traversal<Vertex, Map<String, Number>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_valuesXweightX_foldX_byXsumXlocalXX() {
-            g.V().hasLabel('software').group().by('name').by(bothE().values('weight').fold()).by(sum(Scope.local))
-        }
-    }
-
-    @UseEngine(TraversalEngine.Type.COMPUTER)
-    public static class ComputerTraversals extends SumTest {
+    public static class Traversals extends SumTest {
 
         @Override
         public Traversal<Vertex, Double> get_g_V_valuesXageX_sum() {
-            ComputerTestHelper.compute("g.V.age.sum", g)
+            GroovyTestHelper.compute("g.V.age.sum", g)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Number>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_valuesXweightX_foldX_byXsumXlocalXX() {
-            ComputerTestHelper.compute("g.V().hasLabel('software').group().by('name').by(bothE().values('weight').fold()).by(sum(Scope.local))", g)
+            GroovyTestHelper.compute("g.V().hasLabel('software').group().by('name').by(bothE().values('weight').fold()).by(sum(local))", g)
         }
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/abd23f4e/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyUnfoldTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyUnfoldTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyUnfoldTest.groovy
index 9901805..06d3504 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyUnfoldTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyUnfoldTest.groovy
@@ -18,11 +18,8 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.map
 
-import org.apache.tinkerpop.gremlin.process.computer.ComputerTestHelper
+import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine
-import org.apache.tinkerpop.gremlin.process.UseEngine
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__
 import org.apache.tinkerpop.gremlin.structure.Edge
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
@@ -31,31 +28,16 @@ import org.apache.tinkerpop.gremlin.structure.Vertex
  */
 public abstract class GroovyUnfoldTest {
 
-    @UseEngine(TraversalEngine.Type.STANDARD)
-    public static class StandardTraversals extends UnfoldTest {
+    public static class Traversals extends UnfoldTest {
 
         @Override
         public Traversal<Vertex, Edge> get_g_V_localXoutE_foldX_unfold() {
-            g.V.local(__.outE.fold).unfold
+            GroovyTestHelper.compute("g.V.local(__.outE.fold).unfold", g)
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_valueMap_unfold_mapXkeyX() {
-            g.V.valueMap.unfold.map { it.key }
-        }
-    }
-
-    @UseEngine(TraversalEngine.Type.COMPUTER)
-    public static class ComputerTraversals extends UnfoldTest {
-
-        @Override
-        public Traversal<Vertex, Edge> get_g_V_localXoutE_foldX_unfold() {
-            ComputerTestHelper.compute("g.V.local(__.outE.fold).unfold", g)
-        }
-
-        @Override
-        public Traversal<Vertex, String> get_g_V_valueMap_unfold_mapXkeyX() {
-            ComputerTestHelper.compute("g.V.valueMap.unfold.map { it.key }", g)
+            GroovyTestHelper.compute("g.V.valueMap.unfold.map { it.key }", g)
         }
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/abd23f4e/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyValueMapTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyValueMapTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyValueMapTest.groovy
index 3b82a2e..96ab120 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyValueMapTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyValueMapTest.groovy
@@ -18,10 +18,8 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.map
 
-import org.apache.tinkerpop.gremlin.process.UseEngine
-import org.apache.tinkerpop.gremlin.process.computer.ComputerTestHelper
+import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
 /**
@@ -29,39 +27,20 @@ import org.apache.tinkerpop.gremlin.structure.Vertex
  */
 public abstract class GroovyValueMapTest {
 
-    @UseEngine(TraversalEngine.Type.STANDARD)
-    public static class StandardTraversals extends ValueMapTest {
+    public static class Traversals extends ValueMapTest {
         @Override
         public Traversal<Vertex, Map<String, List>> get_g_V_valueMap() {
-            g.V.valueMap
+            GroovyTestHelper.compute("g.V.valueMap", g);
         }
 
         @Override
         public Traversal<Vertex, Map<String, List>> get_g_V_valueMapXname_ageX() {
-            g.V.valueMap('name', 'age')
+            GroovyTestHelper.compute("g.V.valueMap('name', 'age')", g);
         }
 
         @Override
         public Traversal<Vertex, Map<String, List<String>>> get_g_VX1X_outXcreatedX_valueMap(final Object v1Id) {
-            g.V(v1Id).out('created').valueMap
-        }
-    }
-
-    @UseEngine(TraversalEngine.Type.COMPUTER)
-    public static class ComputerTraversals extends ValueMapTest {
-        @Override
-        public Traversal<Vertex, Map<String, List>> get_g_V_valueMap() {
-            ComputerTestHelper.compute("g.V.valueMap", g);
-        }
-
-        @Override
-        public Traversal<Vertex, Map<String, List>> get_g_V_valueMapXname_ageX() {
-            ComputerTestHelper.compute("g.V.valueMap('name', 'age')", g);
-        }
-
-        @Override
-        public Traversal<Vertex, Map<String, List<String>>> get_g_VX1X_outXcreatedX_valueMap(final Object v1Id) {
-            ComputerTestHelper.compute("g.V(v1Id).out('created').valueMap", g, "v1Id", v1Id);
+            GroovyTestHelper.compute("g.V(v1Id).out('created').valueMap", g, "v1Id", v1Id);
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/abd23f4e/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 b5fd13e..91b736e 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
@@ -18,287 +18,146 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.map
 
-import org.apache.tinkerpop.gremlin.process.UseEngine
-import org.apache.tinkerpop.gremlin.process.computer.ComputerTestHelper
+import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine
-import org.apache.tinkerpop.gremlin.structure.Direction
 import org.apache.tinkerpop.gremlin.structure.Edge
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
-import static org.apache.tinkerpop.gremlin.structure.P.lt
-
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
 public abstract class GroovyVertexTest {
 
-    @UseEngine(TraversalEngine.Type.STANDARD)
-    public static class StandardTraversals extends VertexTest {
-
-        @Override
-        public Traversal<Vertex, Vertex> get_g_V() {
-            g.V
-        }
-
-        @Override
-        public Traversal<Vertex, Vertex> get_g_VX1X_out(final Object v1Id) {
-            g.V(v1Id).out
-        }
-
-        @Override
-        public Traversal<Vertex, Vertex> get_g_VX2X_in(final Object v2Id) {
-            g.V(v2Id).in
-        }
-
-        @Override
-        public Traversal<Vertex, Vertex> get_g_VX4X_both(final Object v4Id) {
-            g.V(v4Id).both
-        }
-
-
-        @Override
-        public Traversal<Edge, Edge> get_g_E() {
-            g.E
-        }
-
-        @Override
-        public Traversal<Edge, Edge> get_g_EX11X(final Object e11Id) {
-            g.E(e11Id);
-        }
-
-        @Override
-        public Traversal<Vertex, Edge> get_g_VX1X_outE(final Object v1Id) {
-            g.V(v1Id).outE
-        }
-
-        @Override
-        public Traversal<Vertex, Edge> get_g_VX2X_inE(final Object v2Id) {
-            g.V(v2Id).inE
-        }
-
-        @Override
-        public Traversal<Vertex, Edge> get_g_VX4X_bothE(final Object v4Id) {
-            g.V(v4Id).bothE
-        }
-
-        @Override
-        public Traversal<Vertex, Edge> get_g_VX4X_bothEXcreatedX(final Object v4Id) {
-            g.V(v4Id).bothE('created')
-        }
-
-        @Override
-        public Traversal<Vertex, Vertex> get_g_VX1X_outE_inV(final Object v1Id) {
-            g.V(v1Id).outE.inV
-        }
-
-        @Override
-        public Traversal<Vertex, Vertex> get_g_VX2X_inE_outV(final Object v2Id) {
-            g.V(v2Id).inE.outV
-        }
-
-        @Override
-        public Traversal<Vertex, Vertex> get_g_V_outE_hasXweight_1X_outV() {
-            g.V.outE.has('weight', 1.0d).outV
-        }
-
-        @Override
-        public Traversal<Vertex, String> get_g_V_out_outE_inV_inE_inV_both_name() {
-            g.V.out.outE.inV.inE.inV.both.name
-        }
-
-        @Override
-        public Traversal<Vertex, String> get_g_VX1X_outEXknowsX_bothV_name(final Object v1Id) {
-            g.V(v1Id).outE('knows').bothV.name
-        }
-
-        @Override
-        public Traversal<Vertex, Vertex> get_g_VX1X_outXknowsX(final Object v1Id) {
-            g.V(v1Id).out('knows')
-        }
-
-        @Override
-        public Traversal<Vertex, Vertex> get_g_VX1X_outXknows_createdX(final Object v1Id) {
-            g.V(v1Id).out('knows', 'created')
-        }
-
-        @Override
-        public Traversal<Vertex, Vertex> get_g_VX1X_outEXknowsX_inV(final Object v1Id) {
-            g.V(v1Id).outE('knows').inV()
-        }
-
-        @Override
-        public Traversal<Vertex, Vertex> get_g_VX1X_outEXknows_createdX_inV(final Object v1Id) {
-            g.V(v1Id).outE('knows', 'created').inV
-        }
-
-        @Override
-        public Traversal<Vertex, Vertex> get_g_V_out_out() {
-            g.V().out().out()
-        }
-
-        @Override
-        public Traversal<Vertex, Vertex> get_g_VX1X_out_out_out(final Object v1Id) {
-            g.V(v1Id).out.out.out
-        }
-
-        @Override
-        public Traversal<Vertex, String> get_g_VX1X_out_name(final Object v1Id) {
-            g.V(v1Id).out.name
-        }
-
-        @Override
-        public Traversal<Vertex, Vertex> get_g_VX1X_outE_otherV(final Object v1Id) {
-            g.V(v1Id).outE.otherV
-        }
-
-        @Override
-        public Traversal<Vertex, Vertex> get_g_VX4X_bothE_otherV(final Object v4Id) {
-            g.V(v4Id).bothE.otherV
-        }
-
-        @Override
-        public Traversal<Vertex, Vertex> get_g_VX4X_bothE_hasXweight_lt_1X_otherV(final Object v4Id) {
-            g.V(v4Id).bothE.has('weight', lt(1.0d)).otherV
-        }
-
-        @Override
-        public Traversal<Vertex, Vertex> get_g_VX1X_to_XOUT_knowsX(final Object v1Id) {
-            g.V(v1Id).to(Direction.OUT, 'knows');
-        }
-    }
-
-    @UseEngine(TraversalEngine.Type.COMPUTER)
-    public static class ComputerTraversals extends VertexTest {
+    public static class Traversals extends VertexTest {
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V() {
-            ComputerTestHelper.compute("g.V", g);
+            GroovyTestHelper.compute("g.V", g);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_out(final Object v1Id) {
-            ComputerTestHelper.compute("g.V(v1Id).out", g, "v1Id", v1Id);
+            GroovyTestHelper.compute("g.V(v1Id).out", g, "v1Id", v1Id);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX2X_in(final Object v2Id) {
-            ComputerTestHelper.compute("g.V(v2Id).in", g, "v2Id", v2Id);
+            GroovyTestHelper.compute("g.V(v2Id).in", g, "v2Id", v2Id);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX4X_both(final Object v4Id) {
-            ComputerTestHelper.compute("g.V(v4Id).both", g, "v4Id", v4Id);
+            GroovyTestHelper.compute("g.V(v4Id).both", g, "v4Id", v4Id);
         }
 
         @Override
         public Traversal<Edge, Edge> get_g_E() {
-            ComputerTestHelper.compute("g.E", g);
+            GroovyTestHelper.compute("g.E", g);
         }
 
         @Override
         public Traversal<Edge, Edge> get_g_EX11X(final Object e11Id) {
-            ComputerTestHelper.compute("g.E(e11Id)", g, "e11Id", e11Id)
+            GroovyTestHelper.compute("g.E(e11Id)", g, "e11Id", e11Id)
         }
 
         @Override
         public Traversal<Vertex, Edge> get_g_VX1X_outE(final Object v1Id) {
-            ComputerTestHelper.compute("g.V(v1Id).outE", g, "v1Id", v1Id);
+            GroovyTestHelper.compute("g.V(v1Id).outE", g, "v1Id", v1Id);
         }
 
         @Override
         public Traversal<Vertex, Edge> get_g_VX2X_inE(final Object v2Id) {
-            ComputerTestHelper.compute("g.V(v2Id).inE", g, "v2Id", v2Id);
+            GroovyTestHelper.compute("g.V(v2Id).inE", g, "v2Id", v2Id);
         }
 
         @Override
         public Traversal<Vertex, Edge> get_g_VX4X_bothE(final Object v4Id) {
-            ComputerTestHelper.compute("g.V(v4Id).bothE", g, "v4Id", v4Id);
+            GroovyTestHelper.compute("g.V(v4Id).bothE", g, "v4Id", v4Id);
         }
 
         @Override
         public Traversal<Vertex, Edge> get_g_VX4X_bothEXcreatedX(final Object v4Id) {
-            ComputerTestHelper.compute("g.V(v4Id).bothE('created')", g, "v4Id", v4Id);
+            GroovyTestHelper.compute("g.V(v4Id).bothE('created')", g, "v4Id", v4Id);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_outE_inV(final Object v1Id) {
-            ComputerTestHelper.compute("g.V(v1Id).outE.inV", g, "v1Id", v1Id);
+            GroovyTestHelper.compute("g.V(v1Id).outE.inV", g, "v1Id", v1Id);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX2X_inE_outV(final Object v2Id) {
-            ComputerTestHelper.compute("g.V(v2Id).inE.outV", g, "v2Id", v2Id);
+            GroovyTestHelper.compute("g.V(v2Id).inE.outV", g, "v2Id", v2Id);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_outE_hasXweight_1X_outV() {
-            ComputerTestHelper.compute("g.V.outE.has('weight', 1.0d).outV", g);
+            GroovyTestHelper.compute("g.V.outE.has('weight', 1.0d).outV", g);
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_out_outE_inV_inE_inV_both_name() {
-            ComputerTestHelper.compute("g.V.out.outE.inV.inE.inV.both.name", g);
+            GroovyTestHelper.compute("g.V.out.outE.inV.inE.inV.both.name", g);
         }
 
         @Override
         public Traversal<Vertex, String> get_g_VX1X_outEXknowsX_bothV_name(final Object v1Id) {
-            ComputerTestHelper.compute("g.V(v1Id).outE('knows').bothV.name", g, "v1Id", v1Id);
+            GroovyTestHelper.compute("g.V(v1Id).outE('knows').bothV.name", g, "v1Id", v1Id);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_outXknowsX(final Object v1Id) {
-            ComputerTestHelper.compute("g.V(v1Id).out('knows')", g, "v1Id", v1Id);
+            GroovyTestHelper.compute("g.V(v1Id).out('knows')", g, "v1Id", v1Id);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_outXknows_createdX(final Object v1Id) {
-            ComputerTestHelper.compute("g.V(v1Id).out('knows', 'created')", g, "v1Id", v1Id);
+            GroovyTestHelper.compute("g.V(v1Id).out('knows', 'created')", g, "v1Id", v1Id);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_outEXknowsX_inV(final Object v1Id) {
-            ComputerTestHelper.compute("g.V(v1Id).outE('knows').inV()", g, "v1Id", v1Id);
+            GroovyTestHelper.compute("g.V(v1Id).outE('knows').inV()", g, "v1Id", v1Id);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_outEXknows_createdX_inV(final Object v1Id) {
-            ComputerTestHelper.compute("g.V(v1Id).outE('knows', 'created').inV", g, "v1Id", v1Id);
+            GroovyTestHelper.compute("g.V(v1Id).outE('knows', 'created').inV", g, "v1Id", v1Id);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_out_out() {
-            ComputerTestHelper.compute("g.V.out().out()", g);
+            GroovyTestHelper.compute("g.V.out().out()", g);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_out_out_out(final Object v1Id) {
-            ComputerTestHelper.compute("g.V(v1Id).out.out.out", g, "v1Id", v1Id);
+            GroovyTestHelper.compute("g.V(v1Id).out.out.out", g, "v1Id", v1Id);
         }
 
         @Override
         public Traversal<Vertex, String> get_g_VX1X_out_name(final Object v1Id) {
-            ComputerTestHelper.compute("g.V(v1Id).out.name", g, "v1Id", v1Id);
+            GroovyTestHelper.compute("g.V(v1Id).out.name", g, "v1Id", v1Id);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_outE_otherV(final Object v1Id) {
-            ComputerTestHelper.compute("g.V(v1Id).outE.otherV", g, "v1Id", v1Id);
+            GroovyTestHelper.compute("g.V(v1Id).outE.otherV", g, "v1Id", v1Id);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX4X_bothE_otherV(final Object v4Id) {
-            ComputerTestHelper.compute("g.V(v4Id).bothE.otherV", g, "v4Id", v4Id);
+            GroovyTestHelper.compute("g.V(v4Id).bothE.otherV", g, "v4Id", v4Id);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX4X_bothE_hasXweight_lt_1X_otherV(final Object v4Id) {
-            ComputerTestHelper.compute("g.V(v4Id).bothE.has('weight', lt(1.0d)).otherV", g, "v4Id", v4Id);
+            GroovyTestHelper.compute("g.V(v4Id).bothE.has('weight', lt(1.0d)).otherV", g, "v4Id", v4Id);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_to_XOUT_knowsX(final Object v1Id) {
-            ComputerTestHelper.compute("g.V(v1Id).to(Direction.OUT, 'knows')", g, "v1Id", v1Id);
+            GroovyTestHelper.compute("g.V(v1Id).to(Direction.OUT, 'knows')", g, "v1Id", v1Id);
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/abd23f4e/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyAggregateTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyAggregateTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyAggregateTest.groovy
index e22d6af..76b7338 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyAggregateTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyAggregateTest.groovy
@@ -18,11 +18,9 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect
 
+import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Path
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.computer.ComputerTestHelper
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine
-import org.apache.tinkerpop.gremlin.process.UseEngine
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
 /**
@@ -30,41 +28,21 @@ import org.apache.tinkerpop.gremlin.structure.Vertex
  */
 public abstract class GroovyAggregateTest {
 
-    @UseEngine(TraversalEngine.Type.STANDARD)
-    public static class StandardTraversals extends AggregateTest {
+    public static class Traversals extends AggregateTest {
 
         @Override
         public Traversal<Vertex, List<String>> get_g_V_name_aggregateXxX_capXxX() {
-            g.V.name.aggregate('x').cap('x')
+            GroovyTestHelper.compute("g.V.name.aggregate('x').cap('x')", g)
         }
 
         @Override
         public Traversal<Vertex, List<String>> get_g_V_aggregateXxX_byXnameX_capXxX() {
-            g.V.aggregate('x').by('name').cap('x')
+            GroovyTestHelper.compute("g.V.aggregate('x').by('name').cap('x')", g)
         }
 
         @Override
         public Traversal<Vertex, Path> get_g_V_out_aggregateXaX_path() {
-            g.V.out.aggregate('a').path;
-        }
-    }
-
-    @UseEngine(TraversalEngine.Type.COMPUTER)
-    public static class ComputerTraversals extends AggregateTest {
-
-        @Override
-        public Traversal<Vertex, List<String>> get_g_V_name_aggregateXxX_capXxX() {
-            ComputerTestHelper.compute("g.V.name.aggregate('x').cap('x')", g)
-        }
-
-        @Override
-        public Traversal<Vertex, List<String>> get_g_V_aggregateXxX_byXnameX_capXxX() {
-            ComputerTestHelper.compute("g.V.aggregate('x').by('name').cap('x')", g)
-        }
-
-        @Override
-        public Traversal<Vertex, Path> get_g_V_out_aggregateXaX_path() {
-            ComputerTestHelper.compute("g.V.out.aggregate('a').path", g)
+            GroovyTestHelper.compute("g.V.out.aggregate('a').path", g)
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/abd23f4e/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyGroupCountTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyGroupCountTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyGroupCountTest.groovy
index cba9f10..ad5bec1 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyGroupCountTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyGroupCountTest.groovy
@@ -18,11 +18,8 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect
 
-import org.apache.tinkerpop.gremlin.process.computer.ComputerTestHelper
+import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine
-import org.apache.tinkerpop.gremlin.process.UseEngine
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
 /**
@@ -30,93 +27,46 @@ import org.apache.tinkerpop.gremlin.structure.Vertex
  */
 public abstract class GroovyGroupCountTest {
 
-    @UseEngine(TraversalEngine.Type.STANDARD)
-    public static class StandardTraversals extends GroupCountTest {
+    public static class Traversals extends GroupCountTest {
 
         @Override
         public Traversal<Vertex, Map<String, Long>> get_g_V_outXcreatedX_groupCount_byXnameX() {
-            g.V.out('created').groupCount.by('name')
+            GroovyTestHelper.compute("g.V.out('created').groupCount.by('name')", g)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Long>> get_g_V_outXcreatedX_groupCountXaX_byXnameX_capXaX() {
-            g.V.out('created').groupCount('a').by('name').cap('a')
+            GroovyTestHelper.compute("g.V.out('created').groupCount('a').by('name').cap('a')", g)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Long>> get_g_V_outXcreatedX_name_groupCount() {
-            g.V.out('created').name.groupCount
+            GroovyTestHelper.compute("g.V.out('created').name.groupCount", g)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Long>> get_g_V_outXcreatedX_name_groupCountXaX_capXaX() {
-            g.V.out('created').name.groupCount('a').cap('a')
+            GroovyTestHelper.compute("g.V.out('created').name.groupCount('a').cap('a')", g)
         }
 
         @Override
         public Traversal<Vertex, Map<Object, Long>> get_g_V_hasXnoX_groupCount() {
-            g.V.has('no').groupCount;
+            GroovyTestHelper.compute("g.V.has('no').groupCount", g)
         }
 
         @Override
         public Traversal<Vertex, Map<Object, Long>> get_g_V_hasXnoX_groupCountXaX_capXaX() {
-            g.V.has('no').groupCount('a').cap('a');
+            GroovyTestHelper.compute("g.V.has('no').groupCount('a').cap('a')", g)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Long>> get_g_V_repeatXout_groupCountXaX_byXnameXX_timesX2X_capXaX() {
-            g.V.repeat(__.out.groupCount('a').by('name')).times(2).cap('a')
+            GroovyTestHelper.compute("g.V.repeat(__.out.groupCount('a').by('name')).times(2).cap('a')", g)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Long>> get_g_V_unionXrepeatXoutX_timesX2X_groupCountXmX_byXlangXX__repeatXinX_timesX2X_groupCountXmX_byXnameXX_capXmX() {
-            g.V.union(
-                    __.repeat(__.out).times(2).groupCount('m').by('lang'),
-                    __.repeat(__.in).times(2).groupCount('m').by('name')).cap('m')
-        }
-    }
-
-    @UseEngine(TraversalEngine.Type.COMPUTER)
-    public static class ComputerTraversals extends GroupCountTest {
-
-        @Override
-        public Traversal<Vertex, Map<String, Long>> get_g_V_outXcreatedX_groupCount_byXnameX() {
-            ComputerTestHelper.compute("g.V.out('created').groupCount.by('name')", g)
-        }
-
-        @Override
-        public Traversal<Vertex, Map<String, Long>> get_g_V_outXcreatedX_groupCountXaX_byXnameX_capXaX() {
-            ComputerTestHelper.compute("g.V.out('created').groupCount('a').by('name').cap('a')", g)
-        }
-
-        @Override
-        public Traversal<Vertex, Map<String, Long>> get_g_V_outXcreatedX_name_groupCount() {
-            ComputerTestHelper.compute("g.V.out('created').name.groupCount", g)
-        }
-
-        @Override
-        public Traversal<Vertex, Map<String, Long>> get_g_V_outXcreatedX_name_groupCountXaX_capXaX() {
-            ComputerTestHelper.compute("g.V.out('created').name.groupCount('a').cap('a')", g)
-        }
-
-        @Override
-        public Traversal<Vertex, Map<Object, Long>> get_g_V_hasXnoX_groupCount() {
-            ComputerTestHelper.compute("g.V.has('no').groupCount", g)
-        }
-
-        @Override
-        public Traversal<Vertex, Map<Object, Long>> get_g_V_hasXnoX_groupCountXaX_capXaX() {
-            ComputerTestHelper.compute("g.V.has('no').groupCount('a').cap('a')", g)
-        }
-
-        @Override
-        public Traversal<Vertex, Map<String, Long>> get_g_V_repeatXout_groupCountXaX_byXnameXX_timesX2X_capXaX() {
-            ComputerTestHelper.compute("g.V.repeat(__.out.groupCount('a').by('name')).times(2).cap('a')", g)
-        }
-
-        @Override
-        public Traversal<Vertex, Map<String, Long>> get_g_V_unionXrepeatXoutX_timesX2X_groupCountXmX_byXlangXX__repeatXinX_timesX2X_groupCountXmX_byXnameXX_capXmX() {
-            ComputerTestHelper.compute("""
+            GroovyTestHelper.compute("""
             g.V.union(
                     __.repeat(__.out).times(2).groupCount('m').by('lang'),
                     __.repeat(__.in).times(2).groupCount('m').by('name')).cap('m')

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/abd23f4e/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyGroupTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyGroupTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyGroupTest.groovy
index 988ca17..52733de 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyGroupTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyGroupTest.groovy
@@ -18,12 +18,8 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect
 
-import org.apache.tinkerpop.gremlin.process.*
-import org.apache.tinkerpop.gremlin.process.computer.ComputerTestHelper
-import org.apache.tinkerpop.gremlin.process.traversal.Scope
+import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
 /**
@@ -31,71 +27,36 @@ import org.apache.tinkerpop.gremlin.structure.Vertex
  */
 public abstract class GroovyGroupTest {
 
-    @UseEngine(TraversalEngine.Type.STANDARD)
-    public static class StandardTraversals extends GroupTest {
+    public static class Traversals extends GroupTest {
 
         @Override
         public Traversal<Vertex, Map<String, Collection<Vertex>>> get_g_V_group_byXnameX() {
-            g.V.group.by('name')
+            GroovyTestHelper.compute("g.V.group.by('name')", g)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Collection<Vertex>>> get_g_V_groupXaX_byXnameX_capXaX() {
-            g.V.group('a').by('name').cap('a')
+            GroovyTestHelper.compute("g.V.group('a').by('name').cap('a')", g)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Collection<String>>> get_g_V_hasXlangX_groupXaX_byXlangX_byXnameX_out_capXaX() {
-            g.V.has('lang').group('a').by('lang').by('name').out.cap('a')
+            GroovyTestHelper.compute("g.V.has('lang').group('a').by('lang').by('name').out.cap('a')", g)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Long>> get_g_V_hasXlangX_group_byXlangX_byX1X_byXcountXlocalXX() {
-            g.V.has('lang').group.by('lang').by(__.inject(1)).by(__.count(Scope.local));
+            GroovyTestHelper.compute("g.V.has('lang').group.by('lang').by(__.inject(1)).by(__.count(Scope.local))", g)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Long>> get_g_V_repeatXout_groupXaX_byXnameX_by_byXcountXlocalXX_timesX2X_capXaX() {
-            g.V.repeat(__.out.group('a').by('name').by.by(__.count(Scope.local))).times(2).cap('a')
+            GroovyTestHelper.compute("g.V.repeat(__.out.group('a').by('name').by.by(__.count(Scope.local))).times(2).cap('a')", g)
         }
 
         @Override
         public Traversal<Vertex, Map<Long, Collection<String>>> get_g_V_group_byXoutE_countX_byXnameX() {
-            g.V.group.by(__.outE.count).by('name')
-        }
-    }
-
-    @UseEngine(TraversalEngine.Type.COMPUTER)
-    public static class ComputerTraversals extends GroupTest {
-
-        @Override
-        public Traversal<Vertex, Map<String, Collection<Vertex>>> get_g_V_group_byXnameX() {
-            ComputerTestHelper.compute("g.V.group.by('name')", g)
-        }
-
-        @Override
-        public Traversal<Vertex, Map<String, Collection<Vertex>>> get_g_V_groupXaX_byXnameX_capXaX() {
-            ComputerTestHelper.compute("g.V.group('a').by('name').cap('a')", g)
-        }
-
-        @Override
-        public Traversal<Vertex, Map<String, Collection<String>>> get_g_V_hasXlangX_groupXaX_byXlangX_byXnameX_out_capXaX() {
-            ComputerTestHelper.compute("g.V.has('lang').group('a').by('lang').by('name').out.cap('a')", g)
-        }
-
-        @Override
-        public Traversal<Vertex, Map<String, Long>> get_g_V_hasXlangX_group_byXlangX_byX1X_byXcountXlocalXX() {
-            ComputerTestHelper.compute("g.V.has('lang').group.by('lang').by(__.inject(1)).by(__.count(Scope.local))", g)
-        }
-
-        @Override
-        public Traversal<Vertex, Map<String, Long>> get_g_V_repeatXout_groupXaX_byXnameX_by_byXcountXlocalXX_timesX2X_capXaX() {
-            ComputerTestHelper.compute("g.V.repeat(__.out.group('a').by('name').by.by(__.count(Scope.local))).times(2).cap('a')", g)
-        }
-
-        @Override
-        public Traversal<Vertex, Map<Long, Collection<String>>> get_g_V_group_byXoutE_countX_byXnameX() {
-            ComputerTestHelper.compute("g.V.group.by(__.outE.count).by('name')", g)
+            GroovyTestHelper.compute("g.V.group.by(__.outE.count).by('name')", g)
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/abd23f4e/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyInjectTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyInjectTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyInjectTest.groovy
index e56f652..3d5dc99 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyInjectTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyInjectTest.groovy
@@ -20,18 +20,14 @@ package org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect
 
 import org.apache.tinkerpop.gremlin.process.traversal.Path
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine
-import org.apache.tinkerpop.gremlin.process.UseEngine
 import org.apache.tinkerpop.gremlin.structure.Vertex
-import org.junit.Test
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
 public abstract class GroovyInjectTest {
 
-    @UseEngine(TraversalEngine.Type.STANDARD)
-    public static class StandardTraversals extends InjectTest {
+    public static class Traversals extends InjectTest {
         @Override
         public Traversal<Vertex, String> get_g_VX1X_out_injectXv2X_name(final Object v1Id, final Object v2Id) {
             g.V(v1Id).out.inject(g.V(v2Id).next()).name
@@ -42,33 +38,4 @@ public abstract class GroovyInjectTest {
             g.V(v1Id).out().name.inject('daniel').as('a').map { it.length() }.path
         }
     }
-
-    @UseEngine(TraversalEngine.Type.COMPUTER)
-    public static class ComputerTraversals extends InjectTest {
-        @Override
-        @Test
-        @org.junit.Ignore("Traversal not supported by ComputerTraversalEngine.computer")
-        void g_VX1X_out_injectXv2X_name() {
-            super.g_VX1X_out_injectXv2X_name()
-        }
-
-        @Override
-        @Test
-        @org.junit.Ignore("Traversal not supported by ComputerTraversalEngine.computer")
-        void g_VX1X_out_name_injectXdanielX_asXaX_mapXlengthX_path() {
-            super.g_VX1X_out_name_injectXdanielX_asXaX_mapXlengthX_path()
-        }
-
-        @Override
-        Traversal<Vertex, String> get_g_VX1X_out_injectXv2X_name(Object v1Id, Object v2Id) {
-            // override with nothing until the test itself is supported
-            return null
-        }
-
-        @Override
-        Traversal<Vertex, Path> get_g_VX1X_out_name_injectXdanielX_asXaX_mapXlengthX_path(Object v1Id) {
-            // override with nothing until the test itself is supported
-            return null
-        }
-    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/abd23f4e/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyProfileTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyProfileTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyProfileTest.groovy
index 41ca348..886cacc 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyProfileTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyProfileTest.groovy
@@ -18,75 +18,37 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect
 
+import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.computer.ComputerTestHelper
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine
-import org.apache.tinkerpop.gremlin.process.UseEngine
 import org.apache.tinkerpop.gremlin.process.traversal.util.StandardTraversalMetrics
 import org.apache.tinkerpop.gremlin.structure.Vertex
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
 public abstract class GroovyProfileTest {
 
-    @UseEngine(TraversalEngine.Type.STANDARD)
-    public static class StandardTraversals extends ProfileTest {
-
-        @Override
-        Traversal<Vertex, StandardTraversalMetrics> get_g_V_out_out_profile() {
-            g.V.out.out.profile();
-        }
-
-        @Override
-        public Traversal<Vertex, StandardTraversalMetrics> get_g_V_repeat_both_profile() {
-            g.V.repeat(__.both()).times(3).profile();
-        }
-
-        @Override
-        Traversal<Vertex, StandardTraversalMetrics> get_g_V_hasXinXcreatedX_count_isX1XX_valuesXnameX_profile() {
-            g.V().has(__.in("created").count().is(1l)).values("name").profile();
-        }
-
-        @org.junit.Ignore
-        @Override
-        void g_V_sleep_sleep_profile() {
-        }
-
-        @Override
-        Traversal<Vertex, StandardTraversalMetrics> get_g_V_sleep_sleep_profile() {
-            return null
-        }
-    }
-
-    @UseEngine(TraversalEngine.Type.COMPUTER)
-    public static class ComputerTraversals extends ProfileTest {
+    public static class Traversals extends ProfileTest {
 
         @Override
         public Traversal<Vertex, StandardTraversalMetrics> get_g_V_out_out_profile() {
-            ComputerTestHelper.compute("g.V.out.out.profile()", g);
+            g.V.out.out.profile() // locked traversals
         }
 
 
         @Override
         public Traversal<Vertex, StandardTraversalMetrics> get_g_V_repeat_both_profile() {
-            ComputerTestHelper.compute("g.V.repeat(__.both()).times(3).profile()", g);
+            GroovyTestHelper.compute("g.V.repeat(__.both()).times(3).profile()", g);
         }
 
         @Override
         Traversal<Vertex, StandardTraversalMetrics> get_g_V_hasXinXcreatedX_count_isX1XX_valuesXnameX_profile() {
-            ComputerTestHelper.compute(" g.V().has(__.in('created').count().is(1l)).values('name').profile()", g);
-        }
-
-        @Override
-        @org.junit.Ignore
-        void g_V_sleep_sleep_profile() {
+            GroovyTestHelper.compute("g.V().has(__.in('created').count().is(1l)).values('name').profile()", g);
         }
 
         @Override
         Traversal<Vertex, StandardTraversalMetrics> get_g_V_sleep_sleep_profile() {
-            return null
+            GroovyTestHelper.compute("g.V().sideEffect{Thread.sleep(10)}.sideEffect{Thread.sleep(5)}.profile()", g)
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/abd23f4e/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySackTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySackTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySackTest.groovy
index 21929a0..e29af96 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySackTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySackTest.groovy
@@ -18,55 +18,30 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect
 
-import org.apache.tinkerpop.gremlin.process.UseEngine
-import org.apache.tinkerpop.gremlin.process.computer.ComputerTestHelper
+import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
-import static org.apache.tinkerpop.gremlin.structure.Operator.sum
-
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
 public abstract class GroovySackTest {
 
-    @UseEngine(TraversalEngine.Type.STANDARD)
-    public static class StandardTraversals extends SackTest {
-
-        @Override
-        public Traversal<Vertex, Double> get_g_withSackX0X_V_outE_sackXsum_weightX_inV_sack_sum() {
-            g.withSack(0.0f).V().outE.sack(sum, 'weight').inV.sack.sum()
-        }
-
-        @Override
-        public Traversal<Vertex, Float> get_g_withSackX0X_V_repeatXoutE_sackXsum_weightX_inVX_timesX2X_sack() {
-            g.withSack(0.0f).V.repeat(__.outE.sack(sum, 'weight').inV).times(2).sack
-        }
-
-        @Override
-        public Traversal<Vertex, Map> get_g_withSackXmap__map_cloneX_V_out_out_sackXmap_a_nameX_sack() {
-            g.withSack { [:] } { it.clone() }.V.out().out().sack { m, v -> m['a'] = v.name; m }.sack()
-        }
-    }
-
-    @UseEngine(TraversalEngine.Type.COMPUTER)
-    public static class ComputerTraversals extends SackTest {
+    public static class Traversals extends SackTest {
 
         @Override
         public Traversal<Vertex, Double> get_g_withSackX0X_V_outE_sackXsum_weightX_inV_sack_sum() {
-            ComputerTestHelper.compute("g.withSack(0.0f).V().outE.sack(sum, 'weight').inV.sack.sum()", g);
+            GroovyTestHelper.compute("g.withSack(0.0f).V().outE.sack(sum, 'weight').inV.sack.sum()", g);
         }
 
         @Override
         public Traversal<Vertex, Float> get_g_withSackX0X_V_repeatXoutE_sackXsum_weightX_inVX_timesX2X_sack() {
-            ComputerTestHelper.compute("g.withSack(0.0f).V.repeat(__.outE.sack(sum, 'weight').inV).times(2).sack", g)
+            GroovyTestHelper.compute("g.withSack(0.0f).V.repeat(__.outE.sack(sum, 'weight').inV).times(2).sack", g)
         }
 
         @Override
         public Traversal<Vertex, Map> get_g_withSackXmap__map_cloneX_V_out_out_sackXmap_a_nameX_sack() {
-            ComputerTestHelper.compute("g.withSack{[:]}{ it.clone() }.V.out().out().sack { m, v -> m['a'] = v.name; m }.sack()", g);
+            GroovyTestHelper.compute("g.withSack{[:]}{ it.clone() }.V.out().out().sack { m, v -> m['a'] = v.name; m }.sack()", g);
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/abd23f4e/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySideEffectCapTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySideEffectCapTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySideEffectCapTest.groovy
index 54ed543..24456fe 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySideEffectCapTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySideEffectCapTest.groovy
@@ -20,7 +20,7 @@ package org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect
 
 import org.apache.tinkerpop.gremlin.structure.T
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.computer.ComputerTestHelper
+import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine
 import org.apache.tinkerpop.gremlin.process.UseEngine
 import org.apache.tinkerpop.gremlin.structure.Vertex
@@ -30,31 +30,15 @@ import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__
  */
 public abstract class GroovySideEffectCapTest {
 
-    @UseEngine(TraversalEngine.Type.STANDARD)
-    public static class StandardTraversals extends SideEffectCapTest {
+    public static class Traversals extends SideEffectCapTest {
         @Override
         public Traversal<Vertex, Map<String, Long>> get_g_V_hasXageX_groupCountXaX_byXnameX_out_capXaX() {
-            g.V.has('age').groupCount('a').by('name').out.cap('a')
+            GroovyTestHelper.compute("g.V.has('age').groupCount('a').by('name').out.cap('a')", g)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Map<Object, Long>>> get_g_V_chooseXlabel_person__age_groupCountXaX__name_groupCountXbXX_capXa_bX() {
-            g.V.choose(__.has(T.label, 'person'),
-                    __.age.groupCount('a'),
-                    __.values("name").groupCount('b')).cap('a', 'b')
-        }
-    }
-
-    @UseEngine(TraversalEngine.Type.COMPUTER)
-    public static class ComputerTraversals extends SideEffectCapTest {
-        @Override
-        public Traversal<Vertex, Map<String, Long>> get_g_V_hasXageX_groupCountXaX_byXnameX_out_capXaX() {
-            ComputerTestHelper.compute("g.V.has('age').groupCount('a').by('name').out.cap('a')", g)
-        }
-
-        @Override
-        public Traversal<Vertex, Map<String, Map<Object, Long>>> get_g_V_chooseXlabel_person__age_groupCountXaX__name_groupCountXbXX_capXa_bX() {
-            ComputerTestHelper.compute("""
+            GroovyTestHelper.compute("""
             g.V.choose(__.has(T.label, 'person'),
                     __.age.groupCount('a'),
                     __.values("name").groupCount('b')).cap('a', 'b')

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/abd23f4e/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySideEffectTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySideEffectTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySideEffectTest.groovy
index bd04f2d..dc610e4 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySideEffectTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySideEffectTest.groovy
@@ -18,9 +18,8 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect
 
+import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine
-import org.apache.tinkerpop.gremlin.process.UseEngine
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
 /**
@@ -28,29 +27,28 @@ import org.apache.tinkerpop.gremlin.structure.Vertex
  */
 public abstract class GroovySideEffectTest {
 
-    @UseEngine(TraversalEngine.Type.STANDARD)
-    public static class StandardTraversals extends SideEffectTest {
+    public static class Traversals extends SideEffectTest {
 
         @Override
         public Traversal<Vertex, String> get_g_VX1X_sideEffectXstore_aX_name(final Object v1Id) {
-            g.withSideEffect('a') { [] }.V(v1Id).sideEffect {
+            GroovyTestHelper.compute("""g.withSideEffect('a') { [] }.V(v1Id).sideEffect {
                 it.sideEffects('a').clear();
                 it.sideEffects('a').add(it.get());
-            }.name;
+            }.name""", g, "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, String> get_g_VX1X_out_sideEffectXincr_cX_name(final Object v1Id) {
-            g.withSideEffect('c') { [0] }.V(v1Id).out.sideEffect {
-                def temp = it.sideEffects('c')[0];
+            GroovyTestHelper.compute("""g.withSideEffect('c') { [0] }.V(v1Id).out.sideEffect {
+                temp = it.sideEffects('c')[0];
                 it.sideEffects('c').clear();
                 it.sideEffects('c').add(temp + 1);
-            }.name
+            }.name""", g, "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, String> get_g_VX1X_out_sideEffectXX_name(final Object v1Id) {
-            g.V(v1Id).out().sideEffect {}.name
+            GroovyTestHelper.compute("g.V(v1Id).out().sideEffect {}.name", g, "v1Id", v1Id)
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/abd23f4e/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyStoreTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyStoreTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyStoreTest.groovy
index 971a4f7..d0e5b43 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyStoreTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyStoreTest.groovy
@@ -18,11 +18,8 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect
 
+import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine
-import org.apache.tinkerpop.gremlin.process.UseEngine
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__
-import org.apache.tinkerpop.gremlin.process.computer.ComputerTestHelper
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
 /**
@@ -30,54 +27,27 @@ import org.apache.tinkerpop.gremlin.structure.Vertex
  */
 public abstract class GroovyStoreTest {
 
-    @UseEngine(TraversalEngine.Type.STANDARD)
-    public static class StandardTraversals extends StoreTest {
+    public static class Traversals extends StoreTest {
 
         @Override
         public Traversal<Vertex, Collection> get_g_V_storeXaX_byXnameX_out_capXaX() {
-            g.V().store('a').by('name').out().cap('a');
+            GroovyTestHelper.compute("g.V().store('a').by('name').out().cap('a')", g)
         }
 
         @Override
         public Traversal<Vertex, Collection> get_g_VX1X_storeXaX_byXnameX_out_storeXaX_byXnameX_name_capXaX(
                 final Object v1Id) {
-            g.V(v1Id).store('a').by('name').out().store('a').by('name').name.cap('a');
+            GroovyTestHelper.compute("g.V(${v1Id}).store('a').by('name').out().store('a').by('name').name.cap('a')", g)
         }
 
         @Override
         public Traversal<Vertex, Set<String>> get_g_V_withSideEffectXa_setX_both_name_storeXaX_capXaX() {
-            g.withSideEffect('a') { [] as Set }.V.both.name.store('a').cap('a')
-        }
-
-
-        @Override
-        public Traversal<Vertex, Collection> get_g_V_storeXaX_byXoutEXcreatedX_countX_out_out_storeXaX_byXinEXcreatedX_weight_sumX_capXaX() {
-            g.V.store('a').by(__.outE('created').count).out.out.store('a').by(__.inE('created').weight.sum).cap('a');
-        }
-    }
-
-    @UseEngine(TraversalEngine.Type.COMPUTER)
-    public static class ComputerTraversals extends StoreTest {
-
-        @Override
-        public Traversal<Vertex, Collection> get_g_V_storeXaX_byXnameX_out_capXaX() {
-            ComputerTestHelper.compute("g.V().store('a').by('name').out().cap('a')", g)
-        }
-
-        @Override
-        public Traversal<Vertex, Collection> get_g_VX1X_storeXaX_byXnameX_out_storeXaX_byXnameX_name_capXaX(
-                final Object v1Id) {
-            ComputerTestHelper.compute("g.V(${v1Id}).store('a').by('name').out().store('a').by('name').name.cap('a')", g)
-        }
-
-        @Override
-        public Traversal<Vertex, Set<String>> get_g_V_withSideEffectXa_setX_both_name_storeXaX_capXaX() {
-            ComputerTestHelper.compute("g.withSideEffect('a'){[] as Set}.V.both.name.store('a').cap('a')", g);
+            GroovyTestHelper.compute("g.withSideEffect('a'){[] as Set}.V.both.name.store('a').cap('a')", g);
         }
 
         @Override
         public Traversal<Vertex, Collection> get_g_V_storeXaX_byXoutEXcreatedX_countX_out_out_storeXaX_byXinEXcreatedX_weight_sumX_capXaX() {
-            ComputerTestHelper.compute("g.V.store('a').by(__.outE('created').count).out.out.store('a').by(__.inE('created').weight.sum).cap('a')", g);
+            GroovyTestHelper.compute("g.V.store('a').by(__.outE('created').count).out.out.store('a').by(__.inE('created').weight.sum).cap('a')", g);
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/abd23f4e/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySubgraphTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySubgraphTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySubgraphTest.groovy
index 620b0ff..5b3d801 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySubgraphTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySubgraphTest.groovy
@@ -18,31 +18,28 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect
 
+import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine
-import org.apache.tinkerpop.gremlin.process.UseEngine
 import org.apache.tinkerpop.gremlin.structure.Graph
 import org.apache.tinkerpop.gremlin.structure.Vertex
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
 public abstract class GroovySubgraphTest {
 
-    @UseEngine(TraversalEngine.Type.STANDARD)
-    public static class StandardTraversals extends SubgraphTest {
+    public static class Traversals extends SubgraphTest {
 
         @Override
         public Traversal<Vertex, Graph> get_g_V_withSideEffectXsgX_outEXknowsX_subgraphXsgX_name_capXsgX(
                 final Object v1Id, final Graph subgraph) {
-            g.withSideEffect('sg') { subgraph }.V(v1Id).outE('knows').subgraph('sg').name.cap('sg')
+            GroovyTestHelper.compute("g.withSideEffect('sg') { subgraph }.V(v1Id).outE('knows').subgraph('sg').name.cap('sg')", g, "v1Id", v1Id, "subgraph", subgraph)
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_withSideEffectXsgX_repeatXbothEXcreatedX_subgraphXsgX_outVX_timesX5X_name_dedup(
                 final Graph subgraph) {
-            g.withSideEffect('sg') { subgraph }.V.repeat(__.bothE('created').subgraph('sg').outV).times(5).name.dedup
+            GroovyTestHelper.compute("g.withSideEffect('sg') { subgraph }.V.repeat(__.bothE('created').subgraph('sg').outV).times(5).name.dedup", g, "subgraph", subgraph)
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/abd23f4e/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyTreeTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyTreeTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyTreeTest.groovy
index 0dc037d..b5ae25d 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyTreeTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyTreeTest.groovy
@@ -18,92 +18,47 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect
 
-import org.apache.tinkerpop.gremlin.process.*
-import org.apache.tinkerpop.gremlin.process.computer.ComputerTestHelper
-import org.apache.tinkerpop.gremlin.structure.T
+import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.Tree
 import org.apache.tinkerpop.gremlin.structure.Vertex
-import org.junit.Test
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
 public abstract class GroovyTreeTest {
 
-    @UseEngine(TraversalEngine.Type.STANDARD)
-    public static class StandardTraversals extends TreeTest {
+    public static class Traversals extends TreeTest {
 
         @Override
         public Traversal<Vertex, Tree> get_g_V_out_out_tree_byXidX() {
-            g.V.out.out.tree.by(T.id);
+            GroovyTestHelper.compute("g.V.out.out.tree.by(id)", g)
         }
 
         @Override
         public Traversal<Vertex, Tree> get_g_V_out_out_treeXaX_byXidX_capXaX() {
-            g.V.out.out.tree('a').by(T.id).cap('a');
-        }
-
-        @Override
-        public Traversal<Vertex, Tree> get_g_VX1X_out_out_tree_byXnameX(final Object v1Id) {
-            g.V(v1Id).out.out.tree.by('name');
-        }
-
-        @Override
-        public Traversal<Vertex, Tree> get_g_VX1X_out_out_treeXaX_byXnameX_both_both_capXaX(final Object v1Id) {
-            g.V(v1Id).out.out.tree('a').by('name').both.both.cap('a');
+            GroovyTestHelper.compute("g.V.out.out.tree('a').by(id).cap('a')", g)
         }
 
         @Override
         public Traversal<Vertex, Tree> get_g_V_out_out_tree() {
-            g.V.out.out.tree();
+            GroovyTestHelper.compute("g.V.out.out.tree()", g)
         }
 
         @Override
         public Traversal<Vertex, Tree> get_g_V_out_out_treeXaX_capXaX() {
-            g.V.out.out.tree('a').cap('a');
-        }
-    }
-
-    @UseEngine(TraversalEngine.Type.COMPUTER)
-    public static class ComputerTraversals extends TreeTest {
-
-        @Override
-        public Traversal<Vertex, Tree> get_g_V_out_out_tree_byXidX() {
-            ComputerTestHelper.compute("g.V.out.out.tree.by(id)", g)
+            GroovyTestHelper.compute("g.V.out.out.tree('a').cap('a')", g)
         }
 
         @Override
-        public Traversal<Vertex, Tree> get_g_V_out_out_treeXaX_byXidX_capXaX() {
-            ComputerTestHelper.compute("g.V.out.out.tree('a').by(id).cap('a')", g)
-        }
-
-        @Override
-        public Traversal<Vertex, Tree> get_g_V_out_out_tree() {
-            ComputerTestHelper.compute("g.V.out.out.tree()", g)
-        }
-
-        @Override
-        public Traversal<Vertex, Tree> get_g_V_out_out_treeXaX_capXaX() {
-            ComputerTestHelper.compute("g.V.out.out.tree('a').cap('a')", g)
-        }
-
-        @Override
-        @Test
-        @org.junit.Ignore("Traversal not supported by ComputerTraversalEngine.computer")
-        void g_VX1X_out_out_tree_byXnameX() {
-
+        public Traversal<Vertex, Tree> get_g_VX1X_out_out_treeXaX_byXnameX_both_both_capXaX(final Object v1Id) {
+            GroovyTestHelper.compute("g.V(v1Id).out.out.tree('a').by('name').both.both.cap('a')", g, "v1Id", v1Id)
         }
 
         @Override
-        Traversal<Vertex, Tree> get_g_VX1X_out_out_tree_byXnameX(Object v1Id) {
-            return null
+        public Traversal<Vertex, Tree> get_g_VX1X_out_out_tree_byXnameX(final Object v1Id) {
+            GroovyTestHelper.compute("g.V(v1Id).out.out.tree.by('name')", g, "v1Id", v1Id)
         }
 
-        @Override
-        Traversal<Vertex, Tree> get_g_VX1X_out_out_treeXaX_byXnameX_both_both_capXaX(Object v1Id) {
-            return null
-        }
     }
 }


[12/50] [abbrv] incubator-tinkerpop git commit: Rename test for consistency.

Posted by dk...@apache.org.
Rename test for consistency.


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

Branch: refs/heads/TINKERPOP3-666
Commit: 8fc65a9f7e5fb1e6f31d2c218ac1631765142ae1
Parents: 4700471
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri May 8 08:15:26 2015 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri May 8 08:15:26 2015 -0400

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


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/8fc65a9f/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/SerializationTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/SerializationTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/SerializationTest.java
index e335349..97dbded 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/SerializationTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/SerializationTest.java
@@ -56,7 +56,7 @@ import static org.junit.Assert.*;
  */
 @RunWith(Enclosed.class)
 public class SerializationTest {
-    public static class KryoTest extends AbstractGremlinTest {
+    public static class GryoTest extends AbstractGremlinTest {
         @Test
         @LoadGraphWith(LoadGraphWith.GraphData.MODERN)
         public void shouldSerializeVertexAsDetached() throws Exception {


[07/50] [abbrv] incubator-tinkerpop git commit: Move IoTest to io package with its associated integration test.

Posted by dk...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/4700471c/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/TinkerGraphProvider.java
----------------------------------------------------------------------
diff --git a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/TinkerGraphProvider.java b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/TinkerGraphProvider.java
index b2f2e0a..dd53dde 100644
--- a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/TinkerGraphProvider.java
+++ b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/TinkerGraphProvider.java
@@ -23,7 +23,7 @@ import org.apache.tinkerpop.gremlin.AbstractGraphProvider;
 import org.apache.tinkerpop.gremlin.LoadGraphWith;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.GraphTest;
-import org.apache.tinkerpop.gremlin.structure.IoTest;
+import org.apache.tinkerpop.gremlin.structure.io.IoTest;
 import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerEdge;
 import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerElement;
 import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph;


[14/50] [abbrv] incubator-tinkerpop git commit: Assert with order in properties.

Posted by dk...@apache.org.
Assert with order in properties.

Not all graphs will return data in the same order - can't make that assumption.


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

Branch: refs/heads/TINKERPOP3-666
Commit: aa519db61cd8d0b8e5e57bc953c07f6e4dc4a2e8
Parents: f54218f
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri May 8 09:32:18 2015 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri May 8 09:32:18 2015 -0400

----------------------------------------------------------------------
 .../tinkerpop/gremlin/structure/SerializationTest.java       | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/aa519db6/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/SerializationTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/SerializationTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/SerializationTest.java
index 97dbded..822582b 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/SerializationTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/SerializationTest.java
@@ -24,16 +24,19 @@ import org.apache.tinkerpop.gremlin.AbstractGremlinTest;
 import org.apache.tinkerpop.gremlin.LoadGraphWith;
 import org.apache.tinkerpop.gremlin.process.traversal.Path;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalMetrics;
+import org.apache.tinkerpop.gremlin.structure.io.IoTest;
 import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONIo;
 import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONTokens;
 import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoIo;
 import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoReader;
 import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoWriter;
+import org.apache.tinkerpop.gremlin.structure.util.Comparators;
 import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedEdge;
 import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedPath;
 import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedProperty;
 import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertex;
 import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertexProperty;
+import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
 import org.junit.Test;
 import org.junit.experimental.runners.Enclosed;
 import org.junit.runner.RunWith;
@@ -42,6 +45,7 @@ import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.util.Collection;
 import java.util.HashMap;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.TimeUnit;
@@ -140,7 +144,7 @@ public class SerializationTest {
             final GryoWriter gryoWriter = gryoIo.writer().create();
             final GryoReader gryoReader = gryoIo.reader().create();
 
-            final VertexProperty<?> vertexProperty = graph.vertices(convertToVertexId("marko")).next().properties("location").next();
+            final VertexProperty<?> vertexProperty = IteratorUtils.filter(graph.vertices(convertToVertexId("marko")).next().properties("location"), p -> p.value().equals("brussels")).next();
             final ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
             gryoWriter.writeObject(outputStream, vertexProperty);
 
@@ -285,7 +289,7 @@ public class SerializationTest {
         @LoadGraphWith(LoadGraphWith.GraphData.CREW)
         public void shouldSerializeVertexPropertyWithProperties() throws Exception {
             final ObjectMapper mapper = graph.io(GraphSONIo.build()).mapper().create().createMapper();
-            final VertexProperty vp = graph.vertices(convertToVertexId("marko")).next().properties("location").next();
+            final VertexProperty vp = IteratorUtils.filter(graph.vertices(convertToVertexId("marko")).next().properties("location"), p -> p.value().equals("brussels")).next();
             final String json = mapper.writeValueAsString(vp);
             final Map<String, Object> m = mapper.readValue(json, mapTypeReference);
 


[33/50] [abbrv] incubator-tinkerpop git commit: Orders return unmodifiable lists for comparators.

Posted by dk...@apache.org.
Orders return unmodifiable lists for comparators.


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

Branch: refs/heads/TINKERPOP3-666
Commit: 179b339ead4363b1c5050d672425f558988e25a8
Parents: f968889
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Fri May 8 16:13:24 2015 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Fri May 8 16:13:24 2015 -0600

----------------------------------------------------------------------
 .../gremlin/process/traversal/step/map/OrderGlobalStep.java      | 2 +-
 .../gremlin/process/traversal/step/map/OrderLocalStep.java       | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/179b339e/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderGlobalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderGlobalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderGlobalStep.java
index 464c020..04b8087 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderGlobalStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderGlobalStep.java
@@ -63,7 +63,7 @@ public final class OrderGlobalStep<S> extends CollectingBarrierStep<S> implement
 
     @Override
     public List<Comparator<S>> getComparators() {
-        return this.comparators.isEmpty() ? Collections.singletonList((Comparator) Order.incr) : this.comparators;
+        return this.comparators.isEmpty() ? Collections.singletonList((Comparator) Order.incr) : Collections.unmodifiableList(this.comparators);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/179b339e/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderLocalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderLocalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderLocalStep.java
index 11e333b..0afa56d 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderLocalStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderLocalStep.java
@@ -21,8 +21,8 @@ package org.apache.tinkerpop.gremlin.process.traversal.step.map;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.step.ComparatorHolder;
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
 
 import java.util.ArrayList;
 import java.util.Collection;
@@ -64,7 +64,7 @@ public final class OrderLocalStep<S, M> extends MapStep<S, S> implements Compara
 
     @Override
     public List<Comparator<M>> getComparators() {
-        return this.comparators;
+        return Collections.unmodifiableList(this.comparators);
     }
 
     @Override


[11/50] [abbrv] incubator-tinkerpop git commit: Move IoTest to io package with its associated integration test.

Posted by dk...@apache.org.
Move IoTest to io package with its associated integration test.


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

Branch: refs/heads/TINKERPOP3-666
Commit: 4700471cd5cc33a43ea36de9e69909dcf3ef887b
Parents: 9f669ac
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri May 8 08:07:16 2015 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri May 8 08:07:16 2015 -0400

----------------------------------------------------------------------
 .../tinkerpop/gremlin/structure/GraphTest.java  |    1 +
 .../tinkerpop/gremlin/structure/IoTest.java     | 2457 -----------------
 .../structure/StructureStandardSuite.java       |    1 +
 .../tinkerpop/gremlin/structure/VertexTest.java |    1 +
 .../tinkerpop/gremlin/structure/io/IoTest.java  | 2462 ++++++++++++++++++
 .../tinkergraph/TinkerGraphProvider.java        |    2 +-
 6 files changed, 2466 insertions(+), 2458 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/4700471c/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/GraphTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/GraphTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/GraphTest.java
index dfbf6f4..f2ee8e8 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/GraphTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/GraphTest.java
@@ -24,6 +24,7 @@ import org.apache.tinkerpop.gremlin.FeatureRequirement;
 import org.apache.tinkerpop.gremlin.FeatureRequirementSet;
 import org.apache.tinkerpop.gremlin.GraphManager;
 import org.apache.tinkerpop.gremlin.GraphProvider;
+import org.apache.tinkerpop.gremlin.structure.io.IoTest;
 import org.apache.tinkerpop.gremlin.util.StreamFactory;
 import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
 import org.junit.Test;


[20/50] [abbrv] incubator-tinkerpop git commit: Use an executorservice in the profiling app to submit requests.

Posted by dk...@apache.org.
Use an executorservice in the profiling app to submit requests.


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

Branch: refs/heads/TINKERPOP3-666
Commit: aa398ee1cccc847b5dd45a0bb79fc00c8977a7c9
Parents: 083afee
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri May 8 14:12:56 2015 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri May 8 14:12:56 2015 -0400

----------------------------------------------------------------------
 .../tinkerpop/gremlin/driver/util/ProfilingApplication.java    | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/aa398ee1/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/util/ProfilingApplication.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/util/ProfilingApplication.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/util/ProfilingApplication.java
index d4d75be..fc2c6ef 100644
--- a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/util/ProfilingApplication.java
+++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/util/ProfilingApplication.java
@@ -31,6 +31,8 @@ import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.CyclicBarrier;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
 import java.util.concurrent.atomic.AtomicBoolean;
@@ -48,6 +50,8 @@ public class ProfilingApplication {
     private final int clients;
     private final String executionName;
 
+    private static final ExecutorService executor = Executors.newFixedThreadPool(8);
+
     public ProfilingApplication(final String executionName, final Cluster cluster, final int clients, final int requests) {
         this.executionName = executionName;
         this.cluster = cluster;
@@ -83,7 +87,7 @@ public class ProfilingApplication {
                         } finally {
                             latch.countDown();
                         }
-                    })
+                    }, executor)
                 );
 
                 // finish once all requests are accounted for


[03/50] [abbrv] incubator-tinkerpop git commit: Use the gryo serializer as generated by the Graph.io() method.

Posted by dk...@apache.org.
Use the gryo serializer as generated by the Graph.io() method.

If this isn't done the custom serializers do not get used and tests will fail for those graphs that need use such serializers.  We can never use the default io builders in tests.


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

Branch: refs/heads/TINKERPOP3-666
Commit: 665ce51ba2c6fb52130ecdf605a591933a81e810
Parents: 08ee0fb
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri May 8 07:57:44 2015 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri May 8 07:57:44 2015 -0400

----------------------------------------------------------------------
 .../structure/util/star/StarGraphTest.java      | 101 ++++---------------
 1 file changed, 21 insertions(+), 80 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/665ce51b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/util/star/StarGraphTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/util/star/StarGraphTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/util/star/StarGraphTest.java
index 0ff2a82..0eab1cf 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/util/star/StarGraphTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/util/star/StarGraphTest.java
@@ -1,24 +1,21 @@
 /*
+ * 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
  *
- *  * 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.
+ * http://www.apache.org/licenses/LICENSE-2.0
  *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
-
 package org.apache.tinkerpop.gremlin.structure.util.star;
 
 import org.apache.tinkerpop.gremlin.AbstractGremlinTest;
@@ -32,13 +29,10 @@ import org.apache.tinkerpop.gremlin.structure.Property;
 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.GryoReader;
-import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoWriter;
+import org.apache.tinkerpop.gremlin.structure.io.IoCore;
 import org.apache.tinkerpop.gremlin.structure.util.Attachable;
-import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedFactory;
 import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
 import org.javatuples.Pair;
-import org.junit.Ignore;
 import org.junit.Test;
 
 import java.io.ByteArrayInputStream;
@@ -50,7 +44,6 @@ import java.util.Set;
 import java.util.UUID;
 
 import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -79,7 +72,7 @@ public class StarGraphTest extends AbstractGremlinTest {
 
     @Test
     @LoadGraphWith(LoadGraphWith.GraphData.CREW)
-    public void originalAndStarVerticesShouldHaveTheSameTopology() {
+    public void shoudlValidateThatOriginalAndStarVerticesHaveTheSameTopology() {
         g.V().forEachRemaining(vertex -> TestHelper.validateEquality(vertex, StarGraph.of(vertex).getStarVertex()));
     }
 
@@ -91,7 +84,7 @@ public class StarGraphTest extends AbstractGremlinTest {
 
     @Test
     @LoadGraphWith(LoadGraphWith.GraphData.CREW)
-    public void testAttachableGetMethod() {
+    public void shouldAttacheWithGetMethod() {
         // vertex host
         g.V().forEachRemaining(vertex -> TestHelper.validateEquality(vertex, StarGraph.of(vertex).getStarVertex().attach(Attachable.Method.get(vertex))));
         g.V().forEachRemaining(vertex -> StarGraph.of(vertex).getStarVertex().properties().forEachRemaining(vertexProperty -> TestHelper.validateEquality(vertexProperty, ((Attachable<VertexProperty>) vertexProperty).attach(Attachable.Method.get(vertex)))));
@@ -117,7 +110,7 @@ public class StarGraphTest extends AbstractGremlinTest {
     @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_MULTI_PROPERTIES)
     @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
     @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_PROPERTY)
-    public void testAttachableCreateMethod() {
+    public void shoudlAttachWithCreateMethod() {
         final Random random = new Random(234335l);
         StarGraph starGraph = StarGraph.open();
         Vertex starVertex = starGraph.addVertex(T.label, "person", "name", "stephen", "name", "spmallete");
@@ -131,65 +124,13 @@ public class StarGraphTest extends AbstractGremlinTest {
         TestHelper.validateEquality(starVertex, createdVertex);
     }
 
-    @Test
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_PROPERTY)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_META_PROPERTIES)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_MULTI_PROPERTIES)
-    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
-    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_PROPERTY)
-    public void shouldHaveSizeOfStarGraphLessThanDetached() throws Exception {
-        final Random random = new Random(95746498l);
-        final Vertex vertex = graph.addVertex("person");
-        for (int i = 0; i < 100; i++) { // vertex properties and meta properties
-            vertex.property(VertexProperty.Cardinality.list, UUID.randomUUID().toString(), random.nextDouble(),
-                    "acl", random.nextBoolean() ? "public" : "private",
-                    "created", random.nextLong());
-        }
-        for (int i = 0; i < 50000; i++) {  // edges and edge properties
-            vertex.addEdge("knows", graph.addVertex("person"), "since", random.nextLong(), "acl", random.nextBoolean() ? "public" : "private");
-            graph.addVertex("software").addEdge("createdBy", vertex, "date", random.nextLong());
-            graph.addVertex("group").addEdge("hasMember", vertex);
-        }
-        ///////////////
-        Pair<StarGraph, Integer> pair = serializeDeserialize(StarGraph.of(vertex));
-        int starGraphSize = pair.getValue1();
-        TestHelper.validateEquality(vertex, pair.getValue0().getStarVertex());
-        ///
-        pair = serializeDeserialize(pair.getValue0());
-        assertEquals(starGraphSize, pair.getValue1().intValue());
-        starGraphSize = pair.getValue1();
-        TestHelper.validateEquality(vertex, pair.getValue0().getStarVertex());
-        ///
-        pair = serializeDeserialize(pair.getValue0());
-        assertEquals(starGraphSize, pair.getValue1().intValue());
-        starGraphSize = pair.getValue1();
-        TestHelper.validateEquality(vertex, pair.getValue0().getStarVertex());
-        ///
-        // this is a rough approximation of "detached" serialization of all vertices and edges.
-        // now that writeVertex in gryo writes StarGraph that approach can't be used anymore to test
-        // serialization size of detached.
-        final ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
-        final GryoWriter writer = GryoWriter.build().create();
-        writer.writeObject(outputStream, DetachedFactory.detach(vertex, true));
-        vertex.edges(Direction.BOTH).forEachRemaining(e -> writer.writeObject(outputStream, DetachedFactory.detach(e, true)));
-        final int detachedVertexSize = outputStream.size();
-        assertTrue(starGraphSize < detachedVertexSize);
-
-        System.out.println("Size of star graph:        " + starGraphSize);
-        System.out.println("Size of detached vertex:   " + detachedVertexSize);
-        System.out.println("Size reduction:            " + (float) detachedVertexSize / (float) starGraphSize);
-    }
-
-    private static Pair<StarGraph, Integer> serializeDeserialize(final StarGraph starGraph) {
+    private Pair<StarGraph, Integer> serializeDeserialize(final StarGraph starGraph) {
         final ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
-        GryoWriter.build().create().writeObject(outputStream, starGraph);
         try {
-            return Pair.with(GryoReader.build().create().readObject(new ByteArrayInputStream(outputStream.toByteArray()), StarGraph.class), outputStream.size());
+            graph.io(IoCore.gryo()).writer().create().writeObject(outputStream, starGraph);
+            return Pair.with(graph.io(IoCore.gryo()).reader().create().readObject(new ByteArrayInputStream(outputStream.toByteArray()), StarGraph.class), outputStream.size());
         } catch (IOException ioe) {
             throw new RuntimeException(ioe);
         }
     }
-
-
 }


[21/50] [abbrv] incubator-tinkerpop git commit: Make sure that the cluster executor handles all async ops.

Posted by dk...@apache.org.
Make sure that the cluster executor handles all async ops.

Should be resorting to fork/join pool anywhere.


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

Branch: refs/heads/TINKERPOP3-666
Commit: 186494d41e8153dbe332f6cbfc8ea7796ad839c6
Parents: aa398ee
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri May 8 14:13:14 2015 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri May 8 14:13:14 2015 -0400

----------------------------------------------------------------------
 .../src/main/java/org/apache/tinkerpop/gremlin/driver/Cluster.java | 2 +-
 .../main/java/org/apache/tinkerpop/gremlin/driver/Connection.java  | 2 +-
 .../java/org/apache/tinkerpop/gremlin/driver/ConnectionPool.java   | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/186494d4/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Cluster.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Cluster.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Cluster.java
index c42014a..0e5617e 100644
--- a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Cluster.java
+++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Cluster.java
@@ -466,7 +466,7 @@ public class Cluster {
             return CompletableFuture.supplyAsync(() -> {
                 this.factory.shutdown();
                 return null;
-            });
+            }, executor());
         }
 
         @Override

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/186494d4/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Connection.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Connection.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Connection.java
index 6c4b4a4..00e87c3 100644
--- a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Connection.java
+++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Connection.java
@@ -174,7 +174,7 @@ class Connection {
                             thisConnection.returnToPool();
                             if (isClosed() && pending.isEmpty())
                                 shutdown(closeFuture.get());
-                        });
+                        }, cluster.executor());
                         final ResultQueue handler = new ResultQueue(resultLinkedBlockingQueue, readCompleted);
                         pending.put(requestMessage.getRequestId(), handler);
                         final ResultSet resultSet = new ResultSet(handler, cluster.executor(), channel,

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/186494d4/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ConnectionPool.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ConnectionPool.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ConnectionPool.java
index 839978f..9ea3db6 100644
--- a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ConnectionPool.java
+++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ConnectionPool.java
@@ -226,7 +226,7 @@ class ConnectionPool {
         final List<CompletableFuture<Void>> futures = new ArrayList<>(connections.size());
         for (Connection connection : connections) {
             final CompletableFuture<Void> future = connection.closeAsync();
-            future.thenRunAsync(open::decrementAndGet);
+            future.thenRunAsync(open::decrementAndGet, cluster.executor());
             futures.add(future);
         }
         return futures.toArray(new CompletableFuture[futures.size()]);


[10/50] [abbrv] incubator-tinkerpop git commit: Move IoTest to io package with its associated integration test.

Posted by dk...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/4700471c/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/IoTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/IoTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/IoTest.java
deleted file mode 100644
index cbc3473..0000000
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/IoTest.java
+++ /dev/null
@@ -1,2457 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tinkerpop.gremlin.structure;
-
-import com.fasterxml.jackson.core.JsonGenerationException;
-import com.fasterxml.jackson.core.JsonGenerator;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.SerializerProvider;
-import com.fasterxml.jackson.databind.jsontype.TypeSerializer;
-import com.fasterxml.jackson.databind.module.SimpleModule;
-import com.fasterxml.jackson.databind.ser.std.StdSerializer;
-import org.apache.commons.configuration.Configuration;
-import org.apache.tinkerpop.gremlin.AbstractGremlinTest;
-import org.apache.tinkerpop.gremlin.FeatureRequirement;
-import org.apache.tinkerpop.gremlin.LoadGraphWith;
-import org.apache.tinkerpop.gremlin.TestHelper;
-import org.apache.tinkerpop.gremlin.structure.Graph.Features.EdgePropertyFeatures;
-import org.apache.tinkerpop.gremlin.structure.Graph.Features.VertexPropertyFeatures;
-import org.apache.tinkerpop.gremlin.structure.io.GraphMigrator;
-import org.apache.tinkerpop.gremlin.structure.io.GraphReader;
-import org.apache.tinkerpop.gremlin.structure.io.GraphWriter;
-import org.apache.tinkerpop.gremlin.structure.io.Io;
-import org.apache.tinkerpop.gremlin.structure.io.graphml.GraphMLIo;
-import org.apache.tinkerpop.gremlin.structure.io.graphml.GraphMLReader;
-import org.apache.tinkerpop.gremlin.structure.io.graphml.GraphMLResourceAccess;
-import org.apache.tinkerpop.gremlin.structure.io.graphml.GraphMLWriter;
-import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONIo;
-import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONMapper;
-import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONReader;
-import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONResourceAccess;
-import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONTokens;
-import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONWriter;
-import org.apache.tinkerpop.gremlin.structure.io.graphson.LegacyGraphSONReader;
-import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoIo;
-import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoMapper;
-import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoReader;
-import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoWriter;
-import org.apache.tinkerpop.gremlin.structure.io.gryo.VertexByteArrayInputStream;
-import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedFactory;
-import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertex;
-import org.apache.tinkerpop.gremlin.util.StreamFactory;
-import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
-import org.junit.Before;
-import org.junit.Test;
-
-import javax.xml.XMLConstants;
-import javax.xml.transform.Source;
-import javax.xml.transform.stream.StreamSource;
-import javax.xml.validation.Schema;
-import javax.xml.validation.SchemaFactory;
-import javax.xml.validation.Validator;
-import java.io.BufferedReader;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.OutputStream;
-import java.io.Reader;
-import java.io.StringWriter;
-import java.io.Writer;
-import java.util.Iterator;
-import java.util.List;
-import java.util.UUID;
-import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.concurrent.atomic.AtomicInteger;
-
-import static org.apache.tinkerpop.gremlin.structure.Graph.Features.ElementFeatures.FEATURE_ANY_IDS;
-import static org.apache.tinkerpop.gremlin.structure.Graph.Features.VariableFeatures.FEATURE_VARIABLES;
-import static org.apache.tinkerpop.gremlin.structure.Graph.Features.VertexFeatures.FEATURE_USER_SUPPLIED_IDS;
-import static org.apache.tinkerpop.gremlin.structure.Graph.Features.VertexPropertyFeatures.*;
-import static org.apache.tinkerpop.gremlin.structure.io.IoCore.graphml;
-import static org.apache.tinkerpop.gremlin.structure.io.IoCore.graphson;
-import static org.apache.tinkerpop.gremlin.structure.io.IoCore.gryo;
-import static org.junit.Assert.*;
-import static org.mockito.Mockito.mock;
-
-/**
- * @author Joshua Shinavier (http://fortytwo.net)
- * @author Stephen Mallette (http://stephen.genoprime.com)
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public class IoTest extends AbstractGremlinTest {
-
-    private Io.Builder<GraphMLIo> graphml;
-    private Io.Builder<GraphSONIo> graphson;
-    private Io.Builder<GryoIo> gryo;
-
-    @Before
-    public void setupBeforeEachTest() {
-        graphml = graphml();
-        graphson = graphson();
-        gryo = gryo();
-    }
-
-    @Test
-    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
-    @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_STRING_VALUES)
-    @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_INTEGER_VALUES)
-    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_FLOAT_VALUES)
-    public void shouldReadGraphML() throws IOException {
-        readGraphMLIntoGraph(graph, "tinkerpop-classic.xml");
-        assertClassicGraph(graph, false, true);
-    }
-
-    @Test
-    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
-    @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_STRING_VALUES)
-    @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_INTEGER_VALUES)
-    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_FLOAT_VALUES)
-    public void shouldReadGraphMLUnorderedElements() throws IOException {
-        readGraphMLIntoGraph(graph, "tinkerpop-classic-unordered.xml");
-        assertClassicGraph(graph, false, true);
-    }
-
-    @Test
-    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
-    @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_STRING_VALUES)
-    @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_INTEGER_VALUES)
-    @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_FLOAT_VALUES)
-    @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_BOOLEAN_VALUES)
-    @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_LONG_VALUES)
-    @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_DOUBLE_VALUES)
-    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_FLOAT_VALUES)
-    public void shouldReadGraphMLAnAllSupportedDataTypes() throws IOException {
-        final GraphReader reader = GraphMLReader.build().create();
-        try (final InputStream stream = IoTest.class.getResourceAsStream(TestHelper.convertPackageToResourcePath(GraphMLResourceAccess.class) + "graph-types.xml")) {
-            reader.readGraph(stream, graph);
-        }
-
-        final Vertex v = graph.vertices().next();
-        assertEquals(123.45d, v.value("d"), 0.000001d);
-        assertEquals("some-string", v.<String>value("s"));
-        assertEquals(29, v.<Integer>value("i").intValue());
-        assertEquals(true, v.<Boolean>value("b"));
-        assertEquals(123.54f, v.value("f"), 0.000001f);
-        assertEquals(10000000l, v.<Long>value("l").longValue());
-        assertEquals("junk", v.<String>value("n"));
-    }
-
-    @Test
-    @LoadGraphWith(LoadGraphWith.GraphData.CLASSIC)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_USER_SUPPLIED_IDS)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_NUMERIC_IDS)
-    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
-    public void shouldReadWriteClassicToGraphMLToFileWithHelpers() throws Exception {
-        final File f = TestHelper.generateTempFile(this.getClass(), name.getMethodName(), ".xml");
-        try {
-            graph.io(graphml).writeGraph(f.getAbsolutePath());
-
-            final Configuration configuration = graphProvider.newGraphConfiguration("readGraph", this.getClass(), name.getMethodName(), LoadGraphWith.GraphData.CLASSIC);
-            final Graph g1 = graphProvider.openTestGraph(configuration);
-            g1.io(graphml).readGraph(f.getAbsolutePath());
-
-            assertClassicGraph(graph, false, true);
-
-            // need to manually close the "g1" instance
-            graphProvider.clear(g1, configuration);
-        } catch (Exception ex) {
-            f.delete();
-            throw ex;
-        }
-    }
-
-    /**
-     * Only need to execute this test with TinkerGraph or other graphs that support user supplied identifiers.
-     */
-    @Test
-    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
-    @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_STRING_VALUES)
-    @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_INTEGER_VALUES)
-    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_FLOAT_VALUES)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_USER_SUPPLIED_IDS)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_NUMERIC_IDS)
-    @LoadGraphWith(LoadGraphWith.GraphData.CLASSIC)
-    public void shouldWriteNormalizedGraphML() throws Exception {
-        try (ByteArrayOutputStream bos = new ByteArrayOutputStream()) {
-            final GraphMLWriter w = GraphMLWriter.build().normalize(true).create();
-            w.writeGraph(bos, graph);
-
-            final String expected = streamToString(IoTest.class.getResourceAsStream(TestHelper.convertPackageToResourcePath(GraphMLResourceAccess.class) + "tinkerpop-classic-normalized.xml"));
-            assertEquals(expected.replace("\n", "").replace("\r", ""), bos.toString().replace("\n", "").replace("\r", ""));
-        }
-    }
-
-    /**
-     * Only need to execute this test with TinkerGraph or other graphs that support user supplied identifiers.
-     */
-    @Test
-    @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_STRING_VALUES)
-    @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_INTEGER_VALUES)
-    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_FLOAT_VALUES)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_USER_SUPPLIED_IDS)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_NUMERIC_IDS)
-    @FeatureRequirement(featureClass = Graph.Features.VertexPropertyFeatures.class, feature = Graph.Features.VertexPropertyFeatures.FEATURE_USER_SUPPLIED_IDS)
-    @FeatureRequirement(featureClass = Graph.Features.VariableFeatures.class, feature = FEATURE_VARIABLES)
-    @LoadGraphWith(LoadGraphWith.GraphData.CLASSIC)
-    public void shouldWriteNormalizedGraphSON() throws Exception {
-        try (ByteArrayOutputStream bos = new ByteArrayOutputStream()) {
-            final GraphSONMapper mapper = graph.io(graphson).mapper().normalize(true).create();
-            final GraphSONWriter w = graph.io(graphson).writer().mapper(mapper).create();
-            w.writeGraph(bos, graph);
-
-            final String expected = streamToString(IoTest.class.getResourceAsStream(TestHelper.convertPackageToResourcePath(GraphSONResourceAccess.class) + "tinkerpop-classic-normalized.json"));
-            assertEquals(expected.replace("\n", "").replace("\r", ""), bos.toString().replace("\n", "").replace("\r", ""));
-        }
-    }
-
-    /**
-     * Note: this is only a very lightweight test of writer/reader encoding. It is known that there are characters
-     * which, when written by GraphMLWriter, cause parse errors for GraphMLReader. However, this happens uncommonly
-     * enough that is not yet known which characters those are. Only need to execute this test with TinkerGraph
-     * or other graphs that support user supplied identifiers.
-     */
-    @Test
-    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
-    @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_STRING_VALUES)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = FEATURE_USER_SUPPLIED_IDS)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_STRING_IDS)
-    public void shouldProperlyEncodeWithGraphML() throws Exception {
-        final Vertex v = graph.addVertex(T.id, "1");
-        v.property(VertexProperty.Cardinality.single, "text", "\u00E9");
-
-        final GraphMLWriter w = GraphMLWriter.build().create();
-
-        final File f = TestHelper.generateTempFile(this.getClass(), "test", ".txt");
-        try (final OutputStream out = new FileOutputStream(f)) {
-            w.writeGraph(out, graph);
-        }
-
-        validateXmlAgainstGraphMLXsd(f);
-
-        // reusing the same config used for creation of "g".
-        final Configuration configuration = graphProvider.newGraphConfiguration("g2", this.getClass(), name.getMethodName(), null);
-        graphProvider.clear(configuration);
-        final Graph g2 = graphProvider.openTestGraph(configuration);
-        final GraphMLReader r = GraphMLReader.build().create();
-
-        try (final InputStream in = new FileInputStream(f)) {
-            r.readGraph(in, g2);
-        }
-
-        final Vertex v2 = g2.vertices("1").next();
-        assertEquals("\u00E9", v2.property("text").value());
-
-        // need to manually close the "g2" instance
-        graphProvider.clear(g2, configuration);
-    }
-
-    /**
-     * This is just a serialization check.
-     */
-    @Test
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = FEATURE_USER_SUPPLIED_IDS)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = FEATURE_ANY_IDS)
-    public void shouldProperlySerializeCustomIdWithGraphSON() throws Exception {
-        final UUID id = UUID.fromString("AF4B5965-B176-4552-B3C1-FBBE2F52C305");
-        graph.addVertex(T.id, new CustomId("vertex", id));
-
-        final SimpleModule module = new SimpleModule();
-        module.addSerializer(CustomId.class, new CustomId.CustomIdJacksonSerializer());
-        final GraphWriter writer = graph.io(graphson).writer().mapper(
-                graph.io(graphson).mapper().addCustomModule(module).embedTypes(true).create()).create();
-
-        try (final ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
-            writer.writeGraph(baos, graph);
-
-            final JsonNode jsonGraph = new ObjectMapper().readTree(baos.toByteArray());
-            final JsonNode idValue = jsonGraph.get(GraphSONTokens.ID);
-            assertTrue(idValue.has("cluster"));
-            assertEquals("vertex", idValue.get("cluster").asText());
-            assertTrue(idValue.has("elementId"));
-            assertEquals("AF4B5965-B176-4552-B3C1-FBBE2F52C305".toLowerCase(), idValue.get("elementId").asText());
-
-            // reusing the same config used for creation of "g".
-            final Configuration configuration = graphProvider.newGraphConfiguration("g2", this.getClass(), name.getMethodName(), null);
-            graphProvider.clear(configuration);
-            final Graph g2 = graphProvider.openTestGraph(configuration);
-
-            try (final InputStream is = new ByteArrayInputStream(baos.toByteArray())) {
-                final GraphReader reader = graph.io(graphson).reader()
-                        .mapper(graph.io(graphson).mapper().embedTypes(true).addCustomModule(module).create()).create();
-                reader.readGraph(is, g2);
-            }
-
-            final Vertex v2 = g2.vertices().next();
-            final CustomId customId = (CustomId) v2.id();
-            assertEquals(id, customId.getElementId());
-            assertEquals("vertex", customId.getCluster());
-
-            // need to manually close the "g2" instance
-            graphProvider.clear(g2, configuration);
-        }
-    }
-
-    @Test
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = FEATURE_USER_SUPPLIED_IDS)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = FEATURE_ANY_IDS)
-    public void shouldProperlySerializeCustomIdWithGryo() throws Exception {
-        graph.addVertex(T.id, new CustomId("vertex", UUID.fromString("AF4B5965-B176-4552-B3C1-FBBE2F52C305")));
-        final GryoMapper gryo = GryoMapper.build().addCustom(CustomId.class).create();
-
-        final GryoWriter writer = GryoWriter.build().mapper(gryo).create();
-        final GryoReader reader = GryoReader.build().mapper(gryo).create();
-
-        final Configuration configuration = graphProvider.newGraphConfiguration("readGraph", this.getClass(), name.getMethodName(), null);
-        graphProvider.clear(configuration);
-        final Graph g1 = graphProvider.openTestGraph(configuration);
-
-        GraphMigrator.migrateGraph(graph, g1, reader, writer);
-
-        final Vertex onlyVertex = g1.traversal().V().next();
-        final CustomId id = (CustomId) onlyVertex.id();
-        assertEquals("vertex", id.getCluster());
-        assertEquals(UUID.fromString("AF4B5965-B176-4552-B3C1-FBBE2F52C305"), id.getElementId());
-
-        // need to manually close the "g1" instance
-        graphProvider.clear(g1, configuration);
-    }
-
-    @Test
-    @LoadGraphWith(LoadGraphWith.GraphData.CLASSIC)
-    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
-    public void shouldMigrateGraphWithFloat() throws Exception {
-        final Configuration configuration = graphProvider.newGraphConfiguration("readGraph", this.getClass(), name.getMethodName(), null);
-        graphProvider.clear(configuration);
-        final Graph g1 = graphProvider.openTestGraph(configuration);
-
-        final GryoReader reader = graph.io(gryo).reader().create();
-        final GryoWriter writer = graph.io(gryo).writer().create();
-
-        GraphMigrator.migrateGraph(graph, g1, reader, writer);
-
-        assertClassicGraph(g1, false, false);
-
-        // need to manually close the "g1" instance
-        graphProvider.clear(g1, configuration);
-    }
-
-    @Test
-    @LoadGraphWith(LoadGraphWith.GraphData.MODERN)
-    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
-    public void shouldMigrateGraph() throws Exception {
-        final Configuration configuration = graphProvider.newGraphConfiguration("readGraph", this.getClass(), name.getMethodName(), LoadGraphWith.GraphData.MODERN);
-        graphProvider.clear(configuration);
-        final Graph g1 = graphProvider.openTestGraph(configuration);
-
-        final GryoReader reader = graph.io(gryo).reader().create();
-        final GryoWriter writer = graph.io(gryo).writer().create();
-
-        GraphMigrator.migrateGraph(graph, g1, reader, writer);
-
-        // by making this lossy for float it will assert floats for doubles
-        assertModernGraph(g1, true, false);
-
-        // need to manually close the "g1" instance
-        graphProvider.clear(g1, configuration);
-    }
-
-    @Test
-    @LoadGraphWith(LoadGraphWith.GraphData.MODERN)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_USER_SUPPLIED_IDS)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_NUMERIC_IDS)
-    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
-    public void shouldReadWriteModernToGryo() throws Exception {
-        try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
-            final GryoWriter writer = graph.io(gryo).writer().create();
-            writer.writeGraph(os, graph);
-
-            final Configuration configuration = graphProvider.newGraphConfiguration("readGraph", this.getClass(), name.getMethodName(), LoadGraphWith.GraphData.MODERN);
-            graphProvider.clear(configuration);
-            final Graph g1 = graphProvider.openTestGraph(configuration);
-            final GryoReader reader = graph.io(gryo).reader().create();
-            final byte[] x = os.toByteArray();
-            try (final ByteArrayInputStream bais = new ByteArrayInputStream(x)) {
-                reader.readGraph(bais, g1);
-            }
-
-            // by making this lossy for float it will assert floats for doubles
-            assertModernGraph(g1, true, false);
-
-            // need to manually close the "g1" instance
-            graphProvider.clear(g1, configuration);
-        }
-    }
-
-    @Test
-    @LoadGraphWith(LoadGraphWith.GraphData.MODERN)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_USER_SUPPLIED_IDS)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_NUMERIC_IDS)
-    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
-    public void shouldReadWriteModernToGryoToFileWithHelpers() throws Exception {
-        final File f = TestHelper.generateTempFile(this.getClass(), name.getMethodName(), ".kryo");
-        try {
-            graph.io(gryo).writeGraph(f.getAbsolutePath());
-
-            final Configuration configuration = graphProvider.newGraphConfiguration("readGraph", this.getClass(), name.getMethodName(), LoadGraphWith.GraphData.MODERN);
-            final Graph g1 = graphProvider.openTestGraph(configuration);
-            g1.io(gryo).readGraph(f.getAbsolutePath());
-
-            // by making this lossy for float it will assert floats for doubles
-            assertModernGraph(g1, true, false);
-
-            // need to manually close the "g1" instance
-            graphProvider.clear(g1, configuration);
-        } catch (Exception ex) {
-            f.delete();
-            throw ex;
-        }
-    }
-
-    @Test
-    @LoadGraphWith(LoadGraphWith.GraphData.CREW)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_USER_SUPPLIED_IDS)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_NUMERIC_IDS)
-    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
-    public void shouldReadWriteCrewToGryo() throws Exception {
-        try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
-
-            final GryoWriter writer = graph.io(gryo).writer().create();
-            writer.writeGraph(os, graph);
-
-            final Configuration configuration = graphProvider.newGraphConfiguration("readGraph", this.getClass(), name.getMethodName(), LoadGraphWith.GraphData.CREW);
-            graphProvider.clear(configuration);
-            final Graph g1 = graphProvider.openTestGraph(configuration);
-            final GryoReader reader = GryoReader.build()
-                    .mapper(graph.io(gryo).mapper().create()).create();
-            try (final ByteArrayInputStream bais = new ByteArrayInputStream(os.toByteArray())) {
-                reader.readGraph(bais, g1);
-            }
-
-            // by making this lossy for float it will assert floats for doubles
-            assertCrewGraph(g1, false);
-
-            // need to manually close the "g1" instance
-            graphProvider.clear(g1, configuration);
-        }
-    }
-
-
-    @Test
-    @LoadGraphWith(LoadGraphWith.GraphData.CLASSIC)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_USER_SUPPLIED_IDS)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_NUMERIC_IDS)
-    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
-    public void shouldReadWriteClassicToGryo() throws Exception {
-        try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
-            final GryoWriter writer = graph.io(gryo).writer().create();
-            writer.writeGraph(os, graph);
-
-            final Configuration configuration = graphProvider.newGraphConfiguration("readGraph", this.getClass(), name.getMethodName(), LoadGraphWith.GraphData.CLASSIC);
-            graphProvider.clear(configuration);
-            final Graph g1 = graphProvider.openTestGraph(configuration);
-            final GryoReader reader = graph.io(gryo).reader().create();
-            try (final ByteArrayInputStream bais = new ByteArrayInputStream(os.toByteArray())) {
-                reader.readGraph(bais, g1);
-            }
-
-            assertClassicGraph(g1, false, false);
-
-            // need to manually close the "g1" instance
-            graphProvider.clear(g1, configuration);
-        }
-    }
-
-    @Test
-    @LoadGraphWith(LoadGraphWith.GraphData.CLASSIC)
-    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
-    public void shouldReadWriteClassicToGraphSON() throws Exception {
-        try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
-            final GraphSONWriter writer = graph.io(graphson).writer().create();
-            writer.writeGraph(os, graph);
-
-            final Configuration configuration = graphProvider.newGraphConfiguration("readGraph", this.getClass(), name.getMethodName(), LoadGraphWith.GraphData.CLASSIC);
-            graphProvider.clear(configuration);
-            final Graph g1 = graphProvider.openTestGraph(configuration);
-            final GraphSONReader reader = graph.io(graphson).reader().create();
-            try (final ByteArrayInputStream bais = new ByteArrayInputStream(os.toByteArray())) {
-                reader.readGraph(bais, g1);
-            }
-
-            assertClassicGraph(g1, true, false);
-
-            // need to manually close the "g1" instance
-            graphProvider.clear(g1, configuration);
-        }
-    }
-
-    @Test
-    @LoadGraphWith(LoadGraphWith.GraphData.MODERN)
-    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
-    public void shouldReadWriteModernToGraphSON() throws Exception {
-        try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
-            final GraphSONWriter writer = graph.io(graphson).writer().create();
-            writer.writeGraph(os, graph);
-
-            final Configuration configuration = graphProvider.newGraphConfiguration("readGraph", this.getClass(), name.getMethodName(), LoadGraphWith.GraphData.MODERN);
-            graphProvider.clear(configuration);
-            final Graph g1 = graphProvider.openTestGraph(configuration);
-            final GraphSONReader reader = graph.io(graphson).reader().create();
-            try (final ByteArrayInputStream bais = new ByteArrayInputStream(os.toByteArray())) {
-                reader.readGraph(bais, g1);
-            }
-
-            assertModernGraph(g1, true, false);
-
-            // need to manually close the "g1" instance
-            graphProvider.clear(g1, configuration);
-        }
-    }
-
-    @Test
-    @LoadGraphWith(LoadGraphWith.GraphData.MODERN)
-    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
-    public void shouldReadWriteModernToGraphSONWithHelpers() throws Exception {
-        final File f = TestHelper.generateTempFile(this.getClass(), name.getMethodName(), ".json");
-        try {
-            graph.io(graphson).writeGraph(f.getAbsolutePath());
-
-            final Configuration configuration = graphProvider.newGraphConfiguration("readGraph", this.getClass(), name.getMethodName(), LoadGraphWith.GraphData.MODERN);
-            graphProvider.clear(configuration);
-            final Graph g1 = graphProvider.openTestGraph(configuration);
-            g1.io(graphson).readGraph(f.getAbsolutePath());
-
-            assertModernGraph(g1, true, false);
-
-            // need to manually close the "g1" instance
-            graphProvider.clear(g1, configuration);
-        } catch (Exception ex) {
-            f.delete();
-            throw ex;
-        }
-    }
-
-    @Test
-    @LoadGraphWith(LoadGraphWith.GraphData.CREW)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_USER_SUPPLIED_IDS)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_NUMERIC_IDS)
-    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
-    public void shouldReadWriteCrewToGraphSON() throws Exception {
-        try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
-            final GraphSONWriter writer = graph.io(graphson).writer().create();
-            writer.writeGraph(os, graph);
-
-            final Configuration configuration = graphProvider.newGraphConfiguration("readGraph", this.getClass(), name.getMethodName(), LoadGraphWith.GraphData.CREW);
-            graphProvider.clear(configuration);
-            final Graph g1 = graphProvider.openTestGraph(configuration);
-            final GraphSONReader reader = graph.io(graphson).reader().create();
-            try (final ByteArrayInputStream bais = new ByteArrayInputStream(os.toByteArray())) {
-                reader.readGraph(bais, g1);
-            }
-
-            assertCrewGraph(g1, true);
-
-            // need to manually close the "g1" instance
-            graphProvider.clear(g1, configuration);
-        }
-    }
-
-    @Test
-    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
-    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_FLOAT_VALUES)
-    public void shouldReadWriteEdgeToGryoUsingFloatProperty() throws Exception {
-        final Vertex v1 = graph.addVertex(T.label, "person");
-        final Vertex v2 = graph.addVertex(T.label, "person");
-        final Edge e = v1.addEdge("friend", v2, "weight", 0.5f, "acl", "rw");
-
-        try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
-            final GryoWriter writer = graph.io(gryo).writer().create();
-            writer.writeEdge(os, e);
-
-            final AtomicBoolean called = new AtomicBoolean(false);
-            final GryoReader reader = graph.io(gryo).reader().create();
-            try (final ByteArrayInputStream bais = new ByteArrayInputStream(os.toByteArray())) {
-                reader.readEdge(bais, edge -> {
-                    final Edge detachedEdge = (Edge) edge;
-                    assertEquals(e.id(), detachedEdge.id());
-                    assertEquals(v1.id(), detachedEdge.outVertex().id());
-                    assertEquals(v2.id(), detachedEdge.inVertex().id());
-                    assertEquals(v1.label(), detachedEdge.outVertex().label());
-                    assertEquals(v2.label(), detachedEdge.inVertex().label());
-                    assertEquals(e.label(), detachedEdge.label());
-                    assertEquals(0.5f, detachedEdge.properties("weight").next().value());
-                    assertEquals("rw", detachedEdge.properties("acl").next().value());
-
-                    called.set(true);
-
-                    return null;
-                });
-            }
-
-            assertTrue(called.get());
-        }
-    }
-
-    @Test
-    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
-    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_DOUBLE_VALUES)
-    public void shouldReadWriteEdgeToGryo() throws Exception {
-        final Vertex v1 = graph.addVertex(T.label, "person");
-        final Vertex v2 = graph.addVertex(T.label, "person");
-        final Edge e = v1.addEdge("friend", v2, "weight", 0.5d, "acl", "rw");
-
-        try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
-            final GryoWriter writer = graph.io(gryo).writer().create();
-            writer.writeEdge(os, e);
-
-            final AtomicBoolean called = new AtomicBoolean(false);
-            final GryoReader reader = graph.io(gryo).reader().create();
-            try (final ByteArrayInputStream bais = new ByteArrayInputStream(os.toByteArray())) {
-                reader.readEdge(bais, edge -> {
-                    final Edge detachedEdge = (Edge) edge;
-                    assertEquals(e.id(), detachedEdge.id());
-                    assertEquals(v1.id(), detachedEdge.outVertex().id());
-                    assertEquals(v2.id(), detachedEdge.inVertex().id());
-                    assertEquals(v1.label(), detachedEdge.outVertex().label());
-                    assertEquals(v2.label(), detachedEdge.inVertex().label());
-                    assertEquals(e.label(), detachedEdge.label());
-                    assertEquals(0.5d, e.properties("weight").next().value());
-                    assertEquals("rw", e.properties("acl").next().value());
-                    called.set(true);
-                    return null;
-                });
-            }
-
-            assertTrue(called.get());
-        }
-    }
-
-    @Test
-    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
-    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_DOUBLE_VALUES)
-    public void shouldReadWriteDetachedEdgeAsReferenceToGryo() throws Exception {
-        final Vertex v1 = graph.addVertex(T.label, "person");
-        final Vertex v2 = graph.addVertex(T.label, "person");
-        final Edge e = DetachedFactory.detach(v1.addEdge("friend", v2, "weight", 0.5d, "acl", "rw"), false);
-
-        try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
-            final GryoWriter writer = graph.io(gryo).writer().create();
-            writer.writeEdge(os, e);
-
-            final AtomicBoolean called = new AtomicBoolean(false);
-            final GryoReader reader = graph.io(gryo).reader().create();
-            try (final ByteArrayInputStream bais = new ByteArrayInputStream(os.toByteArray())) {
-                reader.readEdge(bais, edge -> {
-                    final Edge detachedEdge = (Edge) edge;
-                    assertEquals(e.id(), detachedEdge.id());
-                    assertEquals(v1.id(), detachedEdge.outVertex().id());
-                    assertEquals(v2.id(), detachedEdge.inVertex().id());
-                    assertEquals(v1.label(), detachedEdge.outVertex().label());
-                    assertEquals(v2.label(), detachedEdge.inVertex().label());
-                    assertEquals(e.label(), detachedEdge.label());
-                    assertEquals(e.keys().size(), IteratorUtils.count(detachedEdge.properties()));
-                    called.set(true);
-
-                    return null;
-                });
-            }
-
-            assertTrue(called.get());
-        }
-    }
-
-    @Test
-    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
-    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_DOUBLE_VALUES)
-    public void shouldReadWriteDetachedEdgeToGryo() throws Exception {
-        final Vertex v1 = graph.addVertex(T.label, "person");
-        final Vertex v2 = graph.addVertex(T.label, "person");
-        final Edge e = DetachedFactory.detach(v1.addEdge("friend", v2, "weight", 0.5d, "acl", "rw"), true);
-
-        try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
-            final GryoWriter writer = graph.io(gryo).writer().create();
-            writer.writeEdge(os, e);
-
-            final AtomicBoolean called = new AtomicBoolean(false);
-            final GryoReader reader = graph.io(gryo).reader().create();
-            try (final ByteArrayInputStream bais = new ByteArrayInputStream(os.toByteArray())) {
-                reader.readEdge(bais, edge -> {
-                    final Edge detachedEdge = (Edge) edge;
-                    assertEquals(e.id(), detachedEdge.id());
-                    assertEquals(v1.id(), detachedEdge.outVertex().id());
-                    assertEquals(v2.id(), detachedEdge.inVertex().id());
-                    assertEquals(v1.label(), detachedEdge.outVertex().label());
-                    assertEquals(v2.label(), detachedEdge.inVertex().label());
-                    assertEquals(e.label(), detachedEdge.label());
-                    assertEquals(0.5d, detachedEdge.properties("weight").next().value());
-                    assertEquals("rw", detachedEdge.properties("acl").next().value());
-                    called.set(true);
-                    return null;
-                });
-            }
-
-            assertTrue(called.get());
-        }
-    }
-
-    @Test
-    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
-    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_FLOAT_VALUES)
-    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_DOUBLE_VALUES)
-    public void shouldReadWriteEdgeToGraphSON() throws Exception {
-        final Vertex v1 = graph.addVertex(T.label, "person");
-        final Vertex v2 = graph.addVertex(T.label, "person");
-        final Edge e = v1.addEdge("friend", v2, "weight", 0.5f, "acl", "rw");
-
-        try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
-            final GraphSONWriter writer = graph.io(graphson).writer().create();
-            writer.writeEdge(os, e);
-
-            final AtomicBoolean called = new AtomicBoolean(false);
-            final GraphSONReader reader = graph.io(graphson).reader().create();
-            try (final ByteArrayInputStream bais = new ByteArrayInputStream(os.toByteArray())) {
-                reader.readEdge(bais, edge -> {
-                    final Edge detachedEdge = (Edge) edge;
-                    assertEquals(e.id(), graph.edges(detachedEdge.id().toString()).next().id());
-                    assertEquals(v1.id(), graph.vertices(detachedEdge.outVertex().id().toString()).next().id());
-                    assertEquals(v2.id(), graph.vertices(detachedEdge.inVertex().id().toString()).next().id());
-                    assertEquals(v1.label(), detachedEdge.outVertex().label());
-                    assertEquals(v2.label(), detachedEdge.inVertex().label());
-                    assertEquals(e.label(), detachedEdge.label());
-                    assertEquals(0.5d, detachedEdge.properties("weight").next().value());
-                    assertEquals("rw", detachedEdge.properties("acl").next().value());
-                    called.set(true);
-                    return null;
-                });
-            }
-
-            assertTrue(called.get());
-        }
-    }
-
-    @Test
-    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
-    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_FLOAT_VALUES)
-    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_DOUBLE_VALUES)
-    public void shouldReadWriteDetachedEdgeAsReferenceToGraphSON() throws Exception {
-        final Vertex v1 = graph.addVertex(T.label, "person");
-        final Vertex v2 = graph.addVertex(T.label, "person");
-        final Edge e = DetachedFactory.detach(v1.addEdge("friend", v2, "weight", 0.5f, "acl", "rw"), false);
-
-        try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
-            final GraphSONWriter writer = graph.io(graphson).writer().create();
-            writer.writeEdge(os, e);
-
-            final AtomicBoolean called = new AtomicBoolean(false);
-            final GraphSONReader reader = graph.io(graphson).reader().create();
-            try (final ByteArrayInputStream bais = new ByteArrayInputStream(os.toByteArray())) {
-                reader.readEdge(bais, edge -> {
-                    final Edge detachedEdge = (Edge) edge;
-                    assertEquals(e.id(), graph.edges(detachedEdge.id().toString()).next().id());
-                    assertEquals(v1.id(), graph.vertices(detachedEdge.outVertex().id().toString()).next().id());
-                    assertEquals(v2.id(), graph.vertices(detachedEdge.inVertex().id().toString()).next().id());
-                    assertEquals(v1.label(), detachedEdge.outVertex().label());
-                    assertEquals(v2.label(), detachedEdge.inVertex().label());
-                    assertEquals(e.label(), detachedEdge.label());
-                    assertEquals(e.keys().size(), IteratorUtils.count(detachedEdge.properties()));
-                    called.set(true);
-                    return null;
-                });
-            }
-
-            assertTrue(called.get());
-        }
-    }
-
-    @Test
-    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
-    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_FLOAT_VALUES)
-    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_DOUBLE_VALUES)
-    public void shouldReadWriteDetachedEdgeToGraphSON() throws Exception {
-        final Vertex v1 = graph.addVertex(T.label, "person");
-        final Vertex v2 = graph.addVertex(T.label, "person");
-        final Edge e = DetachedFactory.detach(v1.addEdge("friend", v2, "weight", 0.5f, "acl", "rw"), true);
-
-        try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
-            final GraphSONWriter writer = graph.io(graphson).writer().create();
-            writer.writeEdge(os, e);
-
-            final AtomicBoolean called = new AtomicBoolean(false);
-            final GraphSONReader reader = graph.io(graphson).reader().create();
-            try (final ByteArrayInputStream bais = new ByteArrayInputStream(os.toByteArray())) {
-                reader.readEdge(bais, edge -> {
-                    final Edge detachedEdge = (Edge) edge;
-                    assertEquals(e.id(), graph.edges(detachedEdge.id().toString()).next().id());
-                    assertEquals(v1.id(), graph.vertices(detachedEdge.outVertex().id().toString()).next().id());
-                    assertEquals(v2.id(), graph.vertices(detachedEdge.inVertex().id().toString()).next().id());
-                    assertEquals(v1.label(), detachedEdge.outVertex().label());
-                    assertEquals(v2.label(), detachedEdge.inVertex().label());
-                    assertEquals(e.label(), detachedEdge.label());
-                    assertEquals(0.5d, detachedEdge.properties("weight").next().value());
-                    assertEquals("rw", detachedEdge.properties("acl").next().value());
-                    called.set(true);
-                    return null;
-                });
-            }
-
-            assertTrue(called.get());
-        }
-    }
-
-    @Test
-    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
-    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_FLOAT_VALUES)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_NUMERIC_IDS)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = FEATURE_USER_SUPPLIED_IDS)
-    public void shouldReadWriteEdgeToGraphSONNonLossy() throws Exception {
-        final Vertex v1 = graph.addVertex(T.id, 1l, T.label, "person");
-        final Vertex v2 = graph.addVertex(T.id, 2l, T.label, "person");
-        final Edge e = v1.addEdge("friend", v2, "weight", 0.5f, "acl", "rw");
-
-        try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
-            final GraphSONWriter writer = graph.io(graphson).writer().mapper(graph.io(graphson).mapper().embedTypes(true).create()).create();
-            writer.writeEdge(os, e);
-
-            final AtomicBoolean called = new AtomicBoolean(false);
-            final GraphSONReader reader = graph.io(graphson).reader().mapper(graph.io(graphson).mapper().embedTypes(true).create()).create();
-            try (final ByteArrayInputStream bais = new ByteArrayInputStream(os.toByteArray())) {
-                reader.readEdge(bais, edge -> {
-                    final Edge detachedEdge = (Edge) edge;
-                    assertEquals(e.id(), detachedEdge.id());
-                    assertEquals(v1.id(), detachedEdge.outVertex().id());
-                    assertEquals(v2.id(), detachedEdge.inVertex().id());
-                    assertEquals(v1.label(), detachedEdge.outVertex().label());
-                    assertEquals(v2.label(), detachedEdge.inVertex().label());
-                    assertEquals(e.label(), detachedEdge.label());
-                    assertEquals(0.5f, detachedEdge.properties("weight").next().value());
-                    assertEquals("rw", detachedEdge.properties("acl").next().value());
-                    called.set(true);
-
-                    return null;
-                });
-            }
-
-            assertTrue(called.get());
-        }
-    }
-
-    @Test
-    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
-    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_SERIALIZABLE_VALUES)
-    public void shouldSupportUUIDInGraphSON() throws Exception {
-        final UUID id = UUID.randomUUID();
-        final Vertex v1 = graph.addVertex(T.label, "person");
-        final Vertex v2 = graph.addVertex(T.label, "person");
-        final Edge e = v1.addEdge("friend", v2, "uuid", id);
-
-        try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
-            final GraphSONWriter writer = graph.io(graphson).writer().mapper(graph.io(graphson).mapper().embedTypes(true).create()).create();
-            writer.writeEdge(os, e);
-
-            final AtomicBoolean called = new AtomicBoolean(false);
-            final GraphSONReader reader = graph.io(graphson).reader().mapper(graph.io(graphson).mapper().embedTypes(true).create()).create();
-            try (final ByteArrayInputStream bais = new ByteArrayInputStream(os.toByteArray())) {
-                reader.readEdge(bais, edge -> {
-                    final Edge detachedEdge = (Edge) edge;
-                    // a quick reminder here that the purpose of these id assertions is to ensure that those with
-                    // complex ids that are not simply toString'd (i.e. are complex objects in JSON as well)
-                    // properly respond to filtering in Graph.edges/vertices
-                    assertEquals(e.id(), graph.edges(detachedEdge.id()).next().id());
-                    assertEquals(v1.id(), graph.vertices(detachedEdge.outVertex().id()).next().id());
-                    assertEquals(v2.id(), graph.vertices(detachedEdge.inVertex().id()).next().id());
-                    assertEquals(v1.label(), detachedEdge.outVertex().label());
-                    assertEquals(v2.label(), detachedEdge.inVertex().label());
-                    assertEquals(e.label(), detachedEdge.label());
-                    assertEquals(e.keys().size(), IteratorUtils.count(detachedEdge.properties()));
-                    assertEquals(id, detachedEdge.value("uuid"));
-
-                    called.set(true);
-
-                    return null;
-                });
-            }
-
-            assertTrue(called.get());
-        }
-    }
-
-    @Test
-    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
-    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_SERIALIZABLE_VALUES)
-    public void shouldSupportUUIDInGryo() throws Exception {
-        final UUID id = UUID.randomUUID();
-        final Vertex v1 = graph.addVertex(T.label, "person");
-        final Vertex v2 = graph.addVertex(T.label, "person");
-        final Edge e = v1.addEdge("friend", v2, "uuid", id);
-
-        try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
-            final GryoWriter writer = graph.io(gryo).writer().create();
-            writer.writeEdge(os, e);
-
-            final AtomicBoolean called = new AtomicBoolean(false);
-            final GryoReader reader = graph.io(gryo).reader().create();
-            try (final ByteArrayInputStream bais = new ByteArrayInputStream(os.toByteArray())) {
-                reader.readEdge(bais, edge -> {
-                    final Edge detachedEdge = (Edge) edge;
-                    assertEquals(e.id(), detachedEdge.id());
-                    assertEquals(v1.id(), detachedEdge.outVertex().id());
-                    assertEquals(v2.id(), detachedEdge.inVertex().id());
-                    assertEquals(v1.label(), detachedEdge.outVertex().label());
-                    assertEquals(v2.label(), detachedEdge.inVertex().label());
-                    assertEquals(e.label(), detachedEdge.label());
-                    assertEquals(e.keys().size(), IteratorUtils.count(detachedEdge.properties()));
-                    assertEquals(id, detachedEdge.value("uuid"));
-
-                    called.set(true);
-
-                    return null;
-                });
-            }
-
-            assertTrue(called.get());
-        }
-    }
-
-    @Test
-    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
-    @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_STRING_VALUES)
-    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_FLOAT_VALUES)
-    public void shouldReadWriteVertexNoEdgesToGryoUsingFloatProperty() throws Exception {
-        final Vertex v1 = graph.addVertex("name", "marko", "acl", "rw");
-
-        final Vertex v2 = graph.addVertex();
-        v1.addEdge("friends", v2, "weight", 0.5f);
-
-        try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
-            final GryoWriter writer = graph.io(gryo).writer().create();
-            writer.writeVertex(os, v1);
-
-            final AtomicBoolean called = new AtomicBoolean(false);
-            final GryoReader reader = graph.io(gryo).reader().create();
-            try (final ByteArrayInputStream bais = new ByteArrayInputStream(os.toByteArray())) {
-                reader.readVertex(bais, attachable -> {
-                    final Vertex detachedVertex = attachable.get();
-                    assertEquals(v1.id(), detachedVertex.id());
-                    assertEquals(v1.label(), detachedVertex.label());
-                    assertEquals(2, IteratorUtils.count(detachedVertex.properties()));
-                    assertEquals(v1.value("name"), detachedVertex.value("name").toString());
-                    assertEquals(v1.value("acl"), detachedVertex.value("acl").toString());
-                    called.set(true);
-                    return mock(Vertex.class);
-                });
-            }
-            assertTrue(called.get());
-        }
-    }
-
-    @Test
-    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
-    @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_STRING_VALUES)
-    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_DOUBLE_VALUES)
-    public void shouldReadWriteVertexNoEdgesToGryo() throws Exception {
-        final Vertex v1 = graph.addVertex("name", "marko", "acl", "rw");
-        final Vertex v2 = graph.addVertex();
-        v1.addEdge("friends", v2, "weight", 0.5d);
-
-        try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
-            final GryoWriter writer = graph.io(gryo).writer().create();
-            writer.writeVertex(os, v1);
-
-            final AtomicBoolean called = new AtomicBoolean(false);
-            final GryoReader reader = graph.io(gryo).reader().create();
-            try (final ByteArrayInputStream bais = new ByteArrayInputStream(os.toByteArray())) {
-                reader.readVertex(bais, attachable -> {
-                    final Vertex detachedVertex = attachable.get();
-                    assertEquals(v1.id(), detachedVertex.id());
-                    assertEquals(v1.label(), detachedVertex.label());
-                    assertEquals(2, IteratorUtils.count(detachedVertex.properties()));
-                    assertEquals(v1.value("name"), detachedVertex.value("name").toString());
-                    assertEquals(v1.value("acl"), detachedVertex.value("acl").toString());
-                    called.set(true);
-                    return mock(Vertex.class);
-                });
-            }
-            assertTrue(called.get());
-        }
-    }
-
-    @Test
-    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
-    @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_STRING_VALUES)
-    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_DOUBLE_VALUES)
-    public void shouldReadWriteDetachedVertexNoEdgesToGryo() throws Exception {
-        final Vertex v1 = graph.addVertex("name", "marko", "acl", "rw");
-        final Vertex v2 = graph.addVertex();
-        v1.addEdge("friends", v2, "weight", 0.5d);
-
-        try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
-            final GryoWriter writer = graph.io(gryo).writer().create();
-            final DetachedVertex dv = DetachedFactory.detach(v1, true);
-            writer.writeVertex(os, dv);
-
-            final AtomicBoolean called = new AtomicBoolean(false);
-            final GryoReader reader = graph.io(gryo).reader().create();
-            try (final ByteArrayInputStream bais = new ByteArrayInputStream(os.toByteArray())) {
-                reader.readVertex(bais, attachable -> {
-                    final Vertex detachedVertex = attachable.get();
-                    assertEquals(v1.id(), detachedVertex.id());
-                    assertEquals(v1.label(), detachedVertex.label());
-                    assertEquals(2, IteratorUtils.count(detachedVertex.properties()));
-                    assertEquals("marko", detachedVertex.properties("name").next().value());
-                    assertEquals("rw", detachedVertex.properties("acl").next().value());
-                    called.set(true);
-                    return mock(Vertex.class);
-                });
-            }
-            assertTrue(called.get());
-        }
-    }
-
-    @Test
-    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
-    @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_STRING_VALUES)
-    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_DOUBLE_VALUES)
-    public void shouldReadWriteDetachedVertexAsReferenceNoEdgesToGryo() throws Exception {
-        final Vertex v1 = graph.addVertex("name", "marko", "acl", "rw");
-        final Vertex v2 = graph.addVertex();
-        v1.addEdge("friends", v2, "weight", 0.5d);
-
-        try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
-            final GryoWriter writer = graph.io(gryo).writer().create();
-            final DetachedVertex dv = DetachedFactory.detach(v1, false);
-            writer.writeVertex(os, dv);
-
-            final AtomicBoolean called = new AtomicBoolean(false);
-            final GryoReader reader = graph.io(gryo).reader().create();
-            try (final ByteArrayInputStream bais = new ByteArrayInputStream(os.toByteArray())) {
-                reader.readVertex(bais, attachable -> {
-                    final Vertex detachedVertex = attachable.get();
-                    assertEquals(v1.id(), detachedVertex.id());
-                    assertEquals(v1.label(), detachedVertex.label());
-                    assertEquals(0, IteratorUtils.count(detachedVertex.properties()));
-                    called.set(true);
-                    return mock(Vertex.class);
-                });
-            }
-            assertTrue(called.get());
-        }
-    }
-
-    @Test
-    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
-    @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_STRING_VALUES)
-    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_DOUBLE_VALUES)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_MULTI_PROPERTIES)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_META_PROPERTIES)
-    public void shouldReadWriteVertexMultiPropsNoEdgesToGryo() throws Exception {
-        final Vertex v1 = graph.addVertex("name", "marko", "name", "mark", "acl", "rw");
-        v1.property(VertexProperty.Cardinality.single, "propsSquared", 123, "x", "a", "y", "b");
-        final Vertex v2 = graph.addVertex();
-        v1.addEdge("friends", v2, "weight", 0.5d);
-
-        try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
-            final GryoWriter writer = graph.io(gryo).writer().create();
-            writer.writeVertex(os, v1);
-
-            final AtomicBoolean called = new AtomicBoolean(false);
-            final GryoReader reader = graph.io(gryo).reader().create();
-            try (final ByteArrayInputStream bais = new ByteArrayInputStream(os.toByteArray())) {
-                reader.readVertex(bais, attachable -> {
-                    final Vertex detachedVertex = attachable.get();
-                    assertEquals(v1.id(), detachedVertex.id());
-                    assertEquals(v1.label(), detachedVertex.label());
-                    assertEquals(4, IteratorUtils.count(detachedVertex.properties()));
-                    assertEquals("a", detachedVertex.property("propsSquared").value("x"));
-                    assertEquals("b", detachedVertex.property("propsSquared").value("y"));
-                    assertEquals(2, IteratorUtils.count(detachedVertex.properties("name")));
-                    assertTrue(StreamFactory.stream(detachedVertex.properties("name")).allMatch(p -> p.key().equals("name") && (p.value().equals("marko") || p.value().equals("mark"))));
-                    assertEquals(v1.value("acl"), detachedVertex.value("acl").toString());
-                    called.set(true);
-                    return mock(Vertex.class);
-                });
-            }
-            assertTrue(called.get());
-        }
-    }
-
-    @Test
-    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
-    @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_STRING_VALUES)
-    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_FLOAT_VALUES)
-    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_DOUBLE_VALUES)
-    public void shouldReadWriteVertexNoEdgesToGraphSON() throws Exception {
-        final Vertex v1 = graph.addVertex("name", "marko", "acl", "rw");
-        final Vertex v2 = graph.addVertex();
-        v1.addEdge("friends", v2, "weight", 0.5f);
-
-        try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
-            final GraphSONWriter writer = graph.io(graphson).writer().create();
-            writer.writeVertex(os, v1);
-
-            final AtomicBoolean called = new AtomicBoolean(false);
-            final GraphSONReader reader = graph.io(graphson).reader().create();
-            try (final ByteArrayInputStream bais = new ByteArrayInputStream(os.toByteArray())) {
-                reader.readVertex(bais, attachable -> {
-                    final Vertex detachedVertex = attachable.get();
-                    assertEquals(v1.id(), graph.vertices(detachedVertex.id().toString()).next().id());
-                    assertEquals(v1.label(), detachedVertex.label());
-                    assertEquals(2, IteratorUtils.count(detachedVertex.properties()));
-                    assertEquals("marko", detachedVertex.properties("name").next().value());
-                    assertEquals("rw", detachedVertex.properties("acl").next().value());
-                    called.set(true);
-                    return detachedVertex;
-                });
-            }
-
-            assertTrue(called.get());
-        }
-    }
-
-    @Test
-    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
-    @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_STRING_VALUES)
-    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_FLOAT_VALUES)
-    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_DOUBLE_VALUES)
-    public void shouldReadWriteDetachedVertexNoEdgesToGraphSON() throws Exception {
-        final Vertex v1 = graph.addVertex("name", "marko", "acl", "rw");
-        final Vertex v2 = graph.addVertex();
-        v1.addEdge("friends", v2, "weight", 0.5f);
-
-        try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
-            final GraphSONWriter writer = graph.io(graphson).writer().create();
-            final DetachedVertex dv = DetachedFactory.detach(v1, true);
-            writer.writeVertex(os, dv);
-
-            final AtomicBoolean called = new AtomicBoolean(false);
-            final GraphSONReader reader = graph.io(graphson).reader().create();
-            try (final ByteArrayInputStream bais = new ByteArrayInputStream(os.toByteArray())) {
-                reader.readVertex(bais, attachable -> {
-                    final Vertex detachedVertex = attachable.get();
-                    assertEquals(v1.id(), graph.vertices(detachedVertex.id().toString()).next().id());
-                    assertEquals(v1.label(), detachedVertex.label());
-                    assertEquals(2, IteratorUtils.count(detachedVertex.properties()));
-                    assertEquals("marko", detachedVertex.properties("name").next().value());
-                    assertEquals("rw", detachedVertex.properties("acl").next().value());
-                    called.set(true);
-                    return detachedVertex;
-                });
-            }
-
-            assertTrue(called.get());
-        }
-    }
-
-    @Test
-    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
-    @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_STRING_VALUES)
-    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_FLOAT_VALUES)
-    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_DOUBLE_VALUES)
-    public void shouldReadWriteDetachedVertexAsReferenceNoEdgesToGraphSON() throws Exception {
-        final Vertex v1 = graph.addVertex("name", "marko", "acl", "rw");
-        final Vertex v2 = graph.addVertex();
-        v1.addEdge("friends", v2, "weight", 0.5f);
-
-        try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
-            final GraphSONWriter writer = graph.io(graphson).writer().create();
-            final DetachedVertex dv = DetachedFactory.detach(v1, false);
-            writer.writeVertex(os, dv);
-
-            final AtomicBoolean called = new AtomicBoolean(false);
-            final GraphSONReader reader = graph.io(graphson).reader().create();
-            try (final ByteArrayInputStream bais = new ByteArrayInputStream(os.toByteArray())) {
-                reader.readVertex(bais, attachable -> {
-                    final Vertex detachedVertex = attachable.get();
-                    assertEquals(v1.id(), graph.vertices(detachedVertex.id().toString()).next().id());
-                    assertEquals(v1.label(), detachedVertex.label());
-                    assertEquals(0, IteratorUtils.count(detachedVertex.properties()));
-
-                    called.set(true);
-                    return detachedVertex;
-                });
-            }
-
-            assertTrue(called.get());
-        }
-    }
-
-    @Test
-    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
-    @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_STRING_VALUES)
-    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_DOUBLE_VALUES)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_MULTI_PROPERTIES)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_META_PROPERTIES)
-    public void shouldReadWriteVertexMultiPropsNoEdgesToGraphSON() throws Exception {
-        final Vertex v1 = graph.addVertex("name", "marko", "name", "mark", "acl", "rw");
-        v1.property(VertexProperty.Cardinality.single, "propsSquared", 123, "x", "a", "y", "b");
-        final Vertex v2 = graph.addVertex();
-        v1.addEdge("friends", v2, "weight", 0.5d);
-
-        try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
-            final GraphSONWriter writer = graph.io(graphson).writer().create();
-            writer.writeVertex(os, v1);
-
-            final AtomicBoolean called = new AtomicBoolean(false);
-            final GraphSONReader reader = graph.io(graphson).reader().create();
-            try (final ByteArrayInputStream bais = new ByteArrayInputStream(os.toByteArray())) {
-                reader.readVertex(bais, attachable -> {
-                    final Vertex detachedVertex = attachable.get();
-                    assertEquals(v1.id(), graph.vertices(detachedVertex.id().toString()).next().id());
-                    assertEquals(v1.label(), detachedVertex.label());
-                    assertEquals(4, IteratorUtils.count(detachedVertex.properties()));
-                    assertEquals("a", detachedVertex.property("propsSquared").value("x"));
-                    assertEquals("b", detachedVertex.property("propsSquared").value("y"));
-                    assertEquals(2, IteratorUtils.count(detachedVertex.properties("name")));
-                    assertTrue(StreamFactory.stream(detachedVertex.properties("name")).allMatch(p -> p.key().equals("name") && (p.value().equals("marko") || p.value().equals("mark"))));
-                    assertEquals(v1.value("acl"), detachedVertex.value("acl").toString());
-                    called.set(true);
-                    return mock(Vertex.class);
-                });
-            }
-            assertTrue(called.get());
-        }
-    }
-
-    @Test
-    @LoadGraphWith(LoadGraphWith.GraphData.CLASSIC)
-    public void shouldReadWriteVerticesNoEdgesToGryoManual() throws Exception {
-        try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
-            final GryoWriter writer = graph.io(gryo).writer().create();
-            writer.writeVertices(os, g.V().has("age", P.gt(30)));
-
-            final AtomicInteger called = new AtomicInteger(0);
-            final GryoReader reader = graph.io(gryo).reader().create();
-            try (final VertexByteArrayInputStream vbais = new VertexByteArrayInputStream(new ByteArrayInputStream(os.toByteArray()))) {
-                final byte[] y = vbais.readVertexBytes().toByteArray();
-                reader.readVertex(new ByteArrayInputStream(y),
-                        attachable -> {
-                            final Vertex detachedVertex = attachable.get();
-                            called.incrementAndGet();
-                            return detachedVertex;
-                        });
-
-                final byte[] z = vbais.readVertexBytes().toByteArray();
-                reader.readVertex(new ByteArrayInputStream(z),
-                        attachable -> {
-                            final Vertex detachedVertex = attachable.get();
-                            called.incrementAndGet();
-                            return detachedVertex;
-                        });
-            }
-
-            assertEquals(2, called.get());
-        }
-    }
-
-    @Test
-    @LoadGraphWith(LoadGraphWith.GraphData.MODERN)
-    public void shouldReadWriteVerticesNoEdgesToGryo() throws Exception {
-        try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
-            final GryoWriter writer = graph.io(gryo).writer().create();
-            writer.writeVertices(os, g.V().has("age", P.gt(30)));
-
-            final AtomicInteger called = new AtomicInteger(0);
-            final GryoReader reader = graph.io(gryo).reader().create();
-
-            try (final ByteArrayInputStream bais = new ByteArrayInputStream(os.toByteArray())) {
-                final Iterator<Vertex> itty = reader.readVertices(bais,
-                        attachable -> {
-                            final Vertex detachedVertex = attachable.get();
-                            called.incrementAndGet();
-                            return detachedVertex;
-                        }, null, null);
-
-                assertNotNull(itty.next());
-                assertNotNull(itty.next());
-                assertFalse(itty.hasNext());
-            }
-
-            assertEquals(2, called.get());
-        }
-    }
-
-    @Test
-    @LoadGraphWith(LoadGraphWith.GraphData.MODERN)
-    public void shouldReadWriteVerticesNoEdgesToGraphSON() throws Exception {
-        try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
-            final GraphSONWriter writer = graph.io(graphson).writer().create();
-            writer.writeVertices(os, g.V().has("age", P.gt(30)));
-
-            final AtomicInteger called = new AtomicInteger(0);
-            final GraphSONReader reader = graph.io(graphson).reader().create();
-
-            try (final ByteArrayInputStream bais = new ByteArrayInputStream(os.toByteArray())) {
-                final Iterator<Vertex> itty = reader.readVertices(bais,
-                        attachable -> {
-                            final Vertex detachedVertex = attachable.get();
-                            called.incrementAndGet();
-                            return detachedVertex;
-                        }, null, null);
-
-                assertNotNull(itty.next());
-                assertNotNull(itty.next());
-                assertFalse(itty.hasNext());
-            }
-
-            assertEquals(2, called.get());
-        }
-    }
-
-    @Test
-    @LoadGraphWith(LoadGraphWith.GraphData.CLASSIC)
-    public void shouldReadWriteVerticesNoEdgesToGraphSONManual() throws Exception {
-        try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
-            final GraphSONWriter writer = graph.io(graphson).writer().create();
-            writer.writeVertices(os, g.V().has("age", P.gt(30)));
-
-            final AtomicInteger called = new AtomicInteger(0);
-            final GraphSONReader reader = graph.io(graphson).reader().create();
-            final BufferedReader br = new BufferedReader(new InputStreamReader(new ByteArrayInputStream(os.toByteArray())));
-            String line = br.readLine();
-            reader.readVertex(new ByteArrayInputStream(line.getBytes()),
-                    attachable -> {
-                        called.incrementAndGet();
-                        return mock(Vertex.class);
-                    });
-
-            line = br.readLine();
-            reader.readVertex(new ByteArrayInputStream(line.getBytes()),
-                    detachedVertex -> {
-                        called.incrementAndGet();
-                        return mock(Vertex.class);
-                    });
-
-            assertEquals(2, called.get());
-        }
-    }
-
-
-    @Test
-    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
-    @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_STRING_VALUES)
-    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_DOUBLE_VALUES)
-    public void shouldReadWriteVertexWithOUTEdgesToGryo() throws Exception {
-        final Vertex v1 = graph.addVertex("name", "marko", T.label, "person");
-
-        final Vertex v2 = graph.addVertex(T.label, "person");
-        final Edge e = v1.addEdge("friends", v2, "weight", 0.5d);
-
-        try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
-            final GryoWriter writer = graph.io(gryo).writer().create();
-            writer.writeVertex(os, v1, Direction.OUT);
-
-            final AtomicBoolean calledVertex = new AtomicBoolean(false);
-            final AtomicBoolean calledEdge = new AtomicBoolean(false);
-            final GryoReader reader = graph.io(gryo).reader().create();
-
-            try (final ByteArrayInputStream bais = new ByteArrayInputStream(os.toByteArray())) {
-                reader.readVertex(bais, attachable -> {
-                            final Vertex detachedVertex = attachable.get();
-                            TestHelper.validateVertexEquality(v1, detachedVertex, true);
-                            calledVertex.set(true);
-                            return detachedVertex;
-                        },
-                        attachable -> {
-                            final Edge detachedEdge = attachable.get();
-                            TestHelper.validateEdgeEquality(e, detachedEdge);
-                            calledEdge.set(true);
-
-                            return detachedEdge;
-                        }, Direction.OUT);
-            }
-
-            assertTrue(calledVertex.get());
-            assertTrue(calledEdge.get());
-        }
-    }
-
-    @Test
-    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
-    @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_STRING_VALUES)
-    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_FLOAT_VALUES)
-    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_DOUBLE_VALUES)
-    public void shouldReadWriteVertexWithOUTEdgesToGraphSON() throws Exception {
-        final Vertex v1 = graph.addVertex("name", "marko", T.label, "person");
-        final Vertex v2 = graph.addVertex(T.label, "person");
-        final Edge e = v1.addEdge("friends", v2, "weight", 0.5f);
-
-        try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
-            final GraphSONWriter writer = graph.io(graphson).writer().create();
-            writer.writeVertex(os, v1, Direction.OUT);
-
-            final AtomicBoolean calledVertex = new AtomicBoolean(false);
-            final AtomicBoolean calledEdge = new AtomicBoolean(false);
-            final GraphSONReader reader = graph.io(graphson).reader().create();
-            try (final ByteArrayInputStream bais = new ByteArrayInputStream(os.toByteArray())) {
-                reader.readVertex(bais, attachable -> {
-                    final Vertex detachedVertex = attachable.get();
-                    assertEquals(v1.id(), graph.vertices(detachedVertex.id().toString()).next().id());
-                    assertEquals(v1.label(), detachedVertex.label());
-                    assertEquals(1, IteratorUtils.count(detachedVertex.properties()));
-                    assertEquals("marko", detachedVertex.value("name"));
-                    calledVertex.set(true);
-                    return null;
-                }, attachable -> {
-                    final Edge detachedEdge = attachable.get();
-                    assertEquals(e.id(), graph.edges(detachedEdge.id().toString()).next().id());
-                    assertEquals(v1.id(), graph.vertices(detachedEdge.outVertex().id().toString()).next().id());
-                    assertEquals(v2.id(), graph.vertices(detachedEdge.inVertex().id().toString()).next().id());
-                    assertEquals(v1.label(), detachedEdge.outVertex().label());
-                    assertEquals(e.label(), detachedEdge.label());
-                    assertEquals(1, IteratorUtils.count(detachedEdge.properties()));
-                    assertEquals(0.5d, detachedEdge.value("weight"), 0.000001d);                      // lossy
-
-                    calledEdge.set(true);
-                    return null;
-                }, Direction.OUT);
-            }
-
-            assertTrue(calledVertex.get());
-            assertTrue(calledEdge.get());
-        }
-    }
-
-    @Test
-    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
-    @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_STRING_VALUES)
-    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_DOUBLE_VALUES)
-    public void shouldReadWriteVertexWithINEdgesToGryo() throws Exception {
-        final Vertex v1 = graph.addVertex("name", "marko", T.label, "person");
-
-        final Vertex v2 = graph.addVertex(T.label, "person");
-        final Edge e = v2.addEdge("friends", v1, "weight", 0.5d);
-
-        try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
-            final GryoWriter writer = graph.io(gryo).writer().create();
-            writer.writeVertex(os, v1, Direction.IN);
-
-            final AtomicBoolean calledVertex = new AtomicBoolean(false);
-            final AtomicBoolean calledEdge = new AtomicBoolean(false);
-
-            final GryoReader reader = graph.io(gryo).reader().create();
-            try (final ByteArrayInputStream bais = new ByteArrayInputStream(os.toByteArray())) {
-                reader.readVertex(bais, attachable -> {
-                    final Vertex detachedVertex = attachable.get();
-                    TestHelper.validateVertexEquality(v1, detachedVertex, true);
-                    calledVertex.set(true);
-                    return detachedVertex;
-                }, attachable -> {
-                    final Edge detachedEdge = attachable.get();
-                    TestHelper.validateEdgeEquality(e, detachedEdge);
-                    calledEdge.set(true);
-
-                    return detachedEdge;
-                }, Direction.IN);
-            }
-
-            assertTrue(calledVertex.get());
-            assertTrue(calledEdge.get());
-        }
-    }
-
-    @Test
-    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
-    @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_STRING_VALUES)
-    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_FLOAT_VALUES)
-    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_DOUBLE_VALUES)
-    public void shouldReadWriteVertexWithINEdgesToGraphSON() throws Exception {
-        final Vertex v1 = graph.addVertex("name", "marko", T.label, "person");
-        final Vertex v2 = graph.addVertex(T.label, "person");
-        final Edge e = v2.addEdge("friends", v1, "weight", 0.5f);
-
-        try (final ByteArrayOutputStream os = new ByteArrayOutp

<TRUNCATED>


[48/50] [abbrv] incubator-tinkerpop git commit: Adjust profiler config runner.

Posted by dk...@apache.org.
Adjust profiler config runner.


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

Branch: refs/heads/TINKERPOP3-666
Commit: 7df5baf0742aa3f55ed9bea6609cddb86c68b2db
Parents: 2a5fa04
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Mon May 11 06:22:28 2015 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon May 11 06:22:28 2015 -0400

----------------------------------------------------------------------
 .../tinkerpop/gremlin/driver/util/ConfigurationEvaluator.java    | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/7df5baf0/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/util/ConfigurationEvaluator.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/util/ConfigurationEvaluator.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/util/ConfigurationEvaluator.java
index 33304b1..084f71a 100644
--- a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/util/ConfigurationEvaluator.java
+++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/util/ConfigurationEvaluator.java
@@ -41,7 +41,7 @@ public class ConfigurationEvaluator {
     private final List<Integer> parallelismSizeRange = Arrays.asList(1,2,4,8,16);
 
     public Stream<String[]> generate(final String [] args) throws Exception {
-        final Set<Set<Integer>> configsTried = new HashSet<>();
+        final Set<String> configsTried = new HashSet<>();
 
         // get ready for the some serious brute-force action here
         for (int ir = 0; ir < nioPoolSizeRange.size(); ir++) {
@@ -57,7 +57,7 @@ public class ConfigurationEvaluator {
                                                     && minInProcessPerConnectionRange.get(iu) <= maxInProcessPerConnectionRange.get(iv)
                                                     && minSimultaneousUsagePerConnectionRange.get(iy) <= maxSimultaneousUsagePerConnectionRange.get(iz)
                                                     && maxSimultaneousUsagePerConnectionRange.get(iz) <= maxInProcessPerConnectionRange.get(iv)) {
-                                                final Set s = new HashSet(Arrays.asList(it, iu, iv, iw, ix, iy, iz));
+                                                final String s = String.join(",", String.valueOf(ir), String.valueOf(is), String.valueOf(it), String.valueOf(iu), String.valueOf(iv), String.valueOf(iw), String.valueOf(ix), String.valueOf(iy), String.valueOf(iz));
                                                 if (!configsTried.contains(s)) {
                                                     final Object[] argsToProfiler =
                                                             Stream.of("nioPoolSize", nioPoolSizeRange.get(ir).toString(),


[36/50] [abbrv] incubator-tinkerpop git commit: Fix report header.

Posted by dk...@apache.org.
Fix report header.


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

Branch: refs/heads/TINKERPOP3-666
Commit: 125f9bbbe551769145c62fc9c11490d10346e8f2
Parents: b4a1c8d
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Sat May 9 06:19:21 2015 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Sat May 9 06:19:21 2015 -0400

----------------------------------------------------------------------
 .../apache/tinkerpop/gremlin/driver/util/ProfilingApplication.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/125f9bbb/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/util/ProfilingApplication.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/util/ProfilingApplication.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/util/ProfilingApplication.java
index 462e442..bd7efd2 100644
--- a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/util/ProfilingApplication.java
+++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/util/ProfilingApplication.java
@@ -135,7 +135,7 @@ public class ProfilingApplication {
             final File f = null == fileName ? null : new File(fileName.toString());
             if (f != null && f.length() == 0) {
                 try (final PrintWriter writer = new PrintWriter(new BufferedWriter(new FileWriter(f, true)))) {
-                    writer.println("parallelism\nioPoolSize\tminConnectionPoolSize\tmaxConnectionPoolSize\tminSimultaneousUsagePerConnection\tmaxSimultaneousUsagePerConnection\tminInProcessPerConnection\tmaxInProcessPerConnection\tworkerPoolSize\trequestPerSecond");
+                    writer.println("parallelism\tnioPoolSize\tminConnectionPoolSize\tmaxConnectionPoolSize\tminSimultaneousUsagePerConnection\tmaxSimultaneousUsagePerConnection\tminInProcessPerConnection\tmaxInProcessPerConnection\tworkerPoolSize\trequestPerSecond");
                 }
             }
 


[04/50] [abbrv] incubator-tinkerpop git commit: Added structure "integration" tests to the test suite.

Posted by dk...@apache.org.
Added structure "integration" tests to the test suite.


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

Branch: refs/heads/TINKERPOP3-666
Commit: 330363ab61a00264fe1534204f8b64c5ff900c23
Parents: 665ce51
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri May 8 07:59:42 2015 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri May 8 07:59:42 2015 -0400

----------------------------------------------------------------------
 .../tinkerpop/gremlin/structure/Graph.java      |   1 +
 .../structure/StructureIntegrateSuite.java      |  52 +++++++++
 .../gremlin/structure/io/IoIntegrateTest.java   | 107 +++++++++++++++++++
 .../tinkergraph/structure/TinkerGraph.java      |   1 +
 .../TinkerGraphStructureIntegrateTest.java      |  36 +++++++
 5 files changed, 197 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/330363ab/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Graph.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Graph.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Graph.java
index 6765524..1b514cc 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Graph.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Graph.java
@@ -1014,6 +1014,7 @@ public interface Graph extends AutoCloseable, Host {
     @Inherited
     public @interface OptIn {
         public static String SUITE_STRUCTURE_STANDARD = "org.apache.tinkerpop.gremlin.structure.StructureStandardSuite";
+        public static String SUITE_STRUCTURE_INTEGRATE = "org.apache.tinkerpop.gremlin.structure.StructureIntegrateSuite";
         public static String SUITE_STRUCTURE_PERFORMANCE = "org.apache.tinkerpop.gremlin.structure.StructurePerformanceSuite";
         public static String SUITE_PROCESS_COMPUTER = "org.apache.tinkerpop.gremlin.process.ProcessComputerSuite";
         public static String SUITE_PROCESS_STANDARD = "org.apache.tinkerpop.gremlin.process.ProcessStandardSuite";

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/330363ab/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/StructureIntegrateSuite.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/StructureIntegrateSuite.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/StructureIntegrateSuite.java
new file mode 100644
index 0000000..e071f4a
--- /dev/null
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/StructureIntegrateSuite.java
@@ -0,0 +1,52 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.structure;
+
+import org.apache.tinkerpop.gremlin.AbstractGremlinSuite;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
+import org.apache.tinkerpop.gremlin.structure.io.IoIntegrateTest;
+import org.junit.runners.model.InitializationError;
+import org.junit.runners.model.RunnerBuilder;
+
+/**
+ * The {@code StructureIntegrationSuite} is a JUnit test runner that executes the Gremlin Test Suite over a
+ * {@link Graph} implementation. This suite contains "long-run" tests that enforce various behaviors and
+ * expectations of a vendor implementation of {@link Graph}. Its usage is optional to vendors as the tests are
+ * somewhat redundant to those found elsewhere in other required test suites.
+ * <p/>
+ * For more information on the usage of this suite, please see {@link StructureStandardSuite}.
+ *
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+public class StructureIntegrateSuite extends AbstractGremlinSuite {
+
+    /**
+     * This list of tests in the suite that will be executed.  Gremlin developers should add to this list
+     * as needed to enforce tests upon implementations.
+     */
+    private static final Class<?>[] allTests = new Class<?>[]{
+            IoIntegrateTest.class
+    };
+
+    public StructureIntegrateSuite(final Class<?> klass, final RunnerBuilder builder) throws InitializationError {
+        super(klass, builder, allTests, null, false, TraversalEngine.Type.STANDARD);
+    }
+
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/330363ab/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/IoIntegrateTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/IoIntegrateTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/IoIntegrateTest.java
new file mode 100644
index 0000000..0026e67
--- /dev/null
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/IoIntegrateTest.java
@@ -0,0 +1,107 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.structure.io;
+
+import org.apache.tinkerpop.gremlin.AbstractGremlinTest;
+import org.apache.tinkerpop.gremlin.FeatureRequirement;
+import org.apache.tinkerpop.gremlin.TestHelper;
+import org.apache.tinkerpop.gremlin.structure.Direction;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.apache.tinkerpop.gremlin.structure.VertexProperty;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoWriter;
+import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedFactory;
+import org.apache.tinkerpop.gremlin.structure.util.star.StarGraph;
+import org.javatuples.Pair;
+import org.junit.Test;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.util.Random;
+import java.util.UUID;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+public class IoIntegrateTest extends AbstractGremlinTest {
+    @Test
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_PROPERTY)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_META_PROPERTIES)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_MULTI_PROPERTIES)
+    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
+    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_PROPERTY)
+    public void shouldHaveSizeOfStarGraphLessThanDetached() throws Exception {
+        final Random random = new Random(95746498l);
+        final Vertex vertex = graph.addVertex("person");
+        for (int i = 0; i < 100; i++) { // vertex properties and meta properties
+            vertex.property(VertexProperty.Cardinality.list, UUID.randomUUID().toString(), random.nextDouble(),
+                    "acl", random.nextBoolean() ? "public" : "private",
+                    "created", random.nextLong());
+        }
+        for (int i = 0; i < 50000; i++) {  // edges and edge properties
+            vertex.addEdge("knows", graph.addVertex("person"), "since", random.nextLong(), "acl", random.nextBoolean() ? "public" : "private");
+            graph.addVertex("software").addEdge("createdBy", vertex, "date", random.nextLong());
+            graph.addVertex("group").addEdge("hasMember", vertex);
+        }
+        ///////////////
+        Pair<StarGraph, Integer> pair = serializeDeserialize(StarGraph.of(vertex));
+        int starGraphSize = pair.getValue1();
+        TestHelper.validateEquality(vertex, pair.getValue0().getStarVertex());
+        ///
+        pair = serializeDeserialize(pair.getValue0());
+        assertEquals(starGraphSize, pair.getValue1().intValue());
+        starGraphSize = pair.getValue1();
+        TestHelper.validateEquality(vertex, pair.getValue0().getStarVertex());
+        ///
+        pair = serializeDeserialize(pair.getValue0());
+        assertEquals(starGraphSize, pair.getValue1().intValue());
+        starGraphSize = pair.getValue1();
+        TestHelper.validateEquality(vertex, pair.getValue0().getStarVertex());
+        ///
+        // this is a rough approximation of "detached" serialization of all vertices and edges.
+        // now that writeVertex in gryo writes StarGraph that approach can't be used anymore to test
+        // serialization size of detached.
+        final ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+        final GryoWriter writer = graph.io(IoCore.gryo()).writer().create();
+        writer.writeObject(outputStream, DetachedFactory.detach(vertex, true));
+        vertex.edges(Direction.BOTH).forEachRemaining(e -> writer.writeObject(outputStream, DetachedFactory.detach(e, true)));
+        final int detachedVertexSize = outputStream.size();
+        assertTrue(starGraphSize < detachedVertexSize);
+
+        System.out.println("Size of star graph:        " + starGraphSize);
+        System.out.println("Size of detached vertex:   " + detachedVertexSize);
+        System.out.println("Size reduction:            " + (float) detachedVertexSize / (float) starGraphSize);
+    }
+
+    private Pair<StarGraph, Integer> serializeDeserialize(final StarGraph starGraph) {
+        final ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+        try {
+            graph.io(IoCore.gryo()).writer().create().writeObject(outputStream, starGraph);
+            return Pair.with(graph.io(IoCore.gryo()).reader().create().readObject(new ByteArrayInputStream(outputStream.toByteArray()), StarGraph.class), outputStream.size());
+        } catch (IOException ioe) {
+            throw new RuntimeException(ioe);
+        }
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/330363ab/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraph.java
----------------------------------------------------------------------
diff --git a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraph.java b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraph.java
index e9058a8..cfe7f73 100644
--- a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraph.java
+++ b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraph.java
@@ -53,6 +53,7 @@ import java.util.stream.Stream;
  * @author Stephen Mallette (http://stephen.genoprime.com)
  */
 @Graph.OptIn(Graph.OptIn.SUITE_STRUCTURE_STANDARD)
+@Graph.OptIn(Graph.OptIn.SUITE_STRUCTURE_INTEGRATE)
 @Graph.OptIn(Graph.OptIn.SUITE_STRUCTURE_PERFORMANCE)
 @Graph.OptIn(Graph.OptIn.SUITE_PROCESS_STANDARD)
 @Graph.OptIn(Graph.OptIn.SUITE_PROCESS_COMPUTER)

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/330363ab/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphStructureIntegrateTest.java
----------------------------------------------------------------------
diff --git a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphStructureIntegrateTest.java b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphStructureIntegrateTest.java
new file mode 100644
index 0000000..04d93e0
--- /dev/null
+++ b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphStructureIntegrateTest.java
@@ -0,0 +1,36 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.tinkergraph.structure;
+
+import org.apache.tinkerpop.gremlin.structure.StructureIntegrateSuite;
+import org.apache.tinkerpop.gremlin.structure.StructurePerformanceSuite;
+import org.apache.tinkerpop.gremlin.structure.StructureStandardSuite;
+import org.apache.tinkerpop.gremlin.tinkergraph.TinkerGraphProvider;
+import org.junit.runner.RunWith;
+
+/**
+ * Executes the Gremlin Structure Performance Test Suite using TinkerGraph.
+ *
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+@RunWith(StructureIntegrateSuite.class)
+@StructureIntegrateSuite.GraphProviderClass(provider = TinkerGraphProvider.class, graph = TinkerGraph.class)
+public class TinkerGraphStructureIntegrateTest {
+
+}
\ No newline at end of file


[42/50] [abbrv] incubator-tinkerpop git commit: GroovyComputerTestHelper is now general to gremlin-core/process/util. Renamed to TraversalScriptHelper and it will determine from the Source and Script whether its a STANDARD or COMPUTER traversal. Neat. Mo

Posted by dk...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/97e46779/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySideEffectTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySideEffectTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySideEffectTest.groovy
index dc610e4..f26b95f 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySideEffectTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySideEffectTest.groovy
@@ -18,7 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect
 
-import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
@@ -31,7 +31,7 @@ public abstract class GroovySideEffectTest {
 
         @Override
         public Traversal<Vertex, String> get_g_VX1X_sideEffectXstore_aX_name(final Object v1Id) {
-            GroovyTestHelper.compute("""g.withSideEffect('a') { [] }.V(v1Id).sideEffect {
+            TraversalScriptHelper.compute("""g.withSideEffect('a') { [] }.V(v1Id).sideEffect {
                 it.sideEffects('a').clear();
                 it.sideEffects('a').add(it.get());
             }.name""", g, "v1Id", v1Id)
@@ -39,7 +39,7 @@ public abstract class GroovySideEffectTest {
 
         @Override
         public Traversal<Vertex, String> get_g_VX1X_out_sideEffectXincr_cX_name(final Object v1Id) {
-            GroovyTestHelper.compute("""g.withSideEffect('c') { [0] }.V(v1Id).out.sideEffect {
+            TraversalScriptHelper.compute("""g.withSideEffect('c') { [0] }.V(v1Id).out.sideEffect {
                 temp = it.sideEffects('c')[0];
                 it.sideEffects('c').clear();
                 it.sideEffects('c').add(temp + 1);
@@ -48,7 +48,7 @@ public abstract class GroovySideEffectTest {
 
         @Override
         public Traversal<Vertex, String> get_g_VX1X_out_sideEffectXX_name(final Object v1Id) {
-            GroovyTestHelper.compute("g.V(v1Id).out().sideEffect {}.name", g, "v1Id", v1Id)
+            TraversalScriptHelper.compute("g.V(v1Id).out().sideEffect {}.name", g, "v1Id", v1Id)
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/97e46779/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyStoreTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyStoreTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyStoreTest.groovy
index d0e5b43..808593b 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyStoreTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyStoreTest.groovy
@@ -18,7 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect
 
-import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
@@ -31,23 +31,23 @@ public abstract class GroovyStoreTest {
 
         @Override
         public Traversal<Vertex, Collection> get_g_V_storeXaX_byXnameX_out_capXaX() {
-            GroovyTestHelper.compute("g.V().store('a').by('name').out().cap('a')", g)
+            TraversalScriptHelper.compute("g.V().store('a').by('name').out().cap('a')", g)
         }
 
         @Override
         public Traversal<Vertex, Collection> get_g_VX1X_storeXaX_byXnameX_out_storeXaX_byXnameX_name_capXaX(
                 final Object v1Id) {
-            GroovyTestHelper.compute("g.V(${v1Id}).store('a').by('name').out().store('a').by('name').name.cap('a')", g)
+            TraversalScriptHelper.compute("g.V(${v1Id}).store('a').by('name').out().store('a').by('name').name.cap('a')", g)
         }
 
         @Override
         public Traversal<Vertex, Set<String>> get_g_V_withSideEffectXa_setX_both_name_storeXaX_capXaX() {
-            GroovyTestHelper.compute("g.withSideEffect('a'){[] as Set}.V.both.name.store('a').cap('a')", g);
+            TraversalScriptHelper.compute("g.withSideEffect('a'){[] as Set}.V.both.name.store('a').cap('a')", g);
         }
 
         @Override
         public Traversal<Vertex, Collection> get_g_V_storeXaX_byXoutEXcreatedX_countX_out_out_storeXaX_byXinEXcreatedX_weight_sumX_capXaX() {
-            GroovyTestHelper.compute("g.V.store('a').by(__.outE('created').count).out.out.store('a').by(__.inE('created').weight.sum).cap('a')", g);
+            TraversalScriptHelper.compute("g.V.store('a').by(__.outE('created').count).out.out.store('a').by(__.inE('created').weight.sum).cap('a')", g);
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/97e46779/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySubgraphTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySubgraphTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySubgraphTest.groovy
index 5b3d801..1918b00 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySubgraphTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySubgraphTest.groovy
@@ -18,7 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect
 
-import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
 import org.apache.tinkerpop.gremlin.structure.Graph
 import org.apache.tinkerpop.gremlin.structure.Vertex
@@ -33,13 +33,13 @@ public abstract class GroovySubgraphTest {
         @Override
         public Traversal<Vertex, Graph> get_g_V_withSideEffectXsgX_outEXknowsX_subgraphXsgX_name_capXsgX(
                 final Object v1Id, final Graph subgraph) {
-            GroovyTestHelper.compute("g.withSideEffect('sg') { subgraph }.V(v1Id).outE('knows').subgraph('sg').name.cap('sg')", g, "v1Id", v1Id, "subgraph", subgraph)
+            TraversalScriptHelper.compute("g.withSideEffect('sg') { subgraph }.V(v1Id).outE('knows').subgraph('sg').name.cap('sg')", g, "v1Id", v1Id, "subgraph", subgraph)
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_withSideEffectXsgX_repeatXbothEXcreatedX_subgraphXsgX_outVX_timesX5X_name_dedup(
                 final Graph subgraph) {
-            GroovyTestHelper.compute("g.withSideEffect('sg') { subgraph }.V.repeat(__.bothE('created').subgraph('sg').outV).times(5).name.dedup", g, "subgraph", subgraph)
+            TraversalScriptHelper.compute("g.withSideEffect('sg') { subgraph }.V.repeat(__.bothE('created').subgraph('sg').outV).times(5).name.dedup", g, "subgraph", subgraph)
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/97e46779/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyTreeTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyTreeTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyTreeTest.groovy
index b5ae25d..1e771e2 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyTreeTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyTreeTest.groovy
@@ -18,7 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect
 
-import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.Tree
 import org.apache.tinkerpop.gremlin.structure.Vertex
@@ -32,32 +32,32 @@ public abstract class GroovyTreeTest {
 
         @Override
         public Traversal<Vertex, Tree> get_g_V_out_out_tree_byXidX() {
-            GroovyTestHelper.compute("g.V.out.out.tree.by(id)", g)
+            TraversalScriptHelper.compute("g.V.out.out.tree.by(id)", g)
         }
 
         @Override
         public Traversal<Vertex, Tree> get_g_V_out_out_treeXaX_byXidX_capXaX() {
-            GroovyTestHelper.compute("g.V.out.out.tree('a').by(id).cap('a')", g)
+            TraversalScriptHelper.compute("g.V.out.out.tree('a').by(id).cap('a')", g)
         }
 
         @Override
         public Traversal<Vertex, Tree> get_g_V_out_out_tree() {
-            GroovyTestHelper.compute("g.V.out.out.tree()", g)
+            TraversalScriptHelper.compute("g.V.out.out.tree()", g)
         }
 
         @Override
         public Traversal<Vertex, Tree> get_g_V_out_out_treeXaX_capXaX() {
-            GroovyTestHelper.compute("g.V.out.out.tree('a').cap('a')", g)
+            TraversalScriptHelper.compute("g.V.out.out.tree('a').cap('a')", g)
         }
 
         @Override
         public Traversal<Vertex, Tree> get_g_VX1X_out_out_treeXaX_byXnameX_both_both_capXaX(final Object v1Id) {
-            GroovyTestHelper.compute("g.V(v1Id).out.out.tree('a').by('name').both.both.cap('a')", g, "v1Id", v1Id)
+            TraversalScriptHelper.compute("g.V(v1Id).out.out.tree('a').by('name').both.both.cap('a')", g, "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Tree> get_g_VX1X_out_out_tree_byXnameX(final Object v1Id) {
-            GroovyTestHelper.compute("g.V(v1Id).out.out.tree.by('name')", g, "v1Id", v1Id)
+            TraversalScriptHelper.compute("g.V(v1Id).out.out.tree.by('name')", g, "v1Id", v1Id)
         }
 
     }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/97e46779/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/process/computer/util/ScriptEngineLambdaTest.java
----------------------------------------------------------------------
diff --git a/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/process/computer/util/ScriptEngineLambdaTest.java b/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/process/computer/util/ScriptEngineLambdaTest.java
index 157f315..b0fb5de 100644
--- a/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/process/computer/util/ScriptEngineLambdaTest.java
+++ b/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/process/computer/util/ScriptEngineLambdaTest.java
@@ -18,6 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.process.computer.util;
 
+import org.apache.tinkerpop.gremlin.util.function.ScriptEngineLambda;
 import org.junit.AfterClass;
 import org.junit.Test;
 


[31/50] [abbrv] incubator-tinkerpop git commit: minor nothing -- removal of pointless null check.

Posted by dk...@apache.org.
minor nothing -- removal of pointless null check.


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

Branch: refs/heads/TINKERPOP3-666
Commit: 570d96a9278163fdc2ebb133045b977f747c81ab
Parents: 41f7816
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Fri May 8 15:29:59 2015 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Fri May 8 15:29:59 2015 -0600

----------------------------------------------------------------------
 .../gremlin/process/computer/util/ConfigurationTraversal.java      | 2 --
 1 file changed, 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/570d96a9/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/ConfigurationTraversal.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/ConfigurationTraversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/ConfigurationTraversal.java
index 0c1e999..9933ac9 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/ConfigurationTraversal.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/ConfigurationTraversal.java
@@ -45,8 +45,6 @@ public final class ConfigurationTraversal<S, E> implements Supplier<Traversal.Ad
     }
 
     public void storeState(final Configuration configuration) {
-        if (null == this.configTraversal)
-            throw new IllegalStateException("The " + ConfigurationTraversal.class.getSimpleName() + " does not have a configuration traversal");
         try {
             VertexProgramHelper.serialize(this.configTraversal, configuration, this.configKey);   // the traversal can not be serialized (probably because of lambdas). As such, try direct reference.
         } catch (final IllegalArgumentException e) {


[40/50] [abbrv] incubator-tinkerpop git commit: greatly simplified the groovy test suite. its all generated via strings and thus, no need for STANDARD and COMPUTER versions of the tests.

Posted by dk...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/abd23f4e/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyOrTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyOrTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyOrTest.groovy
index 1e711fe..7b0a014 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyOrTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyOrTest.groovy
@@ -18,48 +18,25 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.filter
 
-import org.apache.tinkerpop.gremlin.process.UseEngine
-import org.apache.tinkerpop.gremlin.process.computer.ComputerTestHelper
+import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine
-import org.apache.tinkerpop.gremlin.structure.T
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
-import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.has
-import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.outE
-import static org.apache.tinkerpop.gremlin.structure.P.gt
-import static org.apache.tinkerpop.gremlin.structure.P.gte;
-
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
 public abstract class GroovyOrTest {
 
-    @UseEngine(TraversalEngine.Type.STANDARD)
-    public static class StandardTraversals extends OrTest {
-
-        @Override
-        public Traversal<Vertex, String> get_g_V_orXhasXage_gt_27X__outE_count_gte_2X_name() {
-            g.V.or(has('age', gt(27)), outE().count.is(gte(2l))).name
-        }
-
-        @Override
-        public Traversal<Vertex, String> get_g_V_orXoutEXknowsX__hasXlabel_softwareX_or_hasXage_gte_35XX_name() {
-            g.V.or(outE('knows'), has(T.label, 'software') | has('age', gte(35))).name
-        }
-    }
-
-    @UseEngine(TraversalEngine.Type.COMPUTER)
-    public static class ComputerTraversals extends OrTest {
+    public static class Traversals extends OrTest {
 
         @Override
         public Traversal<Vertex, String> get_g_V_orXhasXage_gt_27X__outE_count_gte_2X_name() {
-            ComputerTestHelper.compute("g.V.or(has('age', gt(27)), outE().count.is(gte(2l))).name", g)
+            GroovyTestHelper.compute("g.V.or(has('age', gt(27)), outE().count.is(gte(2l))).name", g)
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_orXoutEXknowsX__hasXlabel_softwareX_or_hasXage_gte_35XX_name() {
-            ComputerTestHelper.compute("g.V.or(outE('knows'), has(T.label, 'software') | has('age', gte(35))).name", g)
+            GroovyTestHelper.compute("g.V.or(outE('knows'), has(T.label, 'software') | has('age', gte(35))).name", g)
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/abd23f4e/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyRangeTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyRangeTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyRangeTest.groovy
index c8611ea..d8f183f 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyRangeTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyRangeTest.groovy
@@ -18,143 +18,50 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.filter
 
-import org.apache.tinkerpop.gremlin.process.traversal.Scope
+import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine
-import org.apache.tinkerpop.gremlin.process.UseEngine
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__
 import org.apache.tinkerpop.gremlin.structure.Vertex
-import org.junit.Test
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
 public abstract class GroovyRangeTest {
 
-    @UseEngine(TraversalEngine.Type.STANDARD)
-    public static class StandardTraversals extends RangeTest {
+    public static class Traversals extends RangeTest {
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_out_limitX2X(final Object v1Id) {
-            g.V(v1Id).out.limit(2)
+            GroovyTestHelper.compute("g.V(v1Id).out.limit(2)", g, "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_localXoutE_limitX1X_inVX_limitX3X() {
-            g.V.local(__.outE.limit(3)).inV.limit(3)
+            GroovyTestHelper.compute("g.V.local(__.outE.limit(3)).inV.limit(3)", g)
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_outXknowsX_outEXcreatedX_rangeX0_1X_inV(final Object v1Id) {
-            g.V(v1Id).out('knows').outE('created')[0].inV()
+            GroovyTestHelper.compute("g.V(v1Id).out('knows').outE('created')[0].inV()", g, "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_outXknowsX_outXcreatedX_rangeX0_1X(final Object v1Id) {
-            g.V(v1Id).out('knows').out('created')[0]
+            GroovyTestHelper.compute("g.V(v1Id).out('knows').out('created')[0]", g, "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_outXcreatedX_inXcreatedX_rangeX1_3X(final Object v1Id) {
-            g.V(v1Id).out('created').in('created')[1..3]
+            GroovyTestHelper.compute("g.V(v1Id).out('created').in('created')[1..3]", g, "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_outXcreatedX_inEXcreatedX_rangeX1_3X_outV(final Object v1Id) {
-            g.V(v1Id).out('created').inE('created')[1..3].outV
+            GroovyTestHelper.compute("g.V(v1Id).out('created').inE('created')[1..3].outV", g, "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_repeatXbothX_timesX3X_rangeX5_11X() {
-            g.V().repeat(__.both).times(3)[5..11];
-        }
-    }
-
-    @UseEngine(TraversalEngine.Type.COMPUTER)
-    public static class ComputerTraversals extends RangeTest {
-
-        @Override
-        @Test
-        @org.junit.Ignore("Traversal not supported by ComputerTraversalEngine.computer")
-        public void g_VX1X_out_limitX2X() {
-        }
-
-        @Override
-        @Test
-        @org.junit.Ignore("Traversal not supported by ComputerTraversalEngine.computer")
-        public void g_V_localXoutE_limitX1X_inVX_limitX3X() {
-        }
-
-        @Override
-        @Test
-        @org.junit.Ignore("Traversal not supported by ComputerTraversalEngine.computer")
-        public void g_VX1X_outXknowsX_outEXcreatedX_rangeX0_1X_inV() {
-        }
-
-        @Override
-        @Test
-        @org.junit.Ignore("Traversal not supported by ComputerTraversalEngine.computer")
-        public void g_VX1X_outXknowsX_outXcreatedX_rangeX0_1X() {
-        }
-
-        @Override
-        @Test
-        @org.junit.Ignore("Traversal not supported by ComputerTraversalEngine.computer")
-        public void g_VX1X_outXcreatedX_inXcreatedX_rangeX1_3X() {
-        }
-
-        @Override
-        @Test
-        @org.junit.Ignore("Traversal not supported by ComputerTraversalEngine.computer")
-        public void g_VX1X_outXcreatedX_inEXcreatedX_rangeX1_3X_outV() {
-        }
-
-        @Override
-        @Test
-        @org.junit.Ignore("Traversal not supported by ComputerTraversalEngine.computer")
-        public void g_V_repeatXbothX_timesX3X_rangeX5_11X() {
-        }
-
-        @Override
-        Traversal<Vertex, Vertex> get_g_VX1X_out_limitX2X(Object v1Id) {
-            // override with nothing until the test itself is supported
-            return null
-        }
-
-        @Override
-        Traversal<Vertex, Vertex> get_g_V_localXoutE_limitX1X_inVX_limitX3X() {
-            // override with nothing until the test itself is supported
-            return null
-        }
-
-        @Override
-        Traversal<Vertex, Vertex> get_g_VX1X_outXknowsX_outEXcreatedX_rangeX0_1X_inV(Object v1Id) {
-            // override with nothing until the test itself is supported
-            return null
-        }
-
-        @Override
-        Traversal<Vertex, Vertex> get_g_VX1X_outXknowsX_outXcreatedX_rangeX0_1X(Object v1Id) {
-            // override with nothing until the test itself is supported
-            return null
-        }
-
-        @Override
-        Traversal<Vertex, Vertex> get_g_VX1X_outXcreatedX_inXcreatedX_rangeX1_3X(Object v1Id) {
-            // override with nothing until the test itself is supported
-            return null
-        }
-
-        @Override
-        Traversal<Vertex, Vertex> get_g_VX1X_outXcreatedX_inEXcreatedX_rangeX1_3X_outV(Object v1Id) {
-            // override with nothing until the test itself is supported
-            return null
-        }
-
-        @Override
-        Traversal<Vertex, Vertex> get_g_V_repeatXbothX_timesX3X_rangeX5_11X() {
-            // override with nothing until the test itself is supported
-            return null
+            GroovyTestHelper.compute("g.V().repeat(__.both).times(3)[5..11]", g)
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/abd23f4e/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyRetainTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyRetainTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyRetainTest.groovy
index 16308e3..4182840 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyRetainTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyRetainTest.groovy
@@ -18,10 +18,8 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.filter
 
-import org.apache.tinkerpop.gremlin.process.UseEngine
-import org.apache.tinkerpop.gremlin.process.computer.ComputerTestHelper
+import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
 /**
@@ -29,39 +27,20 @@ import org.apache.tinkerpop.gremlin.structure.Vertex
  */
 public abstract class GroovyRetainTest {
 
-    @UseEngine(TraversalEngine.Type.STANDARD)
-    public static class StandardTraversals extends RetainTest {
+    public static class Traversals extends RetainTest {
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_out_retainXg_v2X(final Object v1Id, final Object v2Id) {
-            g.V(v1Id).out.retain(g.V(v2Id).next())
+            GroovyTestHelper.compute("g.V(v1Id).out.retain(g.V(v2Id).next())", g, "v1Id", v1Id, "v2Id", v2Id);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_out_aggregateXxX_out_retainXxX(final Object v1Id) {
-            g.V(v1Id).out.aggregate('x').out.retain('x')
+            GroovyTestHelper.compute("g.V(v1Id).out.aggregate('x').out.retain('x')", g, "v1Id", v1Id);
         }
 
         @Override
         public Traversal<Vertex, String> get_g_VX1X_asXaX_outXcreatedX_inXcreatedX_retainXaX_name(final Object v1Id) {
-            g.V(v1Id).as('a').out('created').in('created').retain('a').name
-        }
-    }
-
-    @UseEngine(TraversalEngine.Type.COMPUTER)
-    public static class ComputerTraversals extends RetainTest {
-        @Override
-        public Traversal<Vertex, Vertex> get_g_VX1X_out_retainXg_v2X(final Object v1Id, final Object v2Id) {
-            ComputerTestHelper.compute("g.V(v1Id).out.retain(g.V(v2Id).next())", g, "v1Id", v1Id, "v2Id", v2Id);
-        }
-
-        @Override
-        public Traversal<Vertex, Vertex> get_g_VX1X_out_aggregateXxX_out_retainXxX(final Object v1Id) {
-            ComputerTestHelper.compute("g.V(v1Id).out.aggregate('x').out.retain('x')", g, "v1Id", v1Id);
-        }
-
-        @Override
-        public Traversal<Vertex, String> get_g_VX1X_asXaX_outXcreatedX_inXcreatedX_retainXaX_name(final Object v1Id) {
-            ComputerTestHelper.compute("g.V(v1Id).as('a').out('created').in('created').retain('a').name", g, "v1Id", v1Id);
+            GroovyTestHelper.compute("g.V(v1Id).as('a').out('created').in('created').retain('a').name", g, "v1Id", v1Id);
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/abd23f4e/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovySampleTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovySampleTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovySampleTest.groovy
index 77273e2..531fd40 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovySampleTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovySampleTest.groovy
@@ -18,7 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.filter
 
-import org.apache.tinkerpop.gremlin.process.computer.ComputerTestHelper
+import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Scope
 import org.apache.tinkerpop.gremlin.structure.T
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
@@ -37,77 +37,31 @@ import static __.sample
  */
 public abstract class GroovySampleTest {
 
-    @UseEngine(TraversalEngine.Type.STANDARD)
-    public static class StandardTraversals extends SampleTest {
+    public static class Traversals extends SampleTest {
 
         @Override
         public Traversal<Edge, Edge> get_g_E_sampleX1X() {
-            g.E.sample(1)
+            GroovyTestHelper.compute("g.E.sample(1)",g)
         }
 
         @Override
         public Traversal<Edge, Edge> get_g_E_sampleX2X_byXweightX() {
-            g.E.sample(2).by('weight')
+            GroovyTestHelper.compute("g.E.sample(2).by('weight')",g)
         }
 
         @Override
         public Traversal<Vertex, Edge> get_g_V_localXoutE_sampleX1X_byXweightXX() {
-            g.V.local(__.outE.sample(1).by('weight'))
+            GroovyTestHelper.compute("g.V.local(__.outE.sample(1).by('weight'))",g)
         }
 
         @Override
         Traversal<Vertex, Map<String, Collection<Double>>> get_g_V_group_byXlabelX_byXbothE_valuesXweightX_foldX_byXsampleXlocal_2XX() {
-            g.V().group().by(T.label).by(bothE().values('weight').fold()).by(sample(Scope.local, 2))
+            GroovyTestHelper.compute("g.V().group().by(T.label).by(bothE().values('weight').fold()).by(sample(local, 2))",g)
         }
 
         @Override
         Traversal<Vertex, Map<String, Collection<Double>>> get_g_V_group_byXlabelX_byXbothE_valuesXweightX_foldX_byXsampleXlocal_5XX() {
-            g.V().group().by(T.label).by(bothE().values('weight').fold()).by(sample(Scope.local, 5))
-        }
-    }
-
-    @UseEngine(TraversalEngine.Type.COMPUTER)
-    public static class ComputerTraversals extends SampleTest {
-
-        @Override
-        @Test
-        @org.junit.Ignore("Traversal not supported by ComputerTraversalEngine.computer")
-        public void g_E_sampleX1X() {
-            // TODO: makes no sense when its global
-        }
-
-        @Override
-        @Test
-        @org.junit.Ignore("Traversal not supported by ComputerTraversalEngine.computer")
-        public void g_E_sampleX2X_byXweightX() {
-            // TODO: makes no sense when its global
-        }
-
-        @Override
-        public Traversal<Vertex, Edge> get_g_V_localXoutE_sampleX1X_byXweightXX() {
-            ComputerTestHelper.compute("g.V.local(__.outE.sample(1).by('weight'))", g)
-        }
-
-        @Override
-        Traversal<Vertex, Map<String, Collection<Double>>> get_g_V_group_byXlabelX_byXbothE_valuesXweightX_foldX_byXsampleXlocal_2XX() {
-            ComputerTestHelper.compute("g.V().group().by(T.label).by(bothE().values('weight').fold()).by(sample(Scope.local, 2))", g)
-        }
-
-        @Override
-        Traversal<Vertex, Map<String, Collection<Double>>> get_g_V_group_byXlabelX_byXbothE_valuesXweightX_foldX_byXsampleXlocal_5XX() {
-            ComputerTestHelper.compute("g.V().group().by(T.label).by(bothE().values('weight').fold()).by(sample(Scope.local, 5))", g)
-        }
-
-        @Override
-        Traversal<Edge, Edge> get_g_E_sampleX1X() {
-            // override with nothing until the test itself is supported
-            return null
-        }
-
-        @Override
-        Traversal<Edge, Edge> get_g_E_sampleX2X_byXweightX() {
-            // override with nothing until the test itself is supported
-            return null
+            GroovyTestHelper.compute("g.V().group().by(T.label).by(bothE().values('weight').fold()).by(sample(local, 5))",g)
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/abd23f4e/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovySimplePathTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovySimplePathTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovySimplePathTest.groovy
index 4ef3635..74762ac 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovySimplePathTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovySimplePathTest.groovy
@@ -18,12 +18,9 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.filter
 
-import org.apache.tinkerpop.gremlin.process.UseEngine
-import org.apache.tinkerpop.gremlin.process.computer.ComputerTestHelper
+import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Path
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
 /**
@@ -31,31 +28,16 @@ import org.apache.tinkerpop.gremlin.structure.Vertex
  */
 public abstract class GroovySimplePathTest {
 
-    @UseEngine(TraversalEngine.Type.STANDARD)
-    public static class StandardTraversals extends SimplePathTest {
+    public static class Traversals extends SimplePathTest {
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_outXcreatedX_inXcreatedX_simplePath(final Object v1Id) {
-            g.V(v1Id).out('created').in('created').simplePath
+            GroovyTestHelper.compute("g.V(v1Id).out('created').in('created').simplePath", g, "v1Id", v1Id);
         }
 
         @Override
         public Traversal<Vertex, Path> get_g_V_repeatXboth_simplePathX_timesX3X_path() {
-            return g.V.repeat(__.both.simplePath).times(3).path()
-        }
-    }
-
-    @UseEngine(TraversalEngine.Type.COMPUTER)
-    public static class ComputerTraversals extends SimplePathTest {
-
-        @Override
-        public Traversal<Vertex, Vertex> get_g_VX1X_outXcreatedX_inXcreatedX_simplePath(final Object v1Id) {
-            ComputerTestHelper.compute("g.V(v1Id).out('created').in('created').simplePath", g, "v1Id", v1Id);
-        }
-
-        @Override
-        public Traversal<Vertex, Path> get_g_V_repeatXboth_simplePathX_timesX3X_path() {
-            ComputerTestHelper.compute("g.V.repeat(__.both.simplePath).times(3).path()", g);
+            GroovyTestHelper.compute("g.V.repeat(__.both.simplePath).times(3).path()", g);
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/abd23f4e/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyWhereTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyWhereTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyWhereTest.groovy
index 402a5df..6e6fad0 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyWhereTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyWhereTest.groovy
@@ -18,45 +18,37 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.filter
 
-import org.apache.tinkerpop.gremlin.process.UseEngine
-import org.apache.tinkerpop.gremlin.process.computer.ComputerTestHelper
+import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__
 import org.apache.tinkerpop.gremlin.structure.Vertex
-import org.junit.Test
-
-import static org.apache.tinkerpop.gremlin.structure.P.eq
-import static org.apache.tinkerpop.gremlin.structure.P.neq
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
 public abstract class GroovyWhereTest {
 
-    @UseEngine(TraversalEngine.Type.STANDARD)
-    public static class StandardTraversals extends WhereTest {
+    public static class Traversals extends WhereTest {
 
         /// where(local)
 
         @Override
         public Traversal<Vertex, Map<String, Object>> get_g_V_hasXageX_asXaX_out_in_hasXageX_asXbX_select_whereXa_eq_bX() {
-            g.V.has('age').as('a').out.in.has('age').as('b').select().where('a', eq('b'));
+            GroovyTestHelper.compute("g.V.has('age').as('a').out.in.has('age').as('b').select().where('a', eq('b'))", g)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Object>> get_g_V_hasXageX_asXaX_out_in_hasXageX_asXbX_select_whereXa_neq_bX() {
-            g.V.has('age').as('a').out.in.has('age').as('b').select().where('a', neq('b'));
+            GroovyTestHelper.compute("g.V.has('age').as('a').out.in.has('age').as('b').select().where('a', neq('b'))", g)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Object>> get_g_V_hasXageX_asXaX_out_in_hasXageX_asXbX_select_whereXb_hasXname_markoXX() {
-            g.V.has('age').as('a').out.in.has('age').as('b').select().where(__.as('b').has('name', 'marko'));
+            GroovyTestHelper.compute("g.V.has('age').as('a').out.in.has('age').as('b').select().where(__.as('b').has('name', 'marko'))", g)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Object>> get_g_V_hasXageX_asXaX_out_in_hasXageX_asXbX_select_whereXa_outXknowsX_bX() {
-            g.V().has('age').as('a').out.in.has('age').as('b').select().where(__.as('a').out('knows').as('b'));
+            GroovyTestHelper.compute("g.V().has('age').as('a').out.in.has('age').as('b').select().where(__.as('a').out('knows').as('b'))", g)
         }
 
         /// where(global)
@@ -64,60 +56,13 @@ public abstract class GroovyWhereTest {
         @Override
         public Traversal<Vertex, String> get_g_VX1X_asXaX_outXcreatedX_inXcreatedX_asXbX_whereXa_neq_bX_name(
                 final Object v1Id) {
-            g.V(v1Id).as('a').out('created').in('created').as('b').where('a', neq('b')).name
-        }
-
-        @Override
-        public Traversal<Vertex, Object> get_g_VX1X_asXaX_outXcreatedX_inXcreatedX_asXbX_whereXasXbX_outXcreatedX_hasXname_rippleXX_valuesXage_nameX(final Object v1Id) {
-             g.V(v1Id).as('a').out('created').in('created').as('b').where(__.as('b').out('created').has('name','ripple')).values('age','name');
+            GroovyTestHelper.compute("g.V(v1Id).as('a').out('created').in('created').as('b').where('a', neq('b')).name", g, "v1Id", v1Id)
         }
-    }
 
-    @UseEngine(TraversalEngine.Type.COMPUTER)
-    public static class ComputerTraversals extends WhereTest {
         @Override
-        public Traversal<Vertex, Map<String, Object>> get_g_V_hasXageX_asXaX_out_in_hasXageX_asXbX_select_whereXa_eq_bX() {
-            ComputerTestHelper.compute("g.V.has('age').as('a').out.in.has('age').as('b').select().where('a', eq('b'))", g);
-        }
-
-        @Override
-        public Traversal<Vertex, Map<String, Object>> get_g_V_hasXageX_asXaX_out_in_hasXageX_asXbX_select_whereXa_neq_bX() {
-            ComputerTestHelper.compute("g.V.has('age').as('a').out.in.has('age').as('b').select().where('a', neq('b'))", g);
-        }
-
-        @Override
-        @Test
-        @org.junit.Ignore("Traversal not supported by ComputerTraversalEngine.computer")
-        public void g_V_hasXageX_asXaX_out_in_hasXageX_asXbX_select_whereXb_hasXname_markoXX() {
-        }
-
-        @Override
-        @Test
-        @org.junit.Ignore("Traversal not supported by ComputerTraversalEngine.computer")
-        public void g_V_hasXageX_asXaX_out_in_hasXageX_asXbX_select_whereXa_outXknowsX_bX() {
-        }
-
-        @Override
-        Traversal<Vertex, Map<String, Object>> get_g_V_hasXageX_asXaX_out_in_hasXageX_asXbX_select_whereXb_hasXname_markoXX() {
-            // override with nothing until the test itself is supported
-            return null
-        }
-
-        @Override
-        Traversal<Vertex, Map<String, Object>> get_g_V_hasXageX_asXaX_out_in_hasXageX_asXbX_select_whereXa_outXknowsX_bX() {
-            // override with nothing until the test itself is supported
-            return null
-        }
-
-        @Override
-        public Traversal<Vertex, String> get_g_VX1X_asXaX_outXcreatedX_inXcreatedX_asXbX_whereXa_neq_bX_name(
+        public Traversal<Vertex, Object> get_g_VX1X_asXaX_outXcreatedX_inXcreatedX_asXbX_whereXasXbX_outXcreatedX_hasXname_rippleXX_valuesXage_nameX(
                 final Object v1Id) {
-            ComputerTestHelper.compute("g.V(v1Id).as('a').out('created').in('created').as('b').where('a', neq('b')).name ", g, "v1Id", v1Id);
-        }
-
-        @Override
-        public Traversal<Vertex, Object> get_g_VX1X_asXaX_outXcreatedX_inXcreatedX_asXbX_whereXasXbX_outXcreatedX_hasXname_rippleXX_valuesXage_nameX(final Object v1Id) {
-            return null;
+            GroovyTestHelper.compute("g.V(v1Id).as('a').out('created').in('created').as('b').where(__.as('b').out('created').has('name','ripple')).values('age','name')", g, "v1Id", v1Id)
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/abd23f4e/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyAddEdgeTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyAddEdgeTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyAddEdgeTest.groovy
index b1fd7cd..1c1b4c4 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyAddEdgeTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyAddEdgeTest.groovy
@@ -18,9 +18,8 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.map
 
+import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine
-import org.apache.tinkerpop.gremlin.process.UseEngine
 import org.apache.tinkerpop.gremlin.structure.Edge
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
@@ -29,23 +28,22 @@ import org.apache.tinkerpop.gremlin.structure.Vertex
  */
 public abstract class GroovyAddEdgeTest {
 
-    @UseEngine(TraversalEngine.Type.STANDARD)
-    public static class StandardTraversals extends AddEdgeTest {
+    public static class Traversals extends AddEdgeTest {
 
         @Override
         public Traversal<Vertex, Edge> get_g_VX1X_asXaX_outXcreatedX_addOutEXcreatedBy_aX(final Object v1Id) {
-            g.V(v1Id).as('a').out('created').addOutE('createdBy', 'a')
+            GroovyTestHelper.compute("g.V(v1Id).as('a').out('created').addOutE('createdBy', 'a')", g, "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Edge> get_g_VX1X_asXaX_outXcreatedX_addOutEXcreatedBy_a_weight_2X(
                 final Object v1Id) {
-            g.V(v1Id).as('a').out('created').addOutE('createdBy', 'a', 'weight', 2)
+            GroovyTestHelper.compute("g.V(v1Id).as('a').out('created').addOutE('createdBy', 'a', 'weight', 2)", g, "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Edge> get_g_V_addOutEXexistsWith__g_V__time_nowX() {
-            g.V.addOutE('existsWith', g.V, 'time', 'now');
+            GroovyTestHelper.compute("g.V.addOutE('existsWith', g.V, 'time', 'now')", g)
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/abd23f4e/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyAddVertexTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyAddVertexTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyAddVertexTest.groovy
index 53eb6ef..dc161f0 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyAddVertexTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyAddVertexTest.groovy
@@ -19,10 +19,8 @@
 
 package org.apache.tinkerpop.gremlin.process.traversal.step.map
 
-import org.apache.tinkerpop.gremlin.structure.T
+import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine
-import org.apache.tinkerpop.gremlin.process.UseEngine
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
 /**
@@ -30,17 +28,16 @@ import org.apache.tinkerpop.gremlin.structure.Vertex
  */
 public abstract class GroovyAddVertexTest {
 
-    @UseEngine(TraversalEngine.Type.STANDARD)
-    public static class StandardTraversals extends AddVertexTest {
+    public static class Traversals extends AddVertexTest {
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_addVXlabel_animal_age_0X() {
-            g.V.addV(T.label, 'animal', 'age', 0);
+            GroovyTestHelper.compute("g.V.addV(T.label, 'animal', 'age', 0)", g)
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_addVXlabel_person_name_stephenX() {
-            g.addV(T.label, 'person', 'name', 'stephen');
+            GroovyTestHelper.compute("g.addV(T.label, 'person', 'name', 'stephen')", g)
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/abd23f4e/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyCoalesceTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyCoalesceTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyCoalesceTest.groovy
index 56a450d..760c60a 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyCoalesceTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyCoalesceTest.groovy
@@ -18,17 +18,10 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.map
 
-import org.apache.tinkerpop.gremlin.process.UseEngine
-import org.apache.tinkerpop.gremlin.process.computer.ComputerTestHelper
+import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Path
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine
-import org.apache.tinkerpop.gremlin.structure.T
 import org.apache.tinkerpop.gremlin.structure.Vertex
-import org.junit.Test
-
-import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.out
-import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.outE
 
 /**
  *
@@ -36,68 +29,31 @@ import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.outE
  */
 public abstract class GroovyCoalesceTest {
 
-    @UseEngine(TraversalEngine.Type.STANDARD)
-    public static class StandardTraversals extends CoalesceTest {
+    public static class Traversals extends CoalesceTest {
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_coalesceXoutXfooX_outXbarXX() {
-            g.V().coalesce(out('foo'), out('bar'));
+            GroovyTestHelper.compute("g.V().coalesce(out('foo'), out('bar'))", g)
         }
 
         @Override
         public Traversal<Vertex, String> get_g_VX1X_coalesceXoutXknowsX_outXcreatedXX_valuesXnameX(final Object v1Id) {
-            g.V(v1Id).coalesce(out('knows'), out('created')).values('name');
+            GroovyTestHelper.compute("g.V(v1Id).coalesce(out('knows'), out('created')).values('name')", g, "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, String> get_g_VX1X_coalesceXoutXcreatedX_outXknowsXX_valuesXnameX(final Object v1Id) {
-            g.V(v1Id).coalesce(out('created'), out('knows')).values('name');
+            GroovyTestHelper.compute("g.V(v1Id).coalesce(out('created'), out('knows')).values('name')", g, "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Long>> get_g_V_coalesceXoutXlikesX_outXknowsX_inXcreatedXX_groupCount_byXnameX() {
-            g.V.coalesce(out('likes'), out('knows'), out('created')).groupCount().by('name');
-        }
-
-        @Override
-        public Traversal<Vertex, Path> get_g_V_coalesceXoutEXknowsX_outEXcreatedXX_otherV_path_byXnameX_byXlabelX() {
-            g.V.coalesce(outE('knows'), outE('created')).otherV.path.by('name').by(T.label);
-        }
-    }
-
-    @UseEngine(TraversalEngine.Type.COMPUTER)
-    public static class ComputerTraversals extends CoalesceTest {
-
-        @Override
-        public Traversal<Vertex, Vertex> get_g_V_coalesceXoutXfooX_outXbarXX() {
-            ComputerTestHelper.compute("g.V().coalesce(out('foo'), out('bar'))", g)
-        }
-
-        @Override
-        public Traversal<Vertex, String> get_g_VX1X_coalesceXoutXknowsX_outXcreatedXX_valuesXnameX(final Object v1Id) {
-            ComputerTestHelper.compute("g.V(v1Id).coalesce(out('knows'), out('created')).values('name')", g, "v1Id", v1Id)
-        }
-
-        @Override
-        public Traversal<Vertex, String> get_g_VX1X_coalesceXoutXcreatedX_outXknowsXX_valuesXnameX(final Object v1Id) {
-            ComputerTestHelper.compute("g.V(v1Id).coalesce(out('created'), out('knows')).values('name')", g, "v1Id", v1Id)
-        }
-
-        @Override
-        public Traversal<Vertex, Map<String, Long>> get_g_V_coalesceXoutXlikesX_outXknowsX_inXcreatedXX_groupCount_byXnameX() {
-            ComputerTestHelper.compute("g.V().coalesce(out('likes'), out('knows'), out('created')).groupCount().by('name')", g)
-        }
-
-        @Override
-        @Test
-        @org.junit.Ignore("Traversal not supported by ComputerTraversalEngine.computer")
-        public void g_V_coalesceXoutEXknowsX_outEXcreatedXX_otherV_path_byXnameX_byXlabelX() {
+            GroovyTestHelper.compute("g.V().coalesce(out('likes'), out('knows'), out('created')).groupCount().by('name')", g)
         }
 
         @Override
         Traversal<Vertex, Path> get_g_V_coalesceXoutEXknowsX_outEXcreatedXX_otherV_path_byXnameX_byXlabelX() {
-            // override with nothing until the test itself is supported
-            return null
+            GroovyTestHelper.compute("g.V.coalesce(outE('knows'), outE('created')).otherV.path.by('name').by(T.label)", g)
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/abd23f4e/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyCountTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyCountTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyCountTest.groovy
index c50605c..e0b5f9c 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyCountTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyCountTest.groovy
@@ -18,100 +18,49 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.map
 
-import org.apache.tinkerpop.gremlin.process.computer.ComputerTestHelper
-import org.apache.tinkerpop.gremlin.process.traversal.Scope
+import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine
-import org.apache.tinkerpop.gremlin.process.UseEngine
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__
 import org.apache.tinkerpop.gremlin.structure.Vertex
-import org.junit.Test
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
 public abstract class GroovyCountTest {
 
-    @UseEngine(TraversalEngine.Type.STANDARD)
-    public static class StandardTraversals extends CountTest {
+    public static class Traversals extends CountTest {
         @Override
         public Traversal<Vertex, Long> get_g_V_count() {
-            g.V.count()
+            GroovyTestHelper.compute("g.V.count()", g)
         }
 
         @Override
         public Traversal<Vertex, Long> get_g_V_out_count() {
-            g.V.out.count
+            GroovyTestHelper.compute("g.V.out.count", g)
         }
 
         @Override
         public Traversal<Vertex, Long> get_g_V_both_both_count() {
-            g.V.both.both.count()
+            GroovyTestHelper.compute("g.V.both.both.count()", g)
         }
 
         @Override
         public Traversal<Vertex, Long> get_g_V_repeatXoutX_timesX3X_count() {
-            g.V().repeat(__.out).times(3).count()
+            GroovyTestHelper.compute("g.V().repeat(__.out).times(3).count()", g);
         }
 
         @Override
         public Traversal<Vertex, Long> get_g_V_repeatXoutX_timesX8X_count() {
-            g.V.repeat(__.out).times(8).count()
+            GroovyTestHelper.compute("g.V.repeat(__.out).times(8).count()", g);
         }
 
         @Override
         public Traversal<Vertex, Long> get_g_V_hasXnoX_count() {
-            g.V.has('no').count
+            GroovyTestHelper.compute("g.V.has('no').count", g)
         }
 
         @Override
         public Traversal<Vertex, Long> get_g_V_fold_countXlocalX() {
-            return g.V.fold.count(Scope.local);
-        }
-    }
-
-    @UseEngine(TraversalEngine.Type.COMPUTER)
-    public static class ComputerTraversals extends CountTest {
-        @Override
-        public Traversal<Vertex, Long> get_g_V_count() {
-            ComputerTestHelper.compute("g.V.count()", g)
-        }
-
-        @Override
-        public Traversal<Vertex, Long> get_g_V_out_count() {
-            ComputerTestHelper.compute("g.V.out.count", g)
-        }
-
-        @Override
-        public Traversal<Vertex, Long> get_g_V_both_both_count() {
-            ComputerTestHelper.compute("g.V.both.both.count()", g)
-        }
-
-        @Override
-        public Traversal<Vertex, Long> get_g_V_repeatXoutX_timesX3X_count() {
-            ComputerTestHelper.compute("g.V().repeat(__.out).times(3).count()", g);
-        }
-
-        @Override
-        public Traversal<Vertex, Long> get_g_V_repeatXoutX_timesX8X_count() {
-            ComputerTestHelper.compute("g.V.repeat(__.out).times(8).count()", g);
-        }
-
-        @Override
-        public Traversal<Vertex, Long> get_g_V_hasXnoX_count() {
-            ComputerTestHelper.compute("g.V.has('no').count", g)
-        }
-
-        @Override
-        @Test
-        @org.junit.Ignore("Traversal not supported by ComputerTraversalEngine.computer")
-        public void g_V_fold_countXlocalX() {
-        }
-
-        @Override
-        Traversal<Vertex, Long> get_g_V_fold_countXlocalX() {
-            // override with nothing until the test itself is supported
-            return null
+            GroovyTestHelper.compute("g.V.fold.count(local)", g);
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/abd23f4e/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyFoldTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyFoldTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyFoldTest.groovy
index 6b8e9c7..ecbe53c 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyFoldTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyFoldTest.groovy
@@ -18,59 +18,29 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.map
 
-import org.apache.tinkerpop.gremlin.process.computer.ComputerTestHelper
+import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine
-import org.apache.tinkerpop.gremlin.process.UseEngine
 import org.apache.tinkerpop.gremlin.structure.Vertex
-import org.junit.Test
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
 public abstract class GroovyFoldTest {
 
-    @UseEngine(TraversalEngine.Type.STANDARD)
-    public static class StandardTraversals extends FoldTest {
+    public static class Traversals extends FoldTest {
         @Override
         public Traversal<Vertex, List<Vertex>> get_g_V_fold() {
-            g.V.fold
+            GroovyTestHelper.compute("g.V.fold", g)
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_fold_unfold() {
-            g.V.fold.unfold
+            GroovyTestHelper.compute("g.V.fold.unfold", g)
         }
 
         @Override
         public Traversal<Vertex, Integer> get_g_V_age_foldX0_plusX() {
-            g.V.age.fold(0) { seed, age -> seed + age };
-        }
-    }
-
-    @UseEngine(TraversalEngine.Type.COMPUTER)
-    public static class ComputerTraversals extends FoldTest {
-        @Override
-        public Traversal<Vertex, List<Vertex>> get_g_V_fold() {
-            ComputerTestHelper.compute("g.V.fold", g)
-        }
-
-        @Override
-        @Test
-        @org.junit.Ignore("Traversal not supported by ComputerTraversalEngine.computer")
-        public void g_V_fold_unfold() {
-            // Does not work in OLAP cause fold() is not an endstep.
-        }
-
-        @Override
-        public Traversal<Vertex, Integer> get_g_V_age_foldX0_plusX() {
-            ComputerTestHelper.compute("g.V.age.fold(0) { seed, age -> seed + age }", g);
-        }
-
-        @Override
-        Traversal<Vertex, Vertex> get_g_V_fold_unfold() {
-            // override with nothing until the test itself is supported
-            return null
+            GroovyTestHelper.compute("g.V.age.fold(0) { seed, age -> seed + age }", g)
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/abd23f4e/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMapTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMapTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMapTest.groovy
index 7be3fd7..f76f995 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMapTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMapTest.groovy
@@ -18,112 +18,40 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.map
 
-import org.apache.tinkerpop.gremlin.LoadGraphWith
-import org.apache.tinkerpop.gremlin.process.UseEngine
-import org.apache.tinkerpop.gremlin.process.computer.ComputerTestHelper
+import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine
 import org.apache.tinkerpop.gremlin.structure.Vertex
-import org.junit.Test
 
 /**
  * @author Stephen Mallette (http://stephen.genoprime.com)
  */
 public abstract class GroovyMapTest {
 
-    @UseEngine(TraversalEngine.Type.STANDARD)
-    public static class StandardTraversals extends MapTest {
+    public static class Traversals extends MapTest {
 
         @Override
         public Traversal<Vertex, String> get_g_VX1X_mapXnameX(final Object v1Id) {
-            g.V(v1Id).map { v -> v.name };
+            GroovyTestHelper.compute("g.V(v1Id).map { v -> v.name }", g, "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Integer> get_g_VX1X_outE_label_mapXlengthX(final Object v1Id) {
-            g.V(v1Id).outE.label.map { l -> l.length() };
+            GroovyTestHelper.compute("g.V(v1Id).outE.label.map { l -> l.length() }", g, "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Integer> get_g_VX1X_out_mapXnameX_mapXlengthX(final Object v1Id) {
-            g.V(v1Id).out.map { v -> v.name }.map { n -> n.length() };
+            GroovyTestHelper.compute("g.V(v1Id).out.map { v -> v.name }.map { n -> n.length() }", g, "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, String> get_g_withPath_V_asXaX_out_mapXa_nameX() {
-            g.withPath().V.as('a').out.map { v -> v.path('a').name };
+            GroovyTestHelper.compute("g.withPath().V.as('a').out.map { v -> v.path('a').name }", g)
         }
 
         @Override
         public Traversal<Vertex, String> get_g_withPath_V_asXaX_out_out_mapXa_name_it_nameX() {
-            g.withPath().V().as('a').out.out().map { v -> v.path('a').name + v.name };
-        }
-    }
-
-    @UseEngine(TraversalEngine.Type.COMPUTER)
-    public static class ComputerTraversals extends MapTest {
-
-        @Test
-        @LoadGraphWith(org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN)
-        @Override
-        public void g_VX1X_mapXnameX() {
-            super.g_VX1X_mapXnameX();
-        }
-
-        @Test
-        @LoadGraphWith(org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN)
-        @Override
-        public void g_VX1X_outE_label_mapXlengthX() {
-            super.g_VX1X_outE_label_mapXlengthX();
-        }
-
-        @Test
-        @LoadGraphWith(org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN)
-        @Override
-        public void g_VX1X_out_mapXnameX_mapXlengthX() {
-            super.g_VX1X_out_mapXnameX_mapXlengthX();
-        }
-
-
-        @Override
-        public Traversal<Vertex, String> get_g_VX1X_mapXnameX(final Object v1Id) {
-            ComputerTestHelper.compute("g.V(v1Id).map { v -> v.name }", g, "v1Id", v1Id);
-        }
-
-        @Override
-        public Traversal<Vertex, Integer> get_g_VX1X_outE_label_mapXlengthX(final Object v1Id) {
-            ComputerTestHelper.compute("g.V(v1Id).outE.label.map { l -> l.length() }", g, "v1Id", v1Id);
-        }
-
-        @Override
-        public Traversal<Vertex, Integer> get_g_VX1X_out_mapXnameX_mapXlengthX(final Object v1Id) {
-            ComputerTestHelper.compute("g.V(v1Id).out.map { v -> v.name }.map { n -> n.length() }", g, "v1Id", v1Id);
-        }
-
-        @Override
-        @Test
-        @org.junit.Ignore("Traversal not supported by ComputerTraversalEngine.computer")
-        public void g_V_asXaX_out_mapXa_nameX() {
-            // TODO: Doesn't work for graph computer because sideEffects are not accessible
-        }
-
-        @Override
-        @Test
-        @org.junit.Ignore("Traversal not supported by ComputerTraversalEngine.computer")
-        public void g_V_asXaX_out_out_mapXa_name_it_nameX() {
-            // TODO: Doesn't work for graph computer because sideEffects are not accessible
-        }
-
-        @Override
-        Traversal<Vertex, String> get_g_withPath_V_asXaX_out_mapXa_nameX() {
-            // override with nothing until the test itself is supported
-            return null
-        }
-
-        @Override
-        Traversal<Vertex, String> get_g_withPath_V_asXaX_out_out_mapXa_name_it_nameX() {
-            // override with nothing until the test itself is supported
-            return null
+            GroovyTestHelper.compute("g.withPath().V().as('a').out.out().map { v -> v.path('a').name + v.name }", g)
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/abd23f4e/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMatchTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMatchTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMatchTest.groovy
index 2cffab9..de5b92d 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMatchTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMatchTest.groovy
@@ -32,8 +32,7 @@ import static org.apache.tinkerpop.gremlin.structure.P.neq;
  */
 public abstract class GroovyMatchTest {
 
-    @UseEngine(TraversalEngine.Type.STANDARD)
-    public static class StandardTraversals extends MatchTest {
+    public static class Traversals extends MatchTest {
 
         @Override
         public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa_out_bX() {

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/abd23f4e/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMaxTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMaxTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMaxTest.groovy
index 7cef641..1acd815 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMaxTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMaxTest.groovy
@@ -18,57 +18,31 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.map
 
-import org.apache.tinkerpop.gremlin.process.computer.ComputerTestHelper
-import org.apache.tinkerpop.gremlin.process.traversal.Scope
+import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine
-import org.apache.tinkerpop.gremlin.process.UseEngine
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
-import static __.bothE
-import static __.max
-
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
 public abstract class GroovyMaxTest {
 
-    @UseEngine(TraversalEngine.Type.STANDARD)
-    public static class StandardTraversals extends MaxTest {
-
-        @Override
-        public Traversal<Vertex, Integer> get_g_V_age_max() {
-            g.V.age.max
-        }
-
-        @Override
-        public Traversal<Vertex, Integer> get_g_V_repeatXbothX_timesX5X_age_max() {
-            g.V.repeat(__.both).times(5).age.max
-        }
-
-        @Override
-        public Traversal<Vertex, Map<String, Number>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_valuesXweightX_foldX_byXmaxXlocalXX() {
-            g.V().hasLabel('software').group().by('name').by(bothE().values('weight').fold()).by(max(Scope.local))
-        }
-    }
-
-    @UseEngine(TraversalEngine.Type.COMPUTER)
-    public static class ComputerTraversals extends MaxTest {
+    public static class Traversals extends MaxTest {
 
         @Override
         public Traversal<Vertex, Integer> get_g_V_age_max() {
-            ComputerTestHelper.compute("g.V.age.max", g)
+            GroovyTestHelper.compute("g.V.age.max", g)
         }
 
         @Override
         public Traversal<Vertex, Integer> get_g_V_repeatXbothX_timesX5X_age_max() {
-            ComputerTestHelper.compute("g.V.repeat(__.both).times(5).age.max", g)
+            GroovyTestHelper.compute("g.V.repeat(__.both).times(5).age.max", g)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Number>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_valuesXweightX_foldX_byXmaxXlocalXX() {
-            ComputerTestHelper.compute("g.V().hasLabel('software').group().by('name').by(bothE().values('weight').fold()).by(max(Scope.local))", g)
+            GroovyTestHelper.compute("g.V().hasLabel('software').group().by('name').by(bothE().values('weight').fold()).by(max(Scope.local))", g)
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/abd23f4e/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMeanTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMeanTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMeanTest.groovy
index 5a32f96..ea6018e 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMeanTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMeanTest.groovy
@@ -18,46 +18,25 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.map
 
-import org.apache.tinkerpop.gremlin.process.computer.ComputerTestHelper
-import org.apache.tinkerpop.gremlin.process.traversal.Scope
+import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine
-import org.apache.tinkerpop.gremlin.process.UseEngine
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
-import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.bothE
-import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.mean
-
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
 public abstract class GroovyMeanTest {
 
-    @UseEngine(TraversalEngine.Type.STANDARD)
-    public static class StandardTraversals extends MeanTest {
-
-        @Override
-        public Traversal<Vertex, Double> get_g_V_age_mean() {
-            g.V.age.mean
-        }
-
-        @Override
-        public Traversal<Vertex, Map<String, Number>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_valuesXweightX_foldX_byXmeanXlocalXX() {
-            g.V().hasLabel('software').group().by('name').by(bothE().values('weight').fold()).by(mean(Scope.local))
-        }
-    }
-
-    @UseEngine(TraversalEngine.Type.COMPUTER)
-    public static class ComputerTraversals extends MeanTest {
+    public static class Traversals extends MeanTest {
 
         @Override
         public Traversal<Vertex, Double> get_g_V_age_mean() {
-            ComputerTestHelper.compute("g.V.age.mean", g)
+            GroovyTestHelper.compute("g.V.age.mean", g)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Number>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_valuesXweightX_foldX_byXmeanXlocalXX() {
-            ComputerTestHelper.compute("g.V().hasLabel('software').group().by('name').by(bothE().values('weight').fold()).by(mean(Scope.local))", g)
+            GroovyTestHelper.compute("g.V().hasLabel('software').group().by('name').by(bothE().values('weight').fold()).by(mean(Scope.local))", g)
         }
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/abd23f4e/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMinTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMinTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMinTest.groovy
index 7746fdf..0f3e522 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMinTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMinTest.groovy
@@ -18,57 +18,30 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.map
 
-import org.apache.tinkerpop.gremlin.process.computer.ComputerTestHelper
-import org.apache.tinkerpop.gremlin.process.traversal.Scope
+import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine
-import org.apache.tinkerpop.gremlin.process.UseEngine
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
-import static __.bothE
-import static __.min
-
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
 public abstract class GroovyMinTest {
 
-    @UseEngine(TraversalEngine.Type.STANDARD)
-    public static class StandardTraversals extends MinTest {
-
-        @Override
-        public Traversal<Vertex, Integer> get_g_V_age_min() {
-            g.V.age.min
-        }
-
-        @Override
-        public Traversal<Vertex, Integer> get_g_V_repeatXbothX_timesX5X_age_min() {
-            g.V.repeat(__.both).times(5).age.min
-        }
-
-        @Override
-        public Traversal<Vertex, Map<String, Number>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_valuesXweightX_foldX_byXminXlocalXX() {
-            g.V().hasLabel('software').group().by('name').by(bothE().values('weight').fold()).by(min(Scope.local))
-        }
-    }
-
-    @UseEngine(TraversalEngine.Type.COMPUTER)
-    public static class ComputerTraversals extends MinTest {
+    public static class Traversals extends MinTest {
 
         @Override
         public Traversal<Vertex, Integer> get_g_V_age_min() {
-            ComputerTestHelper.compute("g.V.age.min", g)
+            GroovyTestHelper.compute("g.V.age.min", g)
         }
 
         @Override
         public Traversal<Vertex, Integer> get_g_V_repeatXbothX_timesX5X_age_min() {
-            ComputerTestHelper.compute("g.V.repeat(__.both).times(5).age.min", g)
+            GroovyTestHelper.compute("g.V.repeat(__.both).times(5).age.min", g)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Number>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_valuesXweightX_foldX_byXminXlocalXX() {
-            ComputerTestHelper.compute("g.V().hasLabel('software').group().by('name').by(bothE().values('weight').fold()).by(min(Scope.local))", g)
+            GroovyTestHelper.compute("g.V().hasLabel('software').group().by('name').by(bothE().values('weight').fold()).by(min(local))", g)
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/abd23f4e/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyOrderTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyOrderTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyOrderTest.groovy
index 6471725..e055594 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyOrderTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyOrderTest.groovy
@@ -18,171 +18,68 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.map
 
-import org.apache.tinkerpop.gremlin.LoadGraphWith
-import org.apache.tinkerpop.gremlin.process.*
-import org.apache.tinkerpop.gremlin.process.computer.ComputerTestHelper
-import org.apache.tinkerpop.gremlin.process.traversal.Scope
+import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__
-import org.apache.tinkerpop.gremlin.structure.Order
 import org.apache.tinkerpop.gremlin.structure.Vertex
-import org.junit.Test
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
 public abstract class GroovyOrderTest {
 
-    @UseEngine(TraversalEngine.Type.STANDARD)
-    public static class StandardTraversals extends OrderTest {
+    public static class Traversals extends OrderTest {
 
         @Override
         public Traversal<Vertex, String> get_g_V_name_order() {
-            g.V().name.order()
+            GroovyTestHelper.compute("g.V().name.order()", g)
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_name_order_byXa1_b1X_byXb2_a2X() {
-            g.V.name.order.by { a, b -> a[1] <=> b[1] }.by { a, b -> b[2] <=> a[2] }
+            GroovyTestHelper.compute("g.V.name.order.by { a, b -> a[1] <=> b[1] }.by { a, b -> b[2] <=> a[2] }", g)
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_order_byXname_incrX_name() {
-            g.V.order.by('name', Order.incr).name
+            GroovyTestHelper.compute("g.V.order.by('name', Order.incr).name", g)
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_order_byXnameX_name() {
-            g.V.order.by('name', Order.incr).name
+            GroovyTestHelper.compute("g.V.order.by('name', Order.incr).name", g)
         }
 
         @Override
         public Traversal<Vertex, Double> get_g_V_outE_order_byXweight_decrX_weight() {
-            g.V.outE.order.by('weight', Order.decr).weight
+            GroovyTestHelper.compute("g.V.outE.order.by('weight', Order.decr).weight", g)
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_order_byXname_a1_b1X_byXname_b2_a2X_name() {
-            return g.V.order.by('name', { a, b -> a[1].compareTo(b[1]) }).by('name', { a, b -> b[2].compareTo(a[2]) }).name;
+            GroovyTestHelper.compute("g.V.order.by('name', { a, b -> a[1].compareTo(b[1]) }).by('name', { a, b -> b[2].compareTo(a[2]) }).name", g)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Vertex>> get_g_V_asXaX_outXcreatedX_asXbX_order_byXshuffleX_select() {
-            g.V.as('a').out('created').as('b').order.by(Order.shuffle).select();
+            GroovyTestHelper.compute("g.V.as('a').out('created').as('b').order.by(Order.shuffle).select()", g)
         }
 
         @Override
         public Traversal<Vertex, Map<Integer, Integer>> get_g_VX1X_hasXlabel_personX_mapXmapXint_ageXX_orderXlocalX_byXvalueDecrX_byXkeyIncrX(
                 final Object v1Id) {
-            g.V(v1Id).map {
+            GroovyTestHelper.compute("""g.V(v1Id).map {
                 final Map map = [:];
                 map[1] = it.age;
                 map[2] = it.age * 2;
                 map[3] = it.age * 3;
                 map[4] = it.age;
                 return map;
-            }.order(Scope.local).by(Order.valueDecr).by(Order.keyIncr);
+            }.order(local).by(valueDecr).by(keyIncr)""", g, "v1Id", v1Id);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_order_byXoutE_count__decrX() {
-            g.V.order.by(__.outE.count, Order.decr)
-        }
-    }
-
-    @UseEngine(TraversalEngine.Type.COMPUTER)
-    public static class ComputerTraversals extends OrderTest {
-
-        @Override
-        public Traversal<Vertex, String> get_g_V_name_order() {
-            ComputerTestHelper.compute("g.V().name.order()", g)
-        }
-
-        @Override
-        public Traversal<Vertex, String> get_g_V_name_order_byXa1_b1X_byXb2_a2X() {
-            ComputerTestHelper.compute("g.V.name.order.by { a, b -> a[1] <=> b[1] }.by{ a, b -> b[2] <=> a[2] }", g)
-        }
-
-        @Override
-        @Test
-        @org.junit.Ignore("Traversal not supported by ComputerTraversalEngine.computer")
-        public void g_V_order_byXname_incrX_name() {
-        }
-
-        @Override
-        @Test
-        @org.junit.Ignore("Traversal not supported by ComputerTraversalEngine.computer")
-        public void g_V_outE_order_byXweight_decrX_weight() {
-        }
-
-        @Override
-        @Test
-        @org.junit.Ignore("Traversal not supported by ComputerTraversalEngine.computer")
-        public void g_V_order_byXname_a1_b1X_byXname_b2_a2X_name() {
-        }
-
-        @Override
-        public Traversal<Vertex, Map<String, Vertex>> get_g_V_asXaX_outXcreatedX_asXbX_order_byXshuffleX_select() {
-            ComputerTestHelper.compute("g.V.as('a').out('created').as('b').order.by(Order.shuffle).select()", g);
-        }
-
-        @Override
-        public Traversal<Vertex, Map<Integer, Integer>> get_g_VX1X_hasXlabel_personX_mapXmapXint_ageXX_orderXlocalX_byXvalueDecrX_byXkeyIncrX(
-                final Object v1Id) {
-            ComputerTestHelper.compute("""
-            g.V(${v1Id}).map {
-                final Map map = [:];
-                map[1] = it.age;
-                map[2] = it.age * 2;
-                map[3] = it.age * 3;
-                map[4] = it.age;
-                return map;
-            }.order(Scope.local).by(Order.valueDecr).by(Order.keyIncr);
-            """, g)
-        }
-
-        @Override
-        @Test
-        @org.junit.Ignore("Traversal not supported by ComputerTraversalEngine.computer")
-        public void g_V_order_byXoutE_count__decrX() {
-        }
-
-        @Override
-        Traversal<Vertex, String> get_g_V_order_byXname_incrX_name() {
-            // override with nothing until the test itself is supported
-            return null
-        }
-
-        @Override
-        Traversal<Vertex, String> get_g_V_order_byXnameX_name() {
-            // override with nothing until the test itself is supported
-            return null
-        }
-
-        @Override
-        Traversal<Vertex, Double> get_g_V_outE_order_byXweight_decrX_weight() {
-            // override with nothing until the test itself is supported
-            return null
-        }
-
-        @Override
-        Traversal<Vertex, String> get_g_V_order_byXname_a1_b1X_byXname_b2_a2X_name() {
-            // override with nothing until the test itself is supported
-            return null
-        }
-
-        @Override
-        Traversal<Vertex, Vertex> get_g_V_order_byXoutE_count__decrX() {
-            // override with nothing until the test itself is supported
-            return null
-        }
-
-        @Test
-        @LoadGraphWith(org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN)
-        @Override
-        public void g_V_name_order_byXa1_b1X_byXb2_a2X() {
-            super.g_V_name_order_byXa1_b1X_byXb2_a2X();
+            GroovyTestHelper.compute("g.V.order.by(__.outE.count, decr)", g)
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/abd23f4e/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyPathTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyPathTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyPathTest.groovy
index 1929523..42a031c 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyPathTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyPathTest.groovy
@@ -18,96 +18,41 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.map
 
-import org.apache.tinkerpop.gremlin.process.UseEngine
-import org.apache.tinkerpop.gremlin.process.computer.ComputerTestHelper
+import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Path
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__
 import org.apache.tinkerpop.gremlin.structure.Vertex
-import org.junit.Test
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
 public abstract class GroovyPathTest {
 
-    @UseEngine(TraversalEngine.Type.STANDARD)
-    public static class StandardTraversals extends PathTest {
+    public static class Traversals extends PathTest {
 
         @Override
         public Traversal<Vertex, Path> get_g_VX1X_name_path(final Object v1Id) {
-            g.V(v1Id).identity.name.path
+            GroovyTestHelper.compute("g.V(v1Id).name.path", g, "v1Id", v1Id);
         }
 
         @Override
         public Traversal<Vertex, Path> get_g_VX1X_out_path_byXageX_byXnameX(final Object v1Id) {
-            g.V(v1Id).out.path.by('age').by('name');
+            GroovyTestHelper.compute("g.V(v1Id).out.path.by('age').by('name')", g, "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Path> get_g_V_repeatXoutX_timesX2X_path_by_byXnameX_byXlangX() {
-            g.V.repeat(__.out).times(2).path.by.by('name').by('lang');
+            GroovyTestHelper.compute("g.V.repeat(__.out).times(2).path.by.by('name').by('lang')", g)
         }
 
         @Override
         public Traversal<Vertex, Path> get_g_V_out_out_path_byXnameX_byXageX() {
-            g.V.out.out.path.by('name').by('age');
+            GroovyTestHelper.compute("g.V.out.out.path.by('name').by('age')", g)
         }
 
         @Override
         public Traversal<Vertex, Path> get_g_V_asXaX_hasXname_markoX_asXbX_hasXage_29X_asXcX_path() {
-            g.V.as('a').has('name', 'marko').as('b').has('age', 29).as('c').path;
-        }
-    }
-
-    @UseEngine(TraversalEngine.Type.COMPUTER)
-    public static class ComputerTraversals extends PathTest {
-
-        @Override
-        public Traversal<Vertex, Path> get_g_VX1X_name_path(final Object v1Id) {
-            ComputerTestHelper.compute("g.V(v1Id).identity.name.path", g, "v1Id", v1Id);
-        }
-
-        @Override
-        @Test
-        @org.junit.Ignore("Traversal not supported by ComputerTraversalEngine.computer")
-        public void g_VX1X_out_path_byXageX_byXnameX() {
-        }
-
-        @Override
-        @Test
-        @org.junit.Ignore("Traversal not supported by ComputerTraversalEngine.computer")
-        void g_V_repeatXoutX_timesX2X_path_byXitX_byXnameX_byXlangX() {
-        }
-
-        @Override
-        @Test
-        @org.junit.Ignore("Traversal not supported by ComputerTraversalEngine.computer")
-        public void g_V_out_out_path_byXnameX_byXageX() {
-        }
-
-        @Override
-        public Traversal<Vertex, Path> get_g_V_asXaX_hasXname_markoX_asXbX_hasXage_29X_asXcX_path() {
-            ComputerTestHelper.compute("g.V.as('a').has('name', 'marko').as('b').has('age', 29).as('c').path", g);
-        }
-
-        @Override
-        Traversal<Vertex, Path> get_g_VX1X_out_path_byXageX_byXnameX(Object v1Id) {
-            // override with nothing until the test itself is supported
-            return null
-        }
-
-        @Override
-        Traversal<Vertex, Path> get_g_V_repeatXoutX_timesX2X_path_by_byXnameX_byXlangX() {
-            // override with nothing until the test itself is supported
-            return null
-        }
-
-        @Override
-        Traversal<Vertex, Path> get_g_V_out_out_path_byXnameX_byXageX() {
-            // override with nothing until the test itself is supported
-            return null
+            GroovyTestHelper.compute("g.V.as('a').has('name', 'marko').as('b').has('age', 29).as('c').path", g)
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/abd23f4e/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyPropertiesTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyPropertiesTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyPropertiesTest.groovy
index bdffe9d..b998cd3 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyPropertiesTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyPropertiesTest.groovy
@@ -18,11 +18,8 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.map
 
-import org.apache.tinkerpop.gremlin.process.UseEngine
-import org.apache.tinkerpop.gremlin.process.computer.ComputerTestHelper
+import org.apache.tinkerpop.gremlin.process.computer.GroovyTestHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine
-import org.apache.tinkerpop.gremlin.structure.T
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
 /**
@@ -30,41 +27,21 @@ import org.apache.tinkerpop.gremlin.structure.Vertex
  */
 public abstract class GroovyPropertiesTest {
 
-    @UseEngine(TraversalEngine.Type.STANDARD)
-    public static class StandardTraversals extends PropertiesTest {
+    public static class Traversals extends PropertiesTest {
 
         @Override
         public Traversal<Vertex, Object> get_g_V_hasXageX_propertiesXname_ageX_value() {
-            g.V.has('age').properties('name', 'age').value
+            GroovyTestHelper.compute("g.V.has('age').properties('name', 'age').value", g)
         }
 
         @Override
         public Traversal<Vertex, Object> get_g_V_hasXageX_propertiesXage_nameX_value() {
-            g.V.has('age').properties('age', 'name').value
+            GroovyTestHelper.compute("g.V.has('age').properties('age', 'name').value", g)
         }
 
         @Override
         public Traversal<Vertex, Object> get_g_V_hasXageX_properties_hasXid_nameIdX_value(final Object nameId) {
-            g.V.has('age').properties().has(T.id, nameId).value()
-        }
-    }
-
-    @UseEngine(TraversalEngine.Type.COMPUTER)
-    public static class ComputerTraversals extends PropertiesTest {
-
-        @Override
-        public Traversal<Vertex, Object> get_g_V_hasXageX_propertiesXname_ageX_value() {
-            ComputerTestHelper.compute("g.V.has('age').properties('name', 'age').value", g)
-        }
-
-        @Override
-        public Traversal<Vertex, Object> get_g_V_hasXageX_propertiesXage_nameX_value() {
-            ComputerTestHelper.compute("g.V.has('age').properties('age', 'name').value", g)
-        }
-
-        @Override
-        public Traversal<Vertex, Object> get_g_V_hasXageX_properties_hasXid_nameIdX_value(final Object nameId) {
-            ComputerTestHelper.compute("g.V.has('age').properties().has(T.id, nameId).value()", g, "nameId", nameId)
+            GroovyTestHelper.compute("g.V.has('age').properties().has(T.id, nameId).value()", g, "nameId", nameId)
         }
     }
 


[26/50] [abbrv] incubator-tinkerpop git commit: VertexProgram.loadState(Graph, Configuration) yielded a ripple of code gutting. I can't believe how much work I did to get around not having the Graph instance during an OLAP job. Pointless --- the code is m

Posted by dk...@apache.org.
VertexProgram.loadState(Graph,Configuration) yielded a ripple of code gutting. I can't believe how much work I did to get around not having the Graph instance during an OLAP job. Pointless --- the code is much simpler. Lots more clean up to do and docs/etc., but wow This makes life alot easier.


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

Branch: refs/heads/TINKERPOP3-666
Commit: 80e511c74835fe5b2c67daab27505c413b8c8c85
Parents: 134984e
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Fri May 8 14:42:12 2015 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Fri May 8 14:42:22 2015 -0600

----------------------------------------------------------------------
 .../peerpressure/PeerPressureVertexProgram.java |  34 +--
 .../ranking/pagerank/PageRankVertexProgram.java |  38 +--
 .../traversal/TraversalObjectFunction.java      |  47 +++
 .../traversal/TraversalScriptFunction.java      |  69 +++++
 .../traversal/TraversalScriptSupplier.java      |  67 -----
 .../computer/traversal/TraversalSupplier.java   |  43 ---
 .../traversal/TraversalVertexProgram.java       |  35 +--
 .../traversal/step/map/ComputerResultStep.java  |   2 +-
 .../computer/util/ConfigurationTraversal.java   |  82 ++++++
 .../process/computer/util/LambdaHolder.java     | 114 --------
 .../process/computer/util/ShellGraph.java       | 283 -------------------
 .../process/traversal/TraversalStrategies.java  |   5 -
 .../dsl/graph/GraphTraversalSource.java         |   2 +-
 .../traversal/step/util/ComputerAwareStep.java  |   2 +-
 .../step/util/ReducingBarrierStep.java          |   3 +-
 .../traversal/util/DefaultTraversal.java        |   2 +-
 .../process/computer/ComputerTestHelper.groovy  |   6 +-
 .../groovy/plugin/HadoopRemoteAcceptor.java     |   2 +-
 .../computer/example/TraversalSupplier1.java    |  12 +-
 .../computer/example/TraversalSupplier2.java    |   3 +-
 .../computer/example/TraversalSupplier3.java    |   3 +-
 21 files changed, 265 insertions(+), 589 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/80e511c7/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/clustering/peerpressure/PeerPressureVertexProgram.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/clustering/peerpressure/PeerPressureVertexProgram.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/clustering/peerpressure/PeerPressureVertexProgram.java
index 323dd15..907179a 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/clustering/peerpressure/PeerPressureVertexProgram.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/clustering/peerpressure/PeerPressureVertexProgram.java
@@ -23,10 +23,13 @@ import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
 import org.apache.tinkerpop.gremlin.process.computer.Memory;
 import org.apache.tinkerpop.gremlin.process.computer.MessageScope;
 import org.apache.tinkerpop.gremlin.process.computer.Messenger;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.TraversalObjectFunction;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.TraversalScriptFunction;
 import org.apache.tinkerpop.gremlin.process.computer.util.AbstractVertexProgramBuilder;
-import org.apache.tinkerpop.gremlin.process.computer.util.LambdaHolder;
+import org.apache.tinkerpop.gremlin.process.computer.util.ConfigurationTraversal;
 import org.apache.tinkerpop.gremlin.process.computer.util.StaticVertexProgram;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalSource;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.MapHelper;
 import org.apache.tinkerpop.gremlin.structure.Edge;
@@ -61,10 +64,10 @@ public class PeerPressureVertexProgram extends StaticVertexProgram<Pair<Serializ
 
     private static final String MAX_ITERATIONS = "gremlin.peerPressureVertexProgram.maxIterations";
     private static final String DISTRIBUTE_VOTE = "gremlin.peerPressureVertexProgram.distributeVote";
-    private static final String INCIDENT_TRAVERSAL_SUPPLIER = "gremlin.peerPressureVertexProgram.incidentTraversalSupplier";
+    private static final String TRAVERSAL_SUPPLIER = "gremlin.peerPressureVertexProgram.traversalSupplier";
     private static final String VOTE_TO_HALT = "gremlin.peerPressureVertexProgram.voteToHalt";
 
-    private LambdaHolder<Supplier<Traversal<Vertex, Edge>>> traversalSupplier;
+    private ConfigurationTraversal<Vertex, Edge> configurationTraversal;
     private int maxIterations = 30;
     private boolean distributeVote = false;
 
@@ -77,9 +80,9 @@ public class PeerPressureVertexProgram extends StaticVertexProgram<Pair<Serializ
 
     @Override
     public void loadState(final Graph graph, final Configuration configuration) {
-        this.traversalSupplier = LambdaHolder.loadState(configuration, INCIDENT_TRAVERSAL_SUPPLIER);
-        if (null != this.traversalSupplier) {
-            this.voteScope = MessageScope.Local.of(this.traversalSupplier.get());
+        if (configuration.containsKey(TRAVERSAL_SUPPLIER)) {
+            this.configurationTraversal = ConfigurationTraversal.loadState(graph, configuration, TRAVERSAL_SUPPLIER);
+            this.voteScope = MessageScope.Local.of(this.configurationTraversal);
             this.countScope = MessageScope.Local.of(new MessageScope.Local.ReverseTraversalSupplier(this.voteScope));
         }
         this.maxIterations = configuration.getInt(MAX_ITERATIONS, 30);
@@ -89,7 +92,7 @@ public class PeerPressureVertexProgram extends StaticVertexProgram<Pair<Serializ
     @Override
     public void storeState(final Configuration configuration) {
         super.storeState(configuration);
-        this.traversalSupplier.storeState(configuration);
+        this.configurationTraversal.storeState(configuration);
         configuration.setProperty(MAX_ITERATIONS, this.maxIterations);
         configuration.setProperty(DISTRIBUTE_VOTE, this.distributeVote);
 
@@ -211,22 +214,19 @@ public class PeerPressureVertexProgram extends StaticVertexProgram<Pair<Serializ
             return this;
         }
 
-        public Builder incident(final String scriptEngine, final String traversalScript) {
-            LambdaHolder.storeState(this.configuration, LambdaHolder.Type.SCRIPT, INCIDENT_TRAVERSAL_SUPPLIER, new String[]{scriptEngine, traversalScript});
+        public Builder traversal(final TraversalSource.Builder builder, final String scriptEngine, final String traversalScript, final Object... bindings) {
+            ConfigurationTraversal.storeState(new TraversalScriptFunction<>(builder, scriptEngine, traversalScript, bindings), this.configuration, TRAVERSAL_SUPPLIER);
             return this;
         }
 
-        public Builder incident(final String traversalScript) {
-            return incident(GREMLIN_GROOVY, traversalScript);
-        }
-
-        public Builder incident(final Supplier<Traversal<Vertex, Edge>> traversal) {
-            LambdaHolder.storeState(this.configuration, LambdaHolder.Type.OBJECT, INCIDENT_TRAVERSAL_SUPPLIER, traversal);
+        public Builder traversal(final Traversal.Admin<Vertex, Edge> traversal) {
+            ConfigurationTraversal.storeState(new TraversalObjectFunction<>(traversal), this.configuration, TRAVERSAL_SUPPLIER);
             return this;
         }
 
-        public Builder incident(final Class<Supplier<Traversal<Vertex, Edge>>> traversalClass) {
-            LambdaHolder.storeState(this.configuration, LambdaHolder.Type.CLASS, INCIDENT_TRAVERSAL_SUPPLIER, traversalClass);
+
+        public Builder traversal(final Class<Supplier<Traversal.Admin<Vertex, Edge>>> traversalClass) {
+            ConfigurationTraversal.storeState(traversalClass, this.configuration, TRAVERSAL_SUPPLIER);
             return this;
         }
 

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/80e511c7/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/ranking/pagerank/PageRankVertexProgram.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/ranking/pagerank/PageRankVertexProgram.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/ranking/pagerank/PageRankVertexProgram.java
index 96492b6..bc07e99 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/ranking/pagerank/PageRankVertexProgram.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/ranking/pagerank/PageRankVertexProgram.java
@@ -24,10 +24,13 @@ import org.apache.tinkerpop.gremlin.process.computer.Memory;
 import org.apache.tinkerpop.gremlin.process.computer.MessageCombiner;
 import org.apache.tinkerpop.gremlin.process.computer.MessageScope;
 import org.apache.tinkerpop.gremlin.process.computer.Messenger;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.TraversalObjectFunction;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.TraversalScriptFunction;
 import org.apache.tinkerpop.gremlin.process.computer.util.AbstractVertexProgramBuilder;
-import org.apache.tinkerpop.gremlin.process.computer.util.LambdaHolder;
+import org.apache.tinkerpop.gremlin.process.computer.util.ConfigurationTraversal;
 import org.apache.tinkerpop.gremlin.process.computer.util.StaticVertexProgram;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalSource;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
 import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Graph;
@@ -40,7 +43,7 @@ import java.util.Arrays;
 import java.util.HashSet;
 import java.util.Optional;
 import java.util.Set;
-import java.util.function.Supplier;
+import java.util.function.Function;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -56,9 +59,9 @@ public class PageRankVertexProgram extends StaticVertexProgram<Double> {
     private static final String VERTEX_COUNT = "gremlin.pageRankVertexProgram.vertexCount";
     private static final String ALPHA = "gremlin.pageRankVertexProgram.alpha";
     private static final String TOTAL_ITERATIONS = "gremlin.pageRankVertexProgram.totalIterations";
-    private static final String INCIDENT_TRAVERSAL_SUPPLIER = "gremlin.pageRankVertexProgram.incidentTraversalSupplier";
+    private static final String TRAVERSAL_SUPPLIER = "gremlin.pageRankVertexProgram.traversalSupplier";
 
-    private LambdaHolder<Supplier<Traversal<Vertex, Edge>>> traversalSupplier;
+    private ConfigurationTraversal<Vertex, Edge> configurationTraversal;
     private double vertexCountAsDouble = 1.0d;
     private double alpha = 0.85d;
     private int totalIterations = 30;
@@ -71,9 +74,9 @@ public class PageRankVertexProgram extends StaticVertexProgram<Double> {
 
     @Override
     public void loadState(final Graph graph, final Configuration configuration) {
-        this.traversalSupplier = LambdaHolder.loadState(configuration, INCIDENT_TRAVERSAL_SUPPLIER);
-        if (null != this.traversalSupplier) {
-            this.incidentMessageScope = MessageScope.Local.of(this.traversalSupplier.get());
+        if (configuration.containsKey(TRAVERSAL_SUPPLIER)) {
+            this.configurationTraversal = ConfigurationTraversal.loadState(graph, configuration, TRAVERSAL_SUPPLIER);
+            this.incidentMessageScope = MessageScope.Local.of(this.configurationTraversal);
             this.countMessageScope = MessageScope.Local.of(new MessageScope.Local.ReverseTraversalSupplier(this.incidentMessageScope));
         }
         this.vertexCountAsDouble = configuration.getDouble(VERTEX_COUNT, 1.0d);
@@ -87,8 +90,8 @@ public class PageRankVertexProgram extends StaticVertexProgram<Double> {
         configuration.setProperty(VERTEX_COUNT, this.vertexCountAsDouble);
         configuration.setProperty(ALPHA, this.alpha);
         configuration.setProperty(TOTAL_ITERATIONS, this.totalIterations);
-        if (null != this.traversalSupplier) {
-            this.traversalSupplier.storeState(configuration);
+        if (null != this.configurationTraversal) {
+            this.configurationTraversal.storeState(configuration);
         }
     }
 
@@ -174,22 +177,19 @@ public class PageRankVertexProgram extends StaticVertexProgram<Double> {
             return this;
         }
 
-        public Builder incident(final String scriptEngine, final String traversalScript) {
-            LambdaHolder.storeState(this.configuration, LambdaHolder.Type.SCRIPT, INCIDENT_TRAVERSAL_SUPPLIER, new String[]{scriptEngine, traversalScript});
+        public Builder traversal(final TraversalSource.Builder builder, final String scriptEngine, final String traversalScript, final Object... bindings) {
+            ConfigurationTraversal.storeState(new TraversalScriptFunction<>(builder, scriptEngine, traversalScript, bindings), this.configuration, TRAVERSAL_SUPPLIER);
             return this;
         }
 
-        public Builder incident(final String traversalScript) {
-            return incident(GREMLIN_GROOVY, traversalScript);
-        }
-
-        public Builder incident(final Supplier<Traversal<Vertex, Edge>> traversal) {
-            LambdaHolder.storeState(this.configuration, LambdaHolder.Type.OBJECT, INCIDENT_TRAVERSAL_SUPPLIER, traversal);
+        public Builder traversal(final Traversal.Admin<Vertex, Edge> traversal) {
+            ConfigurationTraversal.storeState(new TraversalObjectFunction<>(traversal), this.configuration, TRAVERSAL_SUPPLIER);
             return this;
         }
 
-        public Builder incident(final Class<Supplier<Traversal<Vertex, Edge>>> traversalClass) {
-            LambdaHolder.storeState(this.configuration, LambdaHolder.Type.CLASS, INCIDENT_TRAVERSAL_SUPPLIER, traversalClass);
+
+        public Builder traversal(final Class<Function<Graph, Traversal.Admin<Vertex, Edge>>> traversalClass) {
+            ConfigurationTraversal.storeState(traversalClass, this.configuration, TRAVERSAL_SUPPLIER);
             return this;
         }
 

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/80e511c7/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalObjectFunction.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalObjectFunction.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalObjectFunction.java
new file mode 100644
index 0000000..662d8fa
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalObjectFunction.java
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.process.computer.traversal;
+
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+
+import java.io.Serializable;
+import java.util.function.Function;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public final class TraversalObjectFunction<S, E> implements Function<Graph, Traversal.Admin<S, E>>, Serializable {
+
+    private final Traversal.Admin<S, E> traversal;
+
+    public TraversalObjectFunction(final Traversal.Admin<S, E> traversal) {
+        this.traversal = traversal;
+    }
+
+    @Override
+    public Traversal.Admin<S, E> apply(final Graph graph) {
+        final Traversal.Admin<S, E> clone = this.traversal.clone();
+        if (!clone.isLocked()) {
+            clone.setGraph(graph);
+            clone.applyStrategies();
+        }
+        return clone;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/80e511c7/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalScriptFunction.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalScriptFunction.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalScriptFunction.java
new file mode 100644
index 0000000..abce73a
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalScriptFunction.java
@@ -0,0 +1,69 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.process.computer.traversal;
+
+import org.apache.tinkerpop.gremlin.process.computer.util.ScriptEngineCache;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalSource;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+
+import javax.script.Bindings;
+import javax.script.ScriptEngine;
+import javax.script.ScriptException;
+import java.io.Serializable;
+import java.util.function.Function;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public final class TraversalScriptFunction<S, E> implements Function<Graph, Traversal.Admin<S, E>>, Serializable {
+
+    private final TraversalSource.Builder traversalContextBuilder;
+    private final String scriptEngineName;
+    private final String traversalScript;
+    private final Object[] bindings;
+
+    public TraversalScriptFunction(final TraversalSource.Builder traversalContextBuilder, final String scriptEngineName, final String traversalScript, final Object... bindings) {
+        this.traversalContextBuilder = traversalContextBuilder;
+        this.scriptEngineName = scriptEngineName;
+        this.traversalScript = traversalScript;
+        this.bindings = bindings;
+    }
+
+    public Traversal.Admin<S, E> apply(final Graph graph) {
+        try {
+            final ScriptEngine engine = ScriptEngineCache.get(this.scriptEngineName);
+            final Bindings engineBindings = engine.createBindings();
+            engineBindings.put("g", this.traversalContextBuilder.create(graph));
+            if (this.bindings.length % 2 != 0)
+                throw new IllegalArgumentException("The provided key/value bindings array length must be a multiple of two");
+            for (int i = 0; i < this.bindings.length; i = i + 2) {
+                engineBindings.put((String) this.bindings[i], this.bindings[i + 1]);
+            }
+            final Traversal.Admin<S, E> traversal = (Traversal.Admin<S, E>) engine.eval(this.traversalScript, engineBindings);
+            if (!traversal.isLocked()) {
+                traversal.setGraph(graph);
+                traversal.applyStrategies();
+            }
+            return traversal;
+        } catch (final ScriptException e) {
+            throw new IllegalStateException(e.getMessage(), e);
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/80e511c7/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalScriptSupplier.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalScriptSupplier.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalScriptSupplier.java
deleted file mode 100644
index 1df5828..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalScriptSupplier.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tinkerpop.gremlin.process.computer.traversal;
-
-import org.apache.tinkerpop.gremlin.process.computer.util.ScriptEngineCache;
-import org.apache.tinkerpop.gremlin.process.computer.util.ShellGraph;
-import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalSource;
-import org.apache.tinkerpop.gremlin.structure.Graph;
-
-import javax.script.Bindings;
-import javax.script.ScriptEngine;
-import javax.script.ScriptException;
-import java.io.Serializable;
-import java.util.function.Supplier;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public final class TraversalScriptSupplier<S, E> implements Supplier<Traversal.Admin<S, E>>, Serializable {
-
-    private final TraversalSource.Builder traversalContextBuilder;
-    private final Class<? extends Graph> graphClass;
-    private final String scriptEngineName;
-    private final String traversalScript;
-    private final Object[] bindings;
-
-    public TraversalScriptSupplier(final Class<? extends Graph> graphClass, final TraversalSource.Builder traversalContextBuilder, final String scriptEngineName, final String traversalScript, final Object... bindings) {
-        this.traversalContextBuilder = traversalContextBuilder;
-        this.graphClass = graphClass;
-        this.scriptEngineName = scriptEngineName;
-        this.traversalScript = traversalScript;
-        this.bindings = bindings;
-    }
-
-    public Traversal.Admin<S, E> get() {
-        try {
-            final ScriptEngine engine = ScriptEngineCache.get(this.scriptEngineName);
-            final Bindings engineBindings = engine.createBindings();
-            engineBindings.put("g", this.traversalContextBuilder.create(ShellGraph.of(this.graphClass)));
-            if (this.bindings.length % 2 != 0)
-                throw new IllegalArgumentException("The provided key/value bindings array length must be a multiple of two");
-            for (int i = 0; i < this.bindings.length; i = i + 2) {
-                engineBindings.put((String) this.bindings[i], this.bindings[i + 1]);
-            }
-            return (Traversal.Admin<S, E>) engine.eval(this.traversalScript, engineBindings);
-        } catch (final ScriptException e) {
-            throw new IllegalStateException(e.getMessage(), e);
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/80e511c7/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalSupplier.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalSupplier.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalSupplier.java
deleted file mode 100644
index c8e7ff7..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalSupplier.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tinkerpop.gremlin.process.computer.traversal;
-
-import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-
-import java.io.Serializable;
-import java.util.function.Supplier;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public final class TraversalSupplier<S, E> implements Supplier<Traversal.Admin<S, E>>, Serializable {
-
-    private final Traversal.Admin<S, E> traversal;
-    private final boolean cloneOnGet;
-
-    public TraversalSupplier(final Traversal.Admin<S, E> traversal, final boolean cloneOnGet) {
-        this.traversal = traversal;
-        this.cloneOnGet = cloneOnGet;
-    }
-
-    @Override
-    public Traversal.Admin<S, E> get() {
-        return this.cloneOnGet ? this.traversal.clone() : this.traversal;
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/80e511c7/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 7b4e8b0..581a263 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
@@ -30,7 +30,7 @@ import org.apache.tinkerpop.gremlin.process.computer.VertexProgram;
 import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.ComputerResultStep;
 import org.apache.tinkerpop.gremlin.process.computer.traversal.step.sideEffect.mapreduce.TraverserMapReduce;
 import org.apache.tinkerpop.gremlin.process.computer.util.AbstractVertexProgramBuilder;
-import org.apache.tinkerpop.gremlin.process.computer.util.LambdaHolder;
+import org.apache.tinkerpop.gremlin.process.computer.util.ConfigurationTraversal;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalSideEffects;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalSource;
@@ -58,6 +58,7 @@ import java.util.HashSet;
 import java.util.Iterator;
 import java.util.Optional;
 import java.util.Set;
+import java.util.function.Function;
 import java.util.function.Supplier;
 
 
@@ -83,7 +84,7 @@ public final class TraversalVertexProgram implements VertexProgram<TraverserSet<
     private static final Set<String> ELEMENT_COMPUTE_KEYS = new HashSet<>(Arrays.asList(HALTED_TRAVERSERS, TraversalSideEffects.SIDE_EFFECTS));
     private static final Set<String> MEMORY_COMPUTE_KEYS = new HashSet<>(Collections.singletonList(VOTE_TO_HALT));
 
-    private LambdaHolder<Supplier<Traversal.Admin<?, ?>>> traversalSupplier;
+    private ConfigurationTraversal<?, ?> configurationTraversal;
     private Traversal.Admin<?, ?> traversal;
     private TraversalMatrix<?, ?> traversalMatrix;
 
@@ -110,15 +111,11 @@ public final class TraversalVertexProgram implements VertexProgram<TraverserSet<
 
     @Override
     public void loadState(final Graph graph, final Configuration configuration) {
-        this.traversalSupplier = LambdaHolder.loadState(configuration, TRAVERSAL_SUPPLIER);
-        if (null == this.traversalSupplier) {
+        this.configurationTraversal = ConfigurationTraversal.loadState(graph, configuration, TRAVERSAL_SUPPLIER);
+        if (null == this.configurationTraversal) {
             throw new IllegalArgumentException("The configuration does not have a traversal supplier");
         }
-        this.traversal = this.traversalSupplier.get().get();
-        if (!this.traversal.isLocked()) {
-            this.traversal.setGraph(graph);
-            this.traversal.applyStrategies();
-        }
+        this.traversal = this.configurationTraversal.get();
         ((ComputerResultStep) this.traversal.getEndStep()).byPass();
         this.traversalMatrix = new TraversalMatrix<>(this.traversal);
         for (final MapReducer<?, ?, ?, ?, ?> mapReducer : TraversalHelper.getStepsOfAssignableClassRecursively(MapReducer.class, this.traversal)) {
@@ -131,7 +128,7 @@ public final class TraversalVertexProgram implements VertexProgram<TraverserSet<
     @Override
     public void storeState(final Configuration configuration) {
         VertexProgram.super.storeState(configuration);
-        this.traversalSupplier.storeState(configuration);
+        this.configurationTraversal.storeState(configuration);
     }
 
     @Override
@@ -283,25 +280,19 @@ public final class TraversalVertexProgram implements VertexProgram<TraverserSet<
             super(TraversalVertexProgram.class);
         }
 
-        public Builder traversal(final Class<? extends Graph> graphClass, final TraversalSource.Builder builder, final String scriptEngine, final String traversalScript, final Object... bindings) {
-            LambdaHolder.storeState(this.configuration, LambdaHolder.Type.SERIALIZED_OBJECT, TRAVERSAL_SUPPLIER, new TraversalScriptSupplier<>(graphClass, builder, scriptEngine, traversalScript, bindings));
+        public Builder traversal(final TraversalSource.Builder builder, final String scriptEngine, final String traversalScript, final Object... bindings) {
+            ConfigurationTraversal.storeState(new TraversalScriptFunction<>(builder, scriptEngine, traversalScript, bindings), this.configuration, TRAVERSAL_SUPPLIER);
             return this;
         }
 
         public Builder traversal(final Traversal.Admin<?, ?> traversal) {
-            return this.traversal(traversal, true);
-        }
-
-        public Builder traversal(final Traversal.Admin<?, ?> traversal, boolean serialize) {
-            if (serialize)
-                LambdaHolder.storeState(this.configuration, LambdaHolder.Type.SERIALIZED_OBJECT, TRAVERSAL_SUPPLIER, new TraversalSupplier<>(traversal, false));
-            else
-                LambdaHolder.storeState(this.configuration, LambdaHolder.Type.OBJECT, TRAVERSAL_SUPPLIER, new TraversalSupplier<>(traversal, true));
+            ConfigurationTraversal.storeState(new TraversalObjectFunction<>(traversal), this.configuration, TRAVERSAL_SUPPLIER);
             return this;
         }
 
-        public Builder traversal(final Class<Supplier<Traversal.Admin>> traversalClass) {
-            LambdaHolder.storeState(this.configuration, LambdaHolder.Type.CLASS, TRAVERSAL_SUPPLIER, traversalClass);
+
+        public Builder traversal(final Class<Function<Graph,Traversal.Admin<?, ?>>> traversalClass) {
+            ConfigurationTraversal.storeState(traversalClass, this.configuration, TRAVERSAL_SUPPLIER);
             return this;
         }
 

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/80e511c7/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/ComputerResultStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/ComputerResultStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/ComputerResultStep.java
index a5e49c9..a40ae0f 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/ComputerResultStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/ComputerResultStep.java
@@ -76,7 +76,7 @@ public final class ComputerResultStep<S> extends AbstractStep<S, S> {
         if (this.byPass) return this.starts.next();
         if (this.first && null == this.computerResult) {
             try {
-                populateTraversers(this.graphComputer.program(TraversalVertexProgram.build().traversal(this.getTraversal(), !this.graphComputer.features().supportsDirectObjects()).create(this.graph)).submit().get());
+                populateTraversers(this.graphComputer.program(TraversalVertexProgram.build().traversal(this.getTraversal()).create(this.graph)).submit().get());
             } catch (final Exception e) {
                 throw new IllegalStateException(e.getMessage(), e);
             }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/80e511c7/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/ConfigurationTraversal.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/ConfigurationTraversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/ConfigurationTraversal.java
new file mode 100644
index 0000000..0c1e999
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/ConfigurationTraversal.java
@@ -0,0 +1,82 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.process.computer.util;
+
+
+import org.apache.commons.configuration.Configuration;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+
+import java.util.function.Function;
+import java.util.function.Supplier;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public final class ConfigurationTraversal<S, E> implements Supplier<Traversal.Admin<S, E>> {
+
+    private Function<Graph, Traversal.Admin<S, E>> functionTraversal;
+    private Object configTraversal;
+    private String configKey;
+    private Graph graph;
+
+    public Traversal.Admin<S, E> get() {
+        return this.functionTraversal.apply(this.graph);
+    }
+
+    private ConfigurationTraversal() {
+
+    }
+
+    public void storeState(final Configuration configuration) {
+        if (null == this.configTraversal)
+            throw new IllegalStateException("The " + ConfigurationTraversal.class.getSimpleName() + " does not have a configuration traversal");
+        try {
+            VertexProgramHelper.serialize(this.configTraversal, configuration, this.configKey);   // the traversal can not be serialized (probably because of lambdas). As such, try direct reference.
+        } catch (final IllegalArgumentException e) {
+            configuration.setProperty(this.configKey, this.configTraversal);
+        }
+    }
+
+    public static <S, E> ConfigurationTraversal<S, E> storeState(final Object traversalConfigObject, final Configuration configuration, final String configKey) {
+        final ConfigurationTraversal<S, E> configurationTraversal = new ConfigurationTraversal<>();
+        configurationTraversal.configKey = configKey;
+        configurationTraversal.configTraversal = traversalConfigObject;
+        configurationTraversal.storeState(configuration);
+        return configurationTraversal;
+    }
+
+    public static <S, E> ConfigurationTraversal<S, E> loadState(final Graph graph, final Configuration configuration, final String configKey) {
+        final ConfigurationTraversal<S, E> configurationTraversal = new ConfigurationTraversal<>();
+        configurationTraversal.graph = graph;
+        configurationTraversal.configKey = configKey;
+        final Object configValue = configuration.getProperty(configKey);
+        configurationTraversal.configTraversal = configValue instanceof String ? VertexProgramHelper.deserialize(configuration, configKey) : (Function<Graph, Traversal.Admin<S, E>>) configValue;
+        if (configurationTraversal.configTraversal instanceof Class) {
+            try {
+                configurationTraversal.functionTraversal = ((Class<Function<Graph, Traversal.Admin<S, E>>>) configurationTraversal.configTraversal).newInstance();
+            } catch (final Exception e) {
+                throw new IllegalStateException(e.getMessage(), e);
+            }
+        } else {
+            configurationTraversal.functionTraversal = (Function<Graph, Traversal.Admin<S, E>>) configurationTraversal.configTraversal;
+        }
+        return configurationTraversal;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/80e511c7/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/LambdaHolder.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/LambdaHolder.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/LambdaHolder.java
deleted file mode 100644
index d93d10c..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/LambdaHolder.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tinkerpop.gremlin.process.computer.util;
-
-
-import org.apache.commons.configuration.Configuration;
-
-import java.util.function.Supplier;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public final class LambdaHolder<S> implements Supplier<S> {
-
-    public enum Type {
-        OBJECT,
-        SERIALIZED_OBJECT,
-        CLASS,
-        SCRIPT
-    }
-
-    private Type type;
-    private Object configObject;
-    private Object realObject;
-    private String configKeyPrefix;
-
-    private static final String DOT_TYPE = ".type";
-    private static final String DOT_OBJECT = ".object";
-
-
-    public S get() {
-        return (S) this.realObject;
-    }
-
-    private LambdaHolder() {
-
-    }
-
-    public static <T> LambdaHolder<T> storeState(final Configuration configuration, final Type type, final String configKeyPrefix, final Object configObject) {
-        if (type.equals(Type.SCRIPT) && !(configObject instanceof String[]))
-            throw new IllegalArgumentException("Script lambda types must have a String[] configuration object");
-        if (type.equals(Type.CLASS) && !(configObject instanceof Class))
-            throw new IllegalArgumentException("Class lambda types must have a Class configuration object");
-
-        final LambdaHolder<T> lambdaHolder = new LambdaHolder<>();
-        lambdaHolder.type = type;
-        lambdaHolder.configKeyPrefix = configKeyPrefix;
-        lambdaHolder.configObject = configObject;
-        lambdaHolder.storeState(configuration);
-        return lambdaHolder;
-    }
-
-    public static <T> LambdaHolder<T> loadState(final Configuration configuration, final String configKeyPrefix) {
-        if (!configuration.containsKey(configKeyPrefix.concat(DOT_TYPE)))
-            return null;
-        if (!configuration.containsKey(configKeyPrefix.concat(DOT_OBJECT)))
-            return null;
-
-        final LambdaHolder<T> lambdaHolder = new LambdaHolder<>();
-        lambdaHolder.configKeyPrefix = configKeyPrefix;
-        lambdaHolder.type = Type.valueOf(configuration.getString(lambdaHolder.configKeyPrefix.concat(DOT_TYPE)));
-        if (lambdaHolder.type.equals(Type.OBJECT)) {
-            lambdaHolder.configObject = configuration.getProperty(lambdaHolder.configKeyPrefix.concat(DOT_OBJECT));
-            lambdaHolder.realObject = lambdaHolder.configObject;
-        } else if (lambdaHolder.type.equals(Type.SERIALIZED_OBJECT)) {
-            lambdaHolder.configObject = VertexProgramHelper.deserialize(configuration, lambdaHolder.configKeyPrefix.concat(DOT_OBJECT));
-            lambdaHolder.realObject = lambdaHolder.configObject;
-        } else if (lambdaHolder.type.equals(Type.CLASS)) {
-            try {
-                final Class klass = (Class) Class.forName(configuration.getString(lambdaHolder.configKeyPrefix.concat(DOT_OBJECT)));
-                lambdaHolder.configObject = klass;
-                lambdaHolder.realObject = klass.newInstance();
-            } catch (final Exception e) {
-                throw new IllegalStateException(e.getMessage(), e);
-            }
-        } else { // SCRIPT
-            final String[] script = VertexProgramHelper.deserialize(configuration, lambdaHolder.configKeyPrefix.concat(DOT_OBJECT));
-            lambdaHolder.configObject = script;
-            lambdaHolder.realObject = new ScriptEngineLambda(script[0], script[1]);
-        }
-        return lambdaHolder;
-    }
-
-
-    public void storeState(final Configuration configuration) {
-        configuration.setProperty(this.configKeyPrefix.concat(DOT_TYPE), this.type.name());
-        if (this.type.equals(Type.OBJECT))
-            configuration.setProperty(this.configKeyPrefix.concat(DOT_OBJECT), this.configObject);
-        else if (this.type.equals(Type.SERIALIZED_OBJECT))
-            VertexProgramHelper.serialize(this.configObject, configuration, this.configKeyPrefix.concat(DOT_OBJECT));
-        else if (this.type.equals(Type.CLASS))
-            configuration.setProperty(this.configKeyPrefix.concat(DOT_OBJECT), ((Class) this.configObject).getCanonicalName());
-        else   // SCRIPT
-            VertexProgramHelper.serialize(this.configObject, configuration, this.configKeyPrefix.concat(DOT_OBJECT));
-    }
-
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/80e511c7/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/ShellGraph.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/ShellGraph.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/ShellGraph.java
deleted file mode 100644
index 2a0cbb3..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/ShellGraph.java
+++ /dev/null
@@ -1,283 +0,0 @@
-/*
- *
- *  * Licensed to the Apache Software Foundation (ASF) under one
- *  * or more contributor license agreements.  See the NOTICE file
- *  * distributed with this work for additional information
- *  * regarding copyright ownership.  The ASF licenses this file
- *  * to you under the Apache License, Version 2.0 (the
- *  * "License"); you may not use this file except in compliance
- *  * with the License.  You may obtain a copy of the License at
- *  *
- *  * http://www.apache.org/licenses/LICENSE-2.0
- *  *
- *  * Unless required by applicable law or agreed to in writing,
- *  * software distributed under the License is distributed on an
- *  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  * KIND, either express or implied.  See the License for the
- *  * specific language governing permissions and limitations
- *  * under the License.
- *
- */
-
-package org.apache.tinkerpop.gremlin.process.computer.util;
-
-import org.apache.commons.configuration.BaseConfiguration;
-import org.apache.commons.configuration.Configuration;
-import org.apache.tinkerpop.gremlin.process.computer.ComputerResult;
-import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
-import org.apache.tinkerpop.gremlin.process.computer.MapReduce;
-import org.apache.tinkerpop.gremlin.process.computer.VertexProgram;
-import org.apache.tinkerpop.gremlin.structure.Edge;
-import org.apache.tinkerpop.gremlin.structure.Graph;
-import org.apache.tinkerpop.gremlin.structure.Transaction;
-import org.apache.tinkerpop.gremlin.structure.Vertex;
-
-import java.io.Serializable;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.concurrent.Future;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public final class ShellGraph implements Graph, Serializable {
-
-    private final Class<? extends Graph> graphClass;
-    public static final String SHELL_GRAPH_CLASS = "shell.graphClass";
-
-    private ShellGraph(final Class<? extends Graph> graphClass) {
-        this.graphClass = graphClass;
-    }
-
-    @Override
-    public Vertex addVertex(final Object... keyValues) {
-        throw Exceptions.vertexAdditionsNotSupported();
-    }
-
-    @Override
-    public <C extends GraphComputer> C compute(final Class<C> graphComputerClass) throws IllegalArgumentException {
-        return (C) ShellGraphComputer.instance();
-    }
-
-    @Override
-    public GraphComputer compute() throws IllegalArgumentException {
-        return ShellGraphComputer.instance();
-    }
-
-    @Override
-    public Iterator<Vertex> vertices(final Object... vertexIds) {
-        return Collections.emptyIterator();
-    }
-
-    @Override
-    public Iterator<Edge> edges(final Object... edgeIds) {
-        return Collections.emptyIterator();
-    }
-
-    @Override
-    public Transaction tx() {
-        throw Exceptions.transactionsNotSupported();
-    }
-
-    @Override
-    public Variables variables() {
-        throw Exceptions.variablesNotSupported();
-    }
-
-    @Override
-    public Configuration configuration() {
-        final Configuration configuration = new BaseConfiguration();
-        configuration.setProperty(Graph.GRAPH, ShellGraph.class.getName());
-        configuration.setProperty(SHELL_GRAPH_CLASS, this.graphClass);
-        return configuration;
-    }
-
-    @Override
-    public void close() throws Exception {
-
-    }
-
-    public Class<? extends Graph> getGraphClass() {
-        return this.graphClass;
-    }
-
-    public static ShellGraph open(final Configuration configuration) {
-        return new ShellGraph((Class<? extends Graph>) configuration.getProperty(SHELL_GRAPH_CLASS));
-    }
-
-    public static ShellGraph of(final Class<? extends Graph> graphClass) {
-        return new ShellGraph(graphClass);
-    }
-
-    private static class ShellGraphComputer implements GraphComputer {
-
-        private static final ShellGraphComputer INSTANCE = new ShellGraphComputer();
-
-        @Override
-        public GraphComputer isolation(final Isolation isolation) {
-            return this;
-        }
-
-        @Override
-        public GraphComputer result(final ResultGraph resultGraph) {
-            return this;
-        }
-
-        @Override
-        public GraphComputer persist(final Persist persist) {
-            return this;
-        }
-
-        @Override
-        public GraphComputer program(final VertexProgram vertexProgram) {
-            return this;
-        }
-
-        @Override
-        public GraphComputer mapReduce(final MapReduce mapReduce) {
-            return this;
-        }
-
-        @Override
-        public Future<ComputerResult> submit() {
-            throw new UnsupportedOperationException(ShellGraphComputer.class.getCanonicalName() + " can not be executed as it is simply a placeholder");
-        }
-
-        public static ShellGraphComputer instance() {
-            return INSTANCE;
-        }
-    }
-
-    public class Features implements Graph.Features {
-
-        @Override
-        public GraphFeatures graph() {
-            return new GraphFeatures() {
-                @Override
-                public boolean supportsComputer() {
-                    return true;
-                }
-
-                @Override
-                public boolean supportsPersistence() {
-                    return false;
-                }
-
-                @Override
-                public boolean supportsTransactions() {
-                    return false;
-                }
-
-                @Override
-                public boolean supportsThreadedTransactions() {
-                    return false;
-                }
-
-                @Override
-                public VariableFeatures variables() {
-                    return new VariableFeatures() {
-                        @Override
-                        public boolean supportsVariables() {
-                            return false;
-                        }
-                    };
-                }
-            };
-        }
-
-        @Override
-        public VertexFeatures vertex() {
-            return new VertexFeatures() {
-                @Override
-                public boolean supportsAddVertices() {
-                    return false;
-                }
-
-                @Override
-                public boolean supportsRemoveVertices() {
-                    return false;
-                }
-
-                @Override
-                public boolean supportsMultiProperties() {
-                    return false;
-                }
-
-                @Override
-                public boolean supportsMetaProperties() {
-                    return false;
-                }
-
-                @Override
-                public VertexPropertyFeatures properties() {
-                    return new VertexPropertyFeatures() {
-                        @Override
-                        public boolean supportsAddProperty() {
-                            return false;
-                        }
-
-                        @Override
-                        public boolean supportsRemoveProperty() {
-                            return false;
-                        }
-
-                        @Override
-                        public boolean supportsUserSuppliedIds() {
-                            return false;
-                        }
-
-                        @Override
-                        public boolean supportsNumericIds() {
-                            return false;
-                        }
-
-                        @Override
-                        public boolean supportsStringIds() {
-                            return false;
-                        }
-
-                        @Override
-                        public boolean supportsUuidIds() {
-                            return false;
-                        }
-
-                        @Override
-                        public boolean supportsCustomIds() {
-                            return false;
-                        }
-
-                        @Override
-                        public boolean supportsAnyIds() {
-                            return false;
-                        }
-                    };
-                }
-            };
-        }
-
-        @Override
-        public EdgeFeatures edge() {
-            return new EdgeFeatures() {
-                @Override
-                public boolean supportsAddEdges() {
-                    return false;
-                }
-
-                @Override
-                public boolean supportsRemoveEdges() {
-                    return false;
-                }
-
-                @Override
-                public EdgePropertyFeatures properties() {
-                    return new EdgePropertyFeatures() {
-                        @Override
-                        public boolean supportsProperties() {
-                            return false;
-                        }
-                    };
-                }
-            };
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/80e511c7/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalStrategies.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalStrategies.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalStrategies.java
index 99cfb93..179f967 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalStrategies.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalStrategies.java
@@ -18,7 +18,6 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal;
 
-import org.apache.tinkerpop.gremlin.process.computer.util.ShellGraph;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.ConjunctionStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.finalization.EngineDependentStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.finalization.ProfileStrategy;
@@ -216,10 +215,6 @@ public interface TraversalStrategies extends Serializable, Cloneable {
             }
             return traversalStrategies;
         }
-
-        public static Class<? extends Graph> getGraphClass(final Graph graph) {
-            return graph instanceof ShellGraph ? ((ShellGraph) graph).getGraphClass() : graph.getClass();
-        }
     }
 
 

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/80e511c7/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalSource.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalSource.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalSource.java
index 401ae92..c6e3baa 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalSource.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalSource.java
@@ -74,7 +74,7 @@ public class GraphTraversalSource implements TraversalSource {
         this.withoutStrategies = withoutStrategies;
         this.withStrategies.addAll(engineBuilder.getWithStrategies());
         this.withoutStrategies.addAll(engineBuilder.getWithoutStrategies());
-        final TraversalStrategies tempStrategies = TraversalStrategies.GlobalCache.getStrategies(TraversalStrategies.GlobalCache.getGraphClass(this.graph));
+        final TraversalStrategies tempStrategies = TraversalStrategies.GlobalCache.getStrategies(this.graph.getClass());
         this.strategies = withStrategies.isEmpty() && withoutStrategies.isEmpty() ?
                 tempStrategies :
                 tempStrategies.clone()

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/80e511c7/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ComputerAwareStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ComputerAwareStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ComputerAwareStep.java
index 7dcdc70..098ca58 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ComputerAwareStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ComputerAwareStep.java
@@ -57,7 +57,7 @@ public abstract class ComputerAwareStep<S, E> extends AbstractStep<S, E> impleme
     @Override
     public ComputerAwareStep<S, E> clone() {
         final ComputerAwareStep<S, E> clone = (ComputerAwareStep<S, E>) super.clone();
-        clone.previousIterator = Collections.emptyIterator();
+        clone.previousIterator = EmptyIterator.instance();
         return clone;
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/80e511c7/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ReducingBarrierStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ReducingBarrierStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ReducingBarrierStep.java
index 90f2182..078b583 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ReducingBarrierStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ReducingBarrierStep.java
@@ -129,7 +129,8 @@ public abstract class ReducingBarrierStep<S, E> extends AbstractStep<S, E> imple
 
         }
 
-        public void loadState(final Configuration configuration) {
+        @Override
+        public void loadState(final Graph graph, final Configuration configuration) {
             this.seedSupplier = VertexProgramHelper.deserialize(configuration, REDUCING_BARRIER_STEP_SEED_SUPPLIER);
             this.biFunction = VertexProgramHelper.deserialize(configuration, REDUCING_BARRIER_STEP_BI_FUNCTION);
         }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/80e511c7/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversal.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversal.java
index 92572a6..3415931 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversal.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversal.java
@@ -56,7 +56,7 @@ public class DefaultTraversal<S, E> implements Traversal.Admin<S, E> {
     public DefaultTraversal() {
         this.graph = null;
         // necessary for anonymous traversals without a graph start (rethink how this works in the future)
-        this.setStrategies(TraversalStrategies.GlobalCache.getStrategies(TraversalStrategies.GlobalCache.getGraphClass(EmptyGraph.instance())));
+        this.setStrategies(TraversalStrategies.GlobalCache.getStrategies(EmptyGraph.class));
     }
 
 

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/80e511c7/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/computer/ComputerTestHelper.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/computer/ComputerTestHelper.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/computer/ComputerTestHelper.groovy
index ff34c91..c054fc8 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/computer/ComputerTestHelper.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/computer/ComputerTestHelper.groovy
@@ -29,19 +29,19 @@ import org.apache.tinkerpop.gremlin.structure.Graph
  */
 public class ComputerTestHelper {
 
-    public static final Traversal compute(
+    public static final Traversal.Admin<?,?> compute(
             final Graph graph,
             final TraversalSource.Builder builder,
             final String scriptEngineName,
             final String traversalScript,
             final Object... bindings) {
 
-        final TraversalVertexProgram program = TraversalVertexProgram.build().traversal(graph.getClass(), builder, scriptEngineName, traversalScript, bindings).create();
+        final TraversalVertexProgram program = TraversalVertexProgram.build().traversal(builder, scriptEngineName, traversalScript, bindings).create(graph);
         final ComputerResult result = builder.create(graph).getGraphComputer().get().program(program).submit().get();
         return program.computerResultTraversal(result);
     }
 
-    public static final Traversal compute(final String script, final GraphTraversalSource g, final Object... bindings) {
+    public static final <S,E> Traversal.Admin<S,E> compute(final String script, final GraphTraversalSource g, final Object... bindings) {
         return ComputerTestHelper.compute(g.getGraph().get(), g.asBuilder(), "gremlin-groovy", script, bindings);
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/80e511c7/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/groovy/plugin/HadoopRemoteAcceptor.java
----------------------------------------------------------------------
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/groovy/plugin/HadoopRemoteAcceptor.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/groovy/plugin/HadoopRemoteAcceptor.java
index c3f14ff..704ef1a 100644
--- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/groovy/plugin/HadoopRemoteAcceptor.java
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/groovy/plugin/HadoopRemoteAcceptor.java
@@ -100,7 +100,7 @@ public class HadoopRemoteAcceptor implements RemoteAcceptor {
             String script = RemoteAcceptor.getScript(String.join(SPACE, args), this.shell);
             if (this.useSugarPlugin)
                 script = SugarLoader.class.getPackage() + ".SugarLoader.load()\n" + script;
-            final TraversalVertexProgram program = TraversalVertexProgram.build().traversal(this.hadoopGraph.getClass(), GraphTraversalSource.computer(), "gremlin-groovy", script).create(this.hadoopGraph);
+            final TraversalVertexProgram program = TraversalVertexProgram.build().traversal(GraphTraversalSource.computer(), "gremlin-groovy", script).create(this.hadoopGraph);
             final ComputerResult computerResult = this.hadoopGraph.compute().program(program).submit().get();
             this.shell.getInterp().getContext().setProperty(RESULT, computerResult);
 

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/80e511c7/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/example/TraversalSupplier1.java
----------------------------------------------------------------------
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/example/TraversalSupplier1.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/example/TraversalSupplier1.java
index f5d19c2..1631ca8 100644
--- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/example/TraversalSupplier1.java
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/example/TraversalSupplier1.java
@@ -18,18 +18,18 @@
  */
 package org.apache.tinkerpop.gremlin.hadoop.process.computer.example;
 
-import org.apache.tinkerpop.gremlin.hadoop.structure.HadoopGraph;
-import org.apache.tinkerpop.gremlin.process.computer.util.ShellGraph;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
 
-import java.util.function.Supplier;
+import java.util.function.Function;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public class TraversalSupplier1 implements Supplier<Traversal> {
+public class TraversalSupplier1 implements Function<Graph, Traversal<Vertex, String>> {
     @Override
-    public Traversal get() {
-        return ShellGraph.of(HadoopGraph.class).traversal().V().out().out().values("name");
+    public Traversal<Vertex, String> apply(final Graph graph) {
+        return graph.traversal().V().out().out().values("name");
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/80e511c7/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/example/TraversalSupplier2.java
----------------------------------------------------------------------
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/example/TraversalSupplier2.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/example/TraversalSupplier2.java
index 7636495..b3366c5 100644
--- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/example/TraversalSupplier2.java
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/example/TraversalSupplier2.java
@@ -19,7 +19,6 @@
 package org.apache.tinkerpop.gremlin.hadoop.process.computer.example;
 
 import org.apache.tinkerpop.gremlin.hadoop.structure.HadoopGraph;
-import org.apache.tinkerpop.gremlin.process.computer.util.ShellGraph;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 
 import java.util.function.Supplier;
@@ -30,6 +29,6 @@ import java.util.function.Supplier;
 public class TraversalSupplier2 implements Supplier<Traversal> {
     @Override
     public Traversal get() {
-        return ShellGraph.of(HadoopGraph.class).traversal().V().<String>values("name").map(s -> s.get().length()).groupCount().<Integer>by(i -> i + 100);
+        return HadoopGraph.open().traversal().V().<String>values("name").map(s -> s.get().length()).groupCount().<Integer>by(i -> i + 100);
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/80e511c7/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/example/TraversalSupplier3.java
----------------------------------------------------------------------
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/example/TraversalSupplier3.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/example/TraversalSupplier3.java
index 296937f..a1c0ecb 100644
--- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/example/TraversalSupplier3.java
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/example/TraversalSupplier3.java
@@ -19,7 +19,6 @@
 package org.apache.tinkerpop.gremlin.hadoop.process.computer.example;
 
 import org.apache.tinkerpop.gremlin.hadoop.structure.HadoopGraph;
-import org.apache.tinkerpop.gremlin.process.computer.util.ShellGraph;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 
 import java.util.Collection;
@@ -31,6 +30,6 @@ import java.util.function.Supplier;
 public class TraversalSupplier3 implements Supplier<Traversal> {
     @Override
     public Traversal get() {
-        return ShellGraph.of(HadoopGraph.class).traversal().V().<String>values("name").group().<String>by(s -> s.substring(1, 2)).by(v -> v).<Collection>by(Collection::size);
+        return HadoopGraph.open().traversal().V().<String>values("name").group().<String>by(s -> s.substring(1, 2)).by(v -> v).<Collection>by(Collection::size);
     }
 }


[32/50] [abbrv] incubator-tinkerpop git commit: HasStep returns an UnmodifiableList of HasContainers.

Posted by dk...@apache.org.
HasStep returns an UnmodifiableList of HasContainers.


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

Branch: refs/heads/TINKERPOP3-666
Commit: f968889f172b8f2addd3787f77e4f5d1afceac98
Parents: 570d96a
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Fri May 8 16:04:23 2015 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Fri May 8 16:04:23 2015 -0600

----------------------------------------------------------------------
 .../tinkerpop/gremlin/process/traversal/step/filter/HasStep.java   | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/f968889f/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/HasStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/HasStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/HasStep.java
index 4471d22..c45ba04 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/HasStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/HasStep.java
@@ -58,7 +58,7 @@ public class HasStep<S extends Element> extends FilterStep<S> implements HasCont
 
     @Override
     public List<HasContainer> getHasContainers() {
-        return this.hasContainers;
+        return Collections.unmodifiableList(this.hasContainers);
     }
 
     @Override


[22/50] [abbrv] incubator-tinkerpop git commit: Merge remote-tracking branch 'origin/master'

Posted by dk...@apache.org.
Merge remote-tracking branch 'origin/master'


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

Branch: refs/heads/TINKERPOP3-666
Commit: 8f798f5cdae22da52befc722602facf95d673e8d
Parents: 186494d 48c15ee
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri May 8 14:14:06 2015 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri May 8 14:14:06 2015 -0400

----------------------------------------------------------------------
 CHANGELOG.asciidoc                              |  1 +
 .../gremlin/process/computer/MapReduce.java     |  9 ++++---
 .../gremlin/process/computer/VertexProgram.java | 15 ++++++------
 .../peerpressure/ClusterCountMapReduce.java     |  3 ++-
 .../ClusterPopulationMapReduce.java             |  3 ++-
 .../peerpressure/PeerPressureVertexProgram.java |  3 ++-
 .../ranking/pagerank/PageRankMapReduce.java     |  3 ++-
 .../ranking/pagerank/PageRankVertexProgram.java |  3 ++-
 .../traversal/TraversalVertexProgram.java       | 12 ++++++----
 .../traversal/step/map/ComputerResultStep.java  |  2 +-
 .../mapreduce/TraverserMapReduce.java           |  5 ++--
 .../util/AbstractVertexProgramBuilder.java      |  5 ++--
 .../process/traversal/step/map/GroupStep.java   | 25 +++++++++-----------
 .../step/sideEffect/AggregateStep.java          |  5 ++--
 .../sideEffect/GroupCountSideEffectStep.java    |  5 ++--
 .../step/sideEffect/GroupSideEffectStep.java    |  7 +++---
 .../traversal/step/sideEffect/StoreStep.java    |  5 ++--
 .../step/sideEffect/TreeSideEffectStep.java     |  3 ++-
 .../ranking/PageRankVertexProgramTest.java      |  2 +-
 .../groovy/plugin/HadoopRemoteAcceptor.java     |  2 +-
 .../hadoop/process/computer/HadoopCombine.java  |  5 +++-
 .../hadoop/process/computer/HadoopMap.java      |  5 +++-
 .../hadoop/process/computer/HadoopReduce.java   |  6 +++--
 .../computer/giraph/GiraphGraphComputer.java    |  2 +-
 .../process/computer/giraph/GiraphMemory.java   |  6 ++++-
 .../computer/giraph/GiraphMessageCombiner.java  |  5 +++-
 .../computer/giraph/GiraphWorkerContext.java    |  5 +++-
 .../process/computer/spark/SparkExecutor.java   |  9 +++----
 .../computer/spark/SparkGraphComputer.java      |  2 +-
 .../process/computer/util/MemoryMapReduce.java  |  3 ++-
 .../structure/io/ObjectWritableComparator.java  |  7 ++++--
 31 files changed, 105 insertions(+), 68 deletions(-)
----------------------------------------------------------------------



[35/50] [abbrv] incubator-tinkerpop git commit: Merge remote-tracking branch 'origin/master'

Posted by dk...@apache.org.
Merge remote-tracking branch 'origin/master'


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

Branch: refs/heads/TINKERPOP3-666
Commit: b4a1c8d9c20cda9e9e8c2c453ee9949b111a01c1
Parents: 77957a3 179b339
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Sat May 9 06:12:48 2015 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Sat May 9 06:12:48 2015 -0400

----------------------------------------------------------------------
 .../computer/util/ConfigurationTraversal.java        |  2 --
 .../process/traversal/dsl/graph/GraphTraversal.java  | 15 ++++++++++++---
 .../process/traversal/step/filter/HasStep.java       |  2 +-
 .../process/traversal/step/map/OrderGlobalStep.java  |  2 +-
 .../process/traversal/step/map/OrderLocalStep.java   |  4 ++--
 .../process/traversal/step/util/HasContainer.java    |  6 ++++--
 .../org/apache/tinkerpop/gremlin/structure/P.java    | 11 +++++++++++
 7 files changed, 31 insertions(+), 11 deletions(-)
----------------------------------------------------------------------



[25/50] [abbrv] incubator-tinkerpop git commit: Add a note about muting logging.

Posted by dk...@apache.org.
Add a note about muting logging.


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

Branch: refs/heads/TINKERPOP3-666
Commit: 134984e7b48dfd30747e743bd49e71628f65bb34
Parents: 0b99462
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri May 8 15:49:53 2015 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri May 8 15:49:53 2015 -0400

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


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/134984e7/README.asciidoc
----------------------------------------------------------------------
diff --git a/README.asciidoc b/README.asciidoc
index fadff69..588c25a 100644
--- a/README.asciidoc
+++ b/README.asciidoc
@@ -40,6 +40,7 @@ export GREMLIN_TESTS='org.apache.tinkerpop.gremlin.process.traversal.step.map.Pa
 mvn -Dmaven.javadoc.skip=true --projects tinkergraph-gremlin test
 ----
 ** Clean the `.groovy/grapes/org.apache.tinkerpop` directory on build: `mvn clean install -DcleanGrapes`
+** Turn off "heavy" logging in the "process" tests: `mvn clean install -DargLine="-DmuteTestLogs=true"`
 * Regenerate test data (only necessary given changes to IO classes): `mvn clean install -Dio` from `tinkergraph-gremlin` directory
 ** If there are changes to the Gryo format, it may be necessary to generate the Grateful Dead dataset from GraphSON (see `IoDataGenerationTest.shouldWriteGratefulDead`)
 * Check license headers are present: `mvn apache-rat:check`


[05/50] [abbrv] incubator-tinkerpop git commit: Fix test name mispellings.

Posted by dk...@apache.org.
Fix test name mispellings.


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

Branch: refs/heads/TINKERPOP3-666
Commit: 7dfc757d17804202567d7800b25361889e9cfda2
Parents: 330363ab
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri May 8 08:06:31 2015 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri May 8 08:06:31 2015 -0400

----------------------------------------------------------------------
 .../tinkerpop/gremlin/structure/util/star/StarGraphTest.java   | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/7dfc757d/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/util/star/StarGraphTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/util/star/StarGraphTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/util/star/StarGraphTest.java
index 0eab1cf..bf154f4 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/util/star/StarGraphTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/util/star/StarGraphTest.java
@@ -72,7 +72,7 @@ public class StarGraphTest extends AbstractGremlinTest {
 
     @Test
     @LoadGraphWith(LoadGraphWith.GraphData.CREW)
-    public void shoudlValidateThatOriginalAndStarVerticesHaveTheSameTopology() {
+    public void shouldValidateThatOriginalAndStarVerticesHaveTheSameTopology() {
         g.V().forEachRemaining(vertex -> TestHelper.validateEquality(vertex, StarGraph.of(vertex).getStarVertex()));
     }
 
@@ -84,7 +84,7 @@ public class StarGraphTest extends AbstractGremlinTest {
 
     @Test
     @LoadGraphWith(LoadGraphWith.GraphData.CREW)
-    public void shouldAttacheWithGetMethod() {
+    public void shouldAttachWithGetMethod() {
         // vertex host
         g.V().forEachRemaining(vertex -> TestHelper.validateEquality(vertex, StarGraph.of(vertex).getStarVertex().attach(Attachable.Method.get(vertex))));
         g.V().forEachRemaining(vertex -> StarGraph.of(vertex).getStarVertex().properties().forEachRemaining(vertexProperty -> TestHelper.validateEquality(vertexProperty, ((Attachable<VertexProperty>) vertexProperty).attach(Attachable.Method.get(vertex)))));
@@ -110,7 +110,7 @@ public class StarGraphTest extends AbstractGremlinTest {
     @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_MULTI_PROPERTIES)
     @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
     @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_PROPERTY)
-    public void shoudlAttachWithCreateMethod() {
+    public void shouldAttachWithCreateMethod() {
         final Random random = new Random(234335l);
         StarGraph starGraph = StarGraph.open();
         Vertex starVertex = starGraph.addVertex(T.label, "person", "name", "stephen", "name", "spmallete");


[06/50] [abbrv] incubator-tinkerpop git commit: Enforce order of edges in testing equality.

Posted by dk...@apache.org.
Enforce order of edges in testing equality.


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

Branch: refs/heads/TINKERPOP3-666
Commit: 9f669ac3ea558a559d3d106fccc046b2d7fe2683
Parents: 7dfc757
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri May 8 08:07:01 2015 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri May 8 08:07:01 2015 -0400

----------------------------------------------------------------------
 .../java/org/apache/tinkerpop/gremlin/TestHelper.java     | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/9f669ac3/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/TestHelper.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/TestHelper.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/TestHelper.java
index 5a2ab36..7a43de5 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/TestHelper.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/TestHelper.java
@@ -24,6 +24,7 @@ import org.apache.tinkerpop.gremlin.structure.Property;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.VertexProperty;
 import org.apache.tinkerpop.gremlin.structure.io.graphml.GraphMLResourceAccess;
+import org.apache.tinkerpop.gremlin.structure.util.Comparators;
 import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
 
 import java.io.File;
@@ -31,6 +32,7 @@ import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.URL;
+import java.util.Comparator;
 import java.util.Iterator;
 import java.util.List;
 
@@ -130,15 +132,15 @@ public final class TestHelper {
             }
         }
         if (testEdges) {
-            Iterator<Edge> originalEdges = IteratorUtils.set(originalVertex.edges(Direction.OUT)).iterator();
-            Iterator<Edge> otherEdges = IteratorUtils.set(otherVertex.edges(Direction.OUT)).iterator();
+            Iterator<Edge> originalEdges = IteratorUtils.list(originalVertex.edges(Direction.OUT), Comparators.ELEMENT_COMPARATOR).iterator();
+            Iterator<Edge> otherEdges = IteratorUtils.list(otherVertex.edges(Direction.OUT), Comparators.ELEMENT_COMPARATOR).iterator();
             while (originalEdges.hasNext()) {
                 validateEdgeEquality(originalEdges.next(), otherEdges.next());
             }
             assertFalse(otherEdges.hasNext());
 
-            originalEdges = IteratorUtils.set(originalVertex.edges(Direction.IN)).iterator();
-            otherEdges = IteratorUtils.set(otherVertex.edges(Direction.IN)).iterator();
+            originalEdges = IteratorUtils.list(originalVertex.edges(Direction.IN), Comparators.ELEMENT_COMPARATOR).iterator();
+            otherEdges = IteratorUtils.list(otherVertex.edges(Direction.IN), Comparators.ELEMENT_COMPARATOR).iterator();
             while (originalEdges.hasNext()) {
                 validateEdgeEquality(originalEdges.next(), otherEdges.next());
             }


[27/50] [abbrv] incubator-tinkerpop git commit: Add a test for MultiMap methods.

Posted by dk...@apache.org.
Add a test for MultiMap methods.


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

Branch: refs/heads/TINKERPOP3-666
Commit: 2fb5ed92bc86d4e657d7aeec5e4b871e367fb67d
Parents: 134984e
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri May 8 16:46:21 2015 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri May 8 16:46:21 2015 -0400

----------------------------------------------------------------------
 .../gremlin/util/tools/MultiMapTest.java        | 136 +++++++++++++++++++
 1 file changed, 136 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/2fb5ed92/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/util/tools/MultiMapTest.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/util/tools/MultiMapTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/util/tools/MultiMapTest.java
new file mode 100644
index 0000000..6f65bb0
--- /dev/null
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/util/tools/MultiMapTest.java
@@ -0,0 +1,136 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.util.tools;
+
+import org.junit.Test;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.Assert.assertEquals;
+
+/**
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+public class MultiMapTest {
+    @Test
+    public void shouldPutValueInNewSet() {
+        final Map<String,Set<Object>> multi = new HashMap<>();
+        MultiMap.put(multi, "here", 1);
+        MultiMap.put(multi, "there", 2);
+
+        final Set<Object> expected = new HashSet<Object>() {{
+            add(1);
+        }};
+        assertEquals(expected, multi.get("here"));
+    }
+
+    @Test
+    public void shouldPutValueInExistingSet() {
+        final Map<String,Set<Object>> multi = new HashMap<>();
+        MultiMap.put(multi, "here", 1);
+        MultiMap.put(multi, "there", 3);
+
+        final Set<Object> expected1 = new HashSet<Object>() {{
+            add(1);
+        }};
+        assertEquals(expected1, multi.get("here"));
+
+        MultiMap.put(multi, "here", 2);
+
+        final Set<Object> expected2 = new HashSet<Object>() {{
+            add(1);
+            add(2);
+        }};
+        assertEquals(expected2, multi.get("here"));
+    }
+
+    @Test
+    public void shouldPutCollectionInSet() {
+        final Map<String,Set<Object>> multi = new HashMap<>();
+        final Set<Object> expected = new HashSet<Object>() {{
+            add(1);
+            add(2);
+        }};
+        MultiMap.putAll(multi, "here", expected);
+        assertEquals(expected, multi.get("here"));
+    }
+
+    @Test
+    public void shouldContainEntry() {
+        final Map<String,Set<Object>> multi = new HashMap<>();
+        MultiMap.put(multi, "here", 1);
+        MultiMap.put(multi, "there", 2);
+        MultiMap.put(multi, "here", 2);
+
+        assertThat(MultiMap.containsEntry(multi, "here", 1), is(true));
+    }
+
+    @Test
+    public void shouldNotContainEntryValue() {
+        final Map<String,Set<Object>> multi = new HashMap<>();
+        MultiMap.put(multi, "here", 1);
+        MultiMap.put(multi, "there", 2);
+
+        assertThat(MultiMap.containsEntry(multi, "here", 2), is(false));
+    }
+
+    @Test
+    public void shouldNotContainEntryKey() {
+        final Map<String,Set<Object>> multi = new HashMap<>();
+        MultiMap.put(multi, "here", 1);
+        MultiMap.put(multi, "there", 2);
+
+        assertThat(MultiMap.containsEntry(multi, "that", 2), is(false));
+    }
+
+    @Test
+    public void shouldGetAnEntry() {
+        final Map<String,Set<Object>> multi = new HashMap<>();
+        MultiMap.put(multi, "here", 1);
+        MultiMap.put(multi, "there", 3);
+
+        final Set<Object> expected1 = new HashSet<Object>() {{
+            add(1);
+        }};
+        assertEquals(expected1, MultiMap.get(multi, "here"));
+
+        MultiMap.put(multi, "here", 2);
+
+        final Set<Object> expected2 = new HashSet<Object>() {{
+            add(1);
+            add(2);
+        }};
+        assertEquals(expected2, MultiMap.get(multi, "here"));
+    }
+
+    @Test
+    public void shouldGetEmptyIfKeyNotPresent() {
+        final Map<String,Set<Object>> multi = new HashMap<>();
+        MultiMap.put(multi, "here", 1);
+        MultiMap.put(multi, "there", 3);
+
+        assertEquals(Collections.emptySet(), MultiMap.get(multi, "not-here"));
+    }
+}


[09/50] [abbrv] incubator-tinkerpop git commit: Move IoTest to io package with its associated integration test.

Posted by dk...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/4700471c/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/StructureStandardSuite.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/StructureStandardSuite.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/StructureStandardSuite.java
index 4625bc7..2f452a0 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/StructureStandardSuite.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/StructureStandardSuite.java
@@ -23,6 +23,7 @@ import org.apache.tinkerpop.gremlin.GraphProvider;
 import org.apache.tinkerpop.gremlin.algorithm.generator.CommunityGeneratorTest;
 import org.apache.tinkerpop.gremlin.algorithm.generator.DistributionGeneratorTest;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
+import org.apache.tinkerpop.gremlin.structure.io.IoTest;
 import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedEdgeTest;
 import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedGraphTest;
 import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedPropertyTest;

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/4700471c/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/VertexTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/VertexTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/VertexTest.java
index 9e41b47..6e7b02b 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/VertexTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/VertexTest.java
@@ -25,6 +25,7 @@ import org.apache.tinkerpop.gremlin.FeatureRequirementSet;
 import org.apache.tinkerpop.gremlin.GraphManager;
 import org.apache.tinkerpop.gremlin.structure.Graph.Features.VertexFeatures;
 import org.apache.tinkerpop.gremlin.structure.Graph.Features.VertexPropertyFeatures;
+import org.apache.tinkerpop.gremlin.structure.io.IoTest;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
 import org.apache.tinkerpop.gremlin.util.function.FunctionUtils;
 import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;


[17/50] [abbrv] incubator-tinkerpop git commit: TraversalVertexProgram will delay traversal compilation until the first vertex is processed so it can compile against the Vertex.graph().

Posted by dk...@apache.org.
TraversalVertexProgram will delay traversal compilation until the first vertex is processed so it can compile against the Vertex.graph().


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

Branch: refs/heads/TINKERPOP3-666
Commit: 6a198f21ebb8cce85ff37d97c440c70a805a5165
Parents: 083afee
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Fri May 8 10:41:08 2015 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Fri May 8 10:41:29 2015 -0600

----------------------------------------------------------------------
 .../traversal/TraversalVertexProgram.java       | 45 +++++++++++++-------
 .../mapreduce/TraverserMapReduce.java           |  3 +-
 .../process/traversal/step/map/GroupStep.java   |  4 +-
 .../step/sideEffect/AggregateStep.java          |  2 +-
 .../sideEffect/GroupCountSideEffectStep.java    |  2 +-
 .../step/sideEffect/GroupSideEffectStep.java    |  4 +-
 .../traversal/step/sideEffect/StoreStep.java    |  2 +-
 7 files changed, 35 insertions(+), 27 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6a198f21/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 4f630c6..bc63328 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
@@ -99,29 +99,20 @@ public final class TraversalVertexProgram implements VertexProgram<TraverserSet<
      * @param configuration The configuration containing the public static TRAVERSAL_SUPPLIER key.
      * @return the traversal supplier in the configuration
      */
-    public static Supplier<Traversal.Admin<?, ?>> getTraversalSupplier(final Configuration configuration) {
-        return LambdaHolder.<Supplier<Traversal.Admin<?, ?>>>loadState(configuration, TraversalVertexProgram.TRAVERSAL_SUPPLIER).get();
+    public static Traversal.Admin<?, ?> getTraversal(final Configuration configuration) {
+        return VertexProgram.<TraversalVertexProgram>createVertexProgram(configuration).getTraversal();
     }
 
     public Traversal.Admin<?, ?> getTraversal() {
+        this.compileTraversal(Optional.empty());
         return this.traversal;
     }
 
     @Override
     public void loadState(final Configuration configuration) {
         this.traversalSupplier = LambdaHolder.loadState(configuration, TRAVERSAL_SUPPLIER);
-        if (null == this.traversalSupplier) {
+        if (null == this.traversalSupplier)
             throw new IllegalArgumentException("The configuration does not have a traversal supplier");
-        }
-        this.traversal = this.traversalSupplier.get().get();
-        if (!this.traversal.isLocked()) this.traversal.applyStrategies();
-        ((ComputerResultStep) this.traversal.getEndStep()).byPass();
-        this.traversalMatrix = new TraversalMatrix<>(this.traversal);
-        for (final MapReducer<?, ?, ?, ?, ?> mapReducer : TraversalHelper.getStepsOfAssignableClassRecursively(MapReducer.class, this.traversal)) {
-            this.mapReducers.add(mapReducer.getMapReduce());
-        }
-        if (!(this.traversal.getEndStep().getPreviousStep() instanceof SideEffectCapStep) && !(this.traversal.getEndStep().getPreviousStep() instanceof ReducingBarrierStep))
-            this.mapReducers.add(new TraverserMapReduce(this.traversal.getEndStep().getPreviousStep()));
     }
 
     @Override
@@ -142,6 +133,7 @@ public final class TraversalVertexProgram implements VertexProgram<TraverserSet<
 
     @Override
     public void execute(final Vertex vertex, final Messenger<TraverserSet<?>> messenger, final Memory memory) {
+        this.compileTraversal(Optional.of(vertex));
         this.traversal.getSideEffects().setLocalVertex(vertex);
         if (memory.isInitialIteration()) {    // ITERATION 1
             final TraverserSet<Object> haltedTraversers = new TraverserSet<>();
@@ -210,6 +202,7 @@ public final class TraversalVertexProgram implements VertexProgram<TraverserSet<
 
     @Override
     public Set<MapReduce> getMapReducers() {
+        this.compileTraversal(Optional.<Vertex>empty());
         return this.mapReducers;
     }
 
@@ -222,8 +215,10 @@ public final class TraversalVertexProgram implements VertexProgram<TraverserSet<
     public TraversalVertexProgram clone() {
         try {
             final TraversalVertexProgram clone = (TraversalVertexProgram) super.clone();
-            clone.traversal = this.traversal.clone();
-            clone.traversalMatrix = new TraversalMatrix<>(clone.traversal);
+            if (null != this.traversal) {
+                clone.traversal = this.traversal.clone();
+                clone.traversalMatrix = new TraversalMatrix<>(clone.traversal);
+            }
             return clone;
         } catch (final CloneNotSupportedException e) {
             throw new IllegalStateException(e.getMessage(), e);
@@ -242,7 +237,7 @@ public final class TraversalVertexProgram implements VertexProgram<TraverserSet<
 
     @Override
     public String toString() {
-        final String traversalString = this.traversal.toString().substring(1);
+        final String traversalString = this.getTraversal().toString().substring(1);
         return StringFactory.vertexProgramString(this, traversalString.substring(0, traversalString.length() - 1));
     }
 
@@ -267,6 +262,24 @@ public final class TraversalVertexProgram implements VertexProgram<TraverserSet<
         return traversal;
     }
 
+    private void compileTraversal(final Optional<Vertex> currentVertex) {
+        if (null != this.traversal)
+            return;
+
+        this.traversal = this.traversalSupplier.get().get();
+        if (!this.traversal.isLocked()) {
+            if (currentVertex.isPresent()) this.traversal.setGraph(currentVertex.get().graph());
+            this.traversal.applyStrategies();
+        }
+        ((ComputerResultStep) this.traversal.getEndStep()).byPass();
+        this.traversalMatrix = new TraversalMatrix<>(this.traversal);
+        for (final MapReducer<?, ?, ?, ?, ?> mapReducer : TraversalHelper.getStepsOfAssignableClassRecursively(MapReducer.class, this.traversal)) {
+            this.mapReducers.add(mapReducer.getMapReduce());
+        }
+        if (!(this.traversal.getEndStep().getPreviousStep() instanceof SideEffectCapStep) && !(this.traversal.getEndStep().getPreviousStep() instanceof ReducingBarrierStep))
+            this.mapReducers.add(new TraverserMapReduce(this.traversal.getEndStep().getPreviousStep()));
+    }
+
     //////////////
 
     public static Builder build() {

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6a198f21/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/sideEffect/mapreduce/TraverserMapReduce.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/sideEffect/mapreduce/TraverserMapReduce.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/sideEffect/mapreduce/TraverserMapReduce.java
index 3e38325..819c038 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/sideEffect/mapreduce/TraverserMapReduce.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/sideEffect/mapreduce/TraverserMapReduce.java
@@ -25,7 +25,6 @@ import org.apache.tinkerpop.gremlin.process.computer.util.GraphComputerHelper;
 import org.apache.tinkerpop.gremlin.process.computer.util.StaticMapReduce;
 import org.apache.tinkerpop.gremlin.process.traversal.Step;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.step.ComparatorHolder;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.OrderGlobalStep;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.util.TraverserSet;
 import org.apache.tinkerpop.gremlin.structure.Graph;
@@ -58,7 +57,7 @@ public final class TraverserMapReduce extends StaticMapReduce<Comparable, Object
 
     @Override
     public void loadState(final Configuration configuration) {
-        this.traversal = TraversalVertexProgram.getTraversalSupplier(configuration).get();
+        this.traversal = TraversalVertexProgram.getTraversal(configuration);
         final Step endStep = this.traversal.getEndStep().getPreviousStep(); // don't get the ComputerResultStep
         this.comparator = Optional.ofNullable(endStep instanceof OrderGlobalStep ? new ChainedComparator<Comparable>(((OrderGlobalStep) endStep).getComparators()) : null);
     }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6a198f21/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStep.java
index 2dc1be6..96b58fd 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStep.java
@@ -211,9 +211,7 @@ public final class GroupStep<S, K, V, R> extends ReducingBarrierStep<S, Map<K, R
         @Override
         public void loadState(final Configuration configuration) {
             this.groupStepId = configuration.getString(GROUP_BY_STEP_STEP_ID);
-            final Traversal.Admin<?, ?> traversal = TraversalVertexProgram.getTraversalSupplier(configuration).get();
-            if (!traversal.isLocked())
-                traversal.applyStrategies(); // TODO: this is a scary error prone requirement, but only a problem for GroupStep
+            final Traversal.Admin<?, ?> traversal = TraversalVertexProgram.getTraversal(configuration);
             final GroupStep groupStep = new TraversalMatrix<>(traversal).getStepById(this.groupStepId);
             this.reduceTraversal = groupStep.getReduceTraversal();
         }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6a198f21/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AggregateStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AggregateStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AggregateStep.java
index 3ce80a5..27607c7 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AggregateStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AggregateStep.java
@@ -132,7 +132,7 @@ public final class AggregateStep<S> extends CollectingBarrierStep<S> implements
         @Override
         public void loadState(final Configuration configuration) {
             this.sideEffectKey = configuration.getString(AGGREGATE_STEP_SIDE_EFFECT_KEY);
-            this.collectionSupplier = TraversalVertexProgram.getTraversalSupplier(configuration).get().getSideEffects().<Collection>getRegisteredSupplier(this.sideEffectKey).orElse(BulkSet::new);
+            this.collectionSupplier = TraversalVertexProgram.getTraversal(configuration).getSideEffects().<Collection>getRegisteredSupplier(this.sideEffectKey).orElse(BulkSet::new);
         }
 
         @Override

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6a198f21/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupCountSideEffectStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupCountSideEffectStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupCountSideEffectStep.java
index de88730..2578c77 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupCountSideEffectStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupCountSideEffectStep.java
@@ -129,7 +129,7 @@ public final class GroupCountSideEffectStep<S, E> extends SideEffectStep<S> impl
         @Override
         public void loadState(final Configuration configuration) {
             this.sideEffectKey = configuration.getString(GROUP_COUNT_SIDE_EFFECT_STEP_SIDE_EFFECT_KEY);
-            this.mapSupplier = TraversalVertexProgram.getTraversalSupplier(configuration).get().getSideEffects().<Map<E, Long>>getRegisteredSupplier(this.sideEffectKey).orElse(HashMap::new);
+            this.mapSupplier = TraversalVertexProgram.getTraversal(configuration).getSideEffects().<Map<E, Long>>getRegisteredSupplier(this.sideEffectKey).orElse(HashMap::new);
         }
 
         @Override

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6a198f21/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupSideEffectStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupSideEffectStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupSideEffectStep.java
index 57fbc6f..ec89349 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupSideEffectStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupSideEffectStep.java
@@ -190,9 +190,7 @@ public final class GroupSideEffectStep<S, K, V, R> extends SideEffectStep<S> imp
         public void loadState(final Configuration configuration) {
             this.sideEffectKey = configuration.getString(GROUP_SIDE_EFFECT_STEP_SIDE_EFFECT_KEY);
             this.groupStepId = configuration.getString(GROUP_SIDE_EFFECT_STEP_STEP_ID);
-            final Traversal.Admin<?, ?> traversal = TraversalVertexProgram.getTraversalSupplier(configuration).get();
-            if (!traversal.isLocked())
-                traversal.applyStrategies(); // TODO: this is a scary error prone requirement, but only a problem for GroupStep
+            final Traversal.Admin<?, ?> traversal = TraversalVertexProgram.getTraversal(configuration);
             final GroupSideEffectStep groupSideEffectStep = new TraversalMatrix<>(traversal).getStepById(this.groupStepId);
             this.reduceTraversal = groupSideEffectStep.getReduceTraversal();
             this.mapSupplier = traversal.getSideEffects().<Map<K, R>>getRegisteredSupplier(this.sideEffectKey).orElse(HashMap::new);

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6a198f21/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/StoreStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/StoreStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/StoreStep.java
index 3c1a979..d0b3e7d 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/StoreStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/StoreStep.java
@@ -130,7 +130,7 @@ public final class StoreStep<S> extends SideEffectStep<S> implements SideEffectC
         @Override
         public void loadState(final Configuration configuration) {
             this.sideEffectKey = configuration.getString(STORE_STEP_SIDE_EFFECT_KEY);
-            this.collectionSupplier = TraversalVertexProgram.getTraversalSupplier(configuration).get().getSideEffects().<Collection>getRegisteredSupplier(this.sideEffectKey).orElse(BulkSet::new);
+            this.collectionSupplier = TraversalVertexProgram.getTraversal(configuration).getSideEffects().<Collection>getRegisteredSupplier(this.sideEffectKey).orElse(BulkSet::new);
         }
 
         @Override


[46/50] [abbrv] incubator-tinkerpop git commit: @IgnoreEngine on MatchTest tests.

Posted by dk...@apache.org.
@IgnoreEngine on MatchTest tests.


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

Branch: refs/heads/TINKERPOP3-666
Commit: 0c24fddc93edffe67d6fa7c90a37a9f3f6527abd
Parents: 8a71185
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Sat May 9 16:29:58 2015 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Sat May 9 16:29:58 2015 -0600

----------------------------------------------------------------------
 .../process/traversal/step/map/MatchTest.java      | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/0c24fddc/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchTest.java
index 5cf2fc1..637892d 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchTest.java
@@ -20,6 +20,7 @@ package org.apache.tinkerpop.gremlin.process.traversal.step.map;
 
 import org.apache.tinkerpop.gremlin.LoadGraphWith;
 import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
+import org.apache.tinkerpop.gremlin.process.IgnoreEngine;
 import org.apache.tinkerpop.gremlin.process.UseEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.Scope;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
@@ -119,6 +120,7 @@ public abstract class MatchTest extends AbstractGremlinProcessTest {
 
     @Test
     @LoadGraphWith(MODERN)
+    @IgnoreEngine(TraversalEngine.Type.COMPUTER)
     public void g_V_matchXa_out_bX() throws Exception {
         final Traversal<Vertex, Map<String, Vertex>> traversal = get_g_V_matchXa_out_bX();
         printTraversalForm(traversal);
@@ -133,6 +135,7 @@ public abstract class MatchTest extends AbstractGremlinProcessTest {
 
     @Test
     @LoadGraphWith(MODERN)
+    @IgnoreEngine(TraversalEngine.Type.COMPUTER)
     public void g_V_matchXa_out_bX_selectXb_idX() throws Exception {
         final Traversal<Vertex, Object> traversal = get_g_V_matchXa_out_bX_selectXb_idX();
         printTraversalForm(traversal);
@@ -156,6 +159,7 @@ public abstract class MatchTest extends AbstractGremlinProcessTest {
 
     @Test
     @LoadGraphWith(MODERN)
+    @IgnoreEngine(TraversalEngine.Type.COMPUTER)
     public void g_V_matchXa_knows_b__b_created_cX() throws Exception {
         final Traversal<Vertex, Map<String, Vertex>> traversal = get_g_V_matchXa_knows_b__b_created_cX();
         printTraversalForm(traversal);
@@ -166,6 +170,7 @@ public abstract class MatchTest extends AbstractGremlinProcessTest {
 
     @Test
     @LoadGraphWith(MODERN)
+    @IgnoreEngine(TraversalEngine.Type.COMPUTER)
     public void g_V_matchXa_knows_b__a_created_cX() throws Exception {
         final Traversal<Vertex, Map<String, Vertex>> traversal = get_g_V_matchXa_knows_b__a_created_cX();
         printTraversalForm(traversal);
@@ -176,6 +181,7 @@ public abstract class MatchTest extends AbstractGremlinProcessTest {
 
     @Test
     @LoadGraphWith(MODERN)
+    @IgnoreEngine(TraversalEngine.Type.COMPUTER)
     public void g_V_matchXd_0knows_a__d_hasXname_vadasX__a_knows_b__b_created_cX() throws Exception {
         final Traversal<Vertex, Map<String, Vertex>> traversal = get_g_V_matchXd_0knows_a__d_hasXname_vadasX__a_knows_b__b_created_cX();
         printTraversalForm(traversal);
@@ -186,6 +192,7 @@ public abstract class MatchTest extends AbstractGremlinProcessTest {
 
     @Test
     @LoadGraphWith(MODERN)
+    @IgnoreEngine(TraversalEngine.Type.COMPUTER)
     public void g_V_matchXa_created_b__a_repeatXoutX_timesX2XX_selectXab_nameX() throws Exception {
         final Traversal<Vertex, Map<String, String>> traversal = get_g_V_matchXa_created_b__a_repeatXoutX_timesX2XX_selectXab_nameX();
         printTraversalForm(traversal);
@@ -195,6 +202,7 @@ public abstract class MatchTest extends AbstractGremlinProcessTest {
 
     @Test
     @LoadGraphWith(MODERN)
+    @IgnoreEngine(TraversalEngine.Type.COMPUTER)
     public void g_V_matchXa_created_lop_b__b_0created_29_cX_whereXc_repeatXoutX_timesX2XX_selectXnameX() throws Exception {
         final List<Traversal<Vertex, Map<String, String>>> traversals = Arrays.asList(
                 get_g_V_matchXa_created_lop_b__b_0created_29_c__c_repeatXoutX_timesX2XX_selectXnameX(),
@@ -210,6 +218,7 @@ public abstract class MatchTest extends AbstractGremlinProcessTest {
 
     @Test
     @LoadGraphWith(MODERN)
+    @IgnoreEngine(TraversalEngine.Type.COMPUTER)
     public void g_V_out_out_matchXa_0created_b__b_0knows_cX_selectXcX_outXcreatedX_name() throws Exception {
         final Traversal<Vertex, String> traversal = get_g_V_out_out_matchXa_0created_b__b_0knows_cX_selectXcX_outXcreatedX_name();
         printTraversalForm(traversal);
@@ -220,18 +229,21 @@ public abstract class MatchTest extends AbstractGremlinProcessTest {
 
     @Test(expected = IllegalArgumentException.class)
     @LoadGraphWith(MODERN)
+    @IgnoreEngine(TraversalEngine.Type.COMPUTER)
     public void g_V_matchXa_created_b__b_0created_aX() {
         get_g_V_matchXa_created_b__b_0created_aX();
     }
 
     @Test(expected = IllegalArgumentException.class)
     @LoadGraphWith(MODERN)
+    @IgnoreEngine(TraversalEngine.Type.COMPUTER)
     public void g_V_matchXa_knows_b__c_knows_bX() {
         get_g_V_matchXa_knows_b__c_knows_bX();
     }
 
     @Test
     @LoadGraphWith(MODERN)
+    @IgnoreEngine(TraversalEngine.Type.COMPUTER)
     public void g_V_matchXa_knows_b__b_created_lop__b_matchXa1_created_b1__b1_0created_c1X_selectXc1X_cX_selectXnameX() throws Exception {
         final Traversal<Vertex, Map<String, String>> traversal = get_g_V_matchXa_knows_b__b_created_lop__b_matchXa1_created_b1__b1_0created_c1X_selectXc1X_cX_selectXnameX();
         printTraversalForm(traversal);
@@ -292,6 +304,7 @@ public abstract class MatchTest extends AbstractGremlinProcessTest {
 
     @Test
     @LoadGraphWith(GRATEFUL)
+    @IgnoreEngine(TraversalEngine.Type.COMPUTER)
     public void g_V_matchXa_hasXname_GarciaX__a_0writtenBy_b__a_0sungBy_bX() throws Exception {
         final Traversal<Vertex, Map<String, Vertex>> traversal = get_g_V_matchXa_hasXname_GarciaX__a_0writtenBy_b__a_0sungBy_bX();
         printTraversalForm(traversal);
@@ -302,6 +315,7 @@ public abstract class MatchTest extends AbstractGremlinProcessTest {
 
     @Test
     @LoadGraphWith(GRATEFUL)
+    @IgnoreEngine(TraversalEngine.Type.COMPUTER)
     public void g_V_matchXa_0sungBy_b__a_0sungBy_c__b_writtenBy_d__c_writtenBy_e__d_hasXname_George_HarisonX__e_hasXname_Bob_MarleyXX() throws Exception {
         final Traversal<Vertex, Map<String, Vertex>> traversal = get_g_V_matchXa_0sungBy_b__a_0sungBy_c__b_writtenBy_d__c_writtenBy_e__d_hasXname_George_HarisonX__e_hasXname_Bob_MarleyXX();
         printTraversalForm(traversal);
@@ -316,6 +330,7 @@ public abstract class MatchTest extends AbstractGremlinProcessTest {
 
     @Test
     @LoadGraphWith(MODERN)
+    @IgnoreEngine(TraversalEngine.Type.COMPUTER)
     public void g_V_matchXa_created_b__b_0created_cX_whereXa_neq_cX_selectXa_c_nameX() throws Exception {
         final Traversal<Vertex, Map<String, String>> traversal = get_g_V_matchXa_created_b__b_0created_cX_whereXa_neq_cX_selectXa_c_nameX();
         assertResults(Function.identity(), traversal,
@@ -330,6 +345,7 @@ public abstract class MatchTest extends AbstractGremlinProcessTest {
 
     @Test
     @LoadGraphWith(GRATEFUL)
+    @IgnoreEngine(TraversalEngine.Type.COMPUTER)
     public void g_V_matchXa_0sungBy_b__a_0writtenBy_c__b_writtenBy_d__c_sungBy_d__d_hasXname_GarciaXX() throws Exception {
         final List<Traversal<Vertex, Map<String, Vertex>>> traversals = Arrays.asList(
                 get_g_V_matchXa_0sungBy_b__a_0writtenBy_c__b_writtenBy_d__c_sungBy_d__d_hasXname_GarciaXX(),
@@ -400,6 +416,7 @@ public abstract class MatchTest extends AbstractGremlinProcessTest {
 
     @Test
     @LoadGraphWith(MODERN)
+    @IgnoreEngine(TraversalEngine.Type.COMPUTER)
     public void testOptimization() throws Exception {
         MatchStep<Object, Object> query;
         Iterator iter;


[13/50] [abbrv] incubator-tinkerpop git commit: Open up more tests in IoTest by relaxing features.

Posted by dk...@apache.org.
Open up more tests in IoTest by relaxing features.

Removed feature checks for supportsNumericIds and supportsUserSupplied ids as the assertions themselves were relaxed around id (i.e. feature checks are done within the assertion for these scenarios).


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

Branch: refs/heads/TINKERPOP3-666
Commit: f54218f9d8446f05d467e9189546f985123ca87f
Parents: 8fc65a9
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri May 8 09:30:50 2015 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri May 8 09:30:50 2015 -0400

----------------------------------------------------------------------
 .../apache/tinkerpop/gremlin/structure/io/IoTest.java   | 12 ------------
 1 file changed, 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/f54218f9/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/IoTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/IoTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/IoTest.java
index 7a91a7f..b11caef 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/IoTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/IoTest.java
@@ -169,8 +169,6 @@ public class IoTest extends AbstractGremlinTest {
 
     @Test
     @LoadGraphWith(LoadGraphWith.GraphData.CLASSIC)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_USER_SUPPLIED_IDS)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_NUMERIC_IDS)
     @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
     @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
     public void shouldReadWriteClassicToGraphMLToFileWithHelpers() throws Exception {
@@ -395,8 +393,6 @@ public class IoTest extends AbstractGremlinTest {
 
     @Test
     @LoadGraphWith(LoadGraphWith.GraphData.MODERN)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_USER_SUPPLIED_IDS)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_NUMERIC_IDS)
     @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
     @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
     public void shouldReadWriteModernToGryo() throws Exception {
@@ -423,8 +419,6 @@ public class IoTest extends AbstractGremlinTest {
 
     @Test
     @LoadGraphWith(LoadGraphWith.GraphData.MODERN)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_USER_SUPPLIED_IDS)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_NUMERIC_IDS)
     @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
     @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
     public void shouldReadWriteModernToGryoToFileWithHelpers() throws Exception {
@@ -449,8 +443,6 @@ public class IoTest extends AbstractGremlinTest {
 
     @Test
     @LoadGraphWith(LoadGraphWith.GraphData.CREW)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_USER_SUPPLIED_IDS)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_NUMERIC_IDS)
     @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
     @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
     public void shouldReadWriteCrewToGryo() throws Exception {
@@ -479,8 +471,6 @@ public class IoTest extends AbstractGremlinTest {
 
     @Test
     @LoadGraphWith(LoadGraphWith.GraphData.CLASSIC)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_USER_SUPPLIED_IDS)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_NUMERIC_IDS)
     @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
     @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
     public void shouldReadWriteClassicToGryo() throws Exception {
@@ -577,8 +567,6 @@ public class IoTest extends AbstractGremlinTest {
 
     @Test
     @LoadGraphWith(LoadGraphWith.GraphData.CREW)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_USER_SUPPLIED_IDS)
-    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_NUMERIC_IDS)
     @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
     @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
     public void shouldReadWriteCrewToGraphSON() throws Exception {


[08/50] [abbrv] incubator-tinkerpop git commit: Move IoTest to io package with its associated integration test.

Posted by dk...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/4700471c/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/IoTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/IoTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/IoTest.java
new file mode 100644
index 0000000..7a91a7f
--- /dev/null
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/IoTest.java
@@ -0,0 +1,2462 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.structure.io;
+
+import com.fasterxml.jackson.core.JsonGenerationException;
+import com.fasterxml.jackson.core.JsonGenerator;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.SerializerProvider;
+import com.fasterxml.jackson.databind.jsontype.TypeSerializer;
+import com.fasterxml.jackson.databind.module.SimpleModule;
+import com.fasterxml.jackson.databind.ser.std.StdSerializer;
+import org.apache.commons.configuration.Configuration;
+import org.apache.tinkerpop.gremlin.AbstractGremlinTest;
+import org.apache.tinkerpop.gremlin.FeatureRequirement;
+import org.apache.tinkerpop.gremlin.LoadGraphWith;
+import org.apache.tinkerpop.gremlin.TestHelper;
+import org.apache.tinkerpop.gremlin.structure.Direction;
+import org.apache.tinkerpop.gremlin.structure.Edge;
+import org.apache.tinkerpop.gremlin.structure.Element;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.apache.tinkerpop.gremlin.structure.Graph.Features.EdgePropertyFeatures;
+import org.apache.tinkerpop.gremlin.structure.Graph.Features.VertexPropertyFeatures;
+import org.apache.tinkerpop.gremlin.structure.P;
+import org.apache.tinkerpop.gremlin.structure.Property;
+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.graphml.GraphMLIo;
+import org.apache.tinkerpop.gremlin.structure.io.graphml.GraphMLReader;
+import org.apache.tinkerpop.gremlin.structure.io.graphml.GraphMLResourceAccess;
+import org.apache.tinkerpop.gremlin.structure.io.graphml.GraphMLWriter;
+import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONIo;
+import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONMapper;
+import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONReader;
+import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONResourceAccess;
+import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONTokens;
+import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONWriter;
+import org.apache.tinkerpop.gremlin.structure.io.graphson.LegacyGraphSONReader;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoIo;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoMapper;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoReader;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoWriter;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.VertexByteArrayInputStream;
+import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedFactory;
+import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertex;
+import org.apache.tinkerpop.gremlin.util.StreamFactory;
+import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
+import org.junit.Before;
+import org.junit.Test;
+
+import javax.xml.XMLConstants;
+import javax.xml.transform.Source;
+import javax.xml.transform.stream.StreamSource;
+import javax.xml.validation.Schema;
+import javax.xml.validation.SchemaFactory;
+import javax.xml.validation.Validator;
+import java.io.BufferedReader;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.io.Reader;
+import java.io.StringWriter;
+import java.io.Writer;
+import java.util.Iterator;
+import java.util.List;
+import java.util.UUID;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicInteger;
+
+import static org.apache.tinkerpop.gremlin.structure.Graph.Features.ElementFeatures.FEATURE_ANY_IDS;
+import static org.apache.tinkerpop.gremlin.structure.Graph.Features.VariableFeatures.FEATURE_VARIABLES;
+import static org.apache.tinkerpop.gremlin.structure.Graph.Features.VertexFeatures.FEATURE_USER_SUPPLIED_IDS;
+import static org.apache.tinkerpop.gremlin.structure.Graph.Features.VertexPropertyFeatures.*;
+import static org.apache.tinkerpop.gremlin.structure.io.IoCore.graphml;
+import static org.apache.tinkerpop.gremlin.structure.io.IoCore.graphson;
+import static org.apache.tinkerpop.gremlin.structure.io.IoCore.gryo;
+import static org.junit.Assert.*;
+import static org.mockito.Mockito.mock;
+
+/**
+ * @author Joshua Shinavier (http://fortytwo.net)
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public class IoTest extends AbstractGremlinTest {
+
+    private Io.Builder<GraphMLIo> graphml;
+    private Io.Builder<GraphSONIo> graphson;
+    private Io.Builder<GryoIo> gryo;
+
+    @Before
+    public void setupBeforeEachTest() {
+        graphml = graphml();
+        graphson = graphson();
+        gryo = gryo();
+    }
+
+    @Test
+    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
+    @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_STRING_VALUES)
+    @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_INTEGER_VALUES)
+    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_FLOAT_VALUES)
+    public void shouldReadGraphML() throws IOException {
+        readGraphMLIntoGraph(graph, "tinkerpop-classic.xml");
+        assertClassicGraph(graph, false, true);
+    }
+
+    @Test
+    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
+    @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_STRING_VALUES)
+    @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_INTEGER_VALUES)
+    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_FLOAT_VALUES)
+    public void shouldReadGraphMLUnorderedElements() throws IOException {
+        readGraphMLIntoGraph(graph, "tinkerpop-classic-unordered.xml");
+        assertClassicGraph(graph, false, true);
+    }
+
+    @Test
+    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
+    @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_STRING_VALUES)
+    @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_INTEGER_VALUES)
+    @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_FLOAT_VALUES)
+    @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_BOOLEAN_VALUES)
+    @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_LONG_VALUES)
+    @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_DOUBLE_VALUES)
+    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_FLOAT_VALUES)
+    public void shouldReadGraphMLAnAllSupportedDataTypes() throws IOException {
+        final GraphReader reader = GraphMLReader.build().create();
+        try (final InputStream stream = IoTest.class.getResourceAsStream(TestHelper.convertPackageToResourcePath(GraphMLResourceAccess.class) + "graph-types.xml")) {
+            reader.readGraph(stream, graph);
+        }
+
+        final Vertex v = graph.vertices().next();
+        assertEquals(123.45d, v.value("d"), 0.000001d);
+        assertEquals("some-string", v.<String>value("s"));
+        assertEquals(29, v.<Integer>value("i").intValue());
+        assertEquals(true, v.<Boolean>value("b"));
+        assertEquals(123.54f, v.value("f"), 0.000001f);
+        assertEquals(10000000l, v.<Long>value("l").longValue());
+        assertEquals("junk", v.<String>value("n"));
+    }
+
+    @Test
+    @LoadGraphWith(LoadGraphWith.GraphData.CLASSIC)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_USER_SUPPLIED_IDS)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_NUMERIC_IDS)
+    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
+    public void shouldReadWriteClassicToGraphMLToFileWithHelpers() throws Exception {
+        final File f = TestHelper.generateTempFile(this.getClass(), name.getMethodName(), ".xml");
+        try {
+            graph.io(graphml).writeGraph(f.getAbsolutePath());
+
+            final Configuration configuration = graphProvider.newGraphConfiguration("readGraph", this.getClass(), name.getMethodName(), LoadGraphWith.GraphData.CLASSIC);
+            final Graph g1 = graphProvider.openTestGraph(configuration);
+            g1.io(graphml).readGraph(f.getAbsolutePath());
+
+            assertClassicGraph(graph, false, true);
+
+            // need to manually close the "g1" instance
+            graphProvider.clear(g1, configuration);
+        } catch (Exception ex) {
+            f.delete();
+            throw ex;
+        }
+    }
+
+    /**
+     * Only need to execute this test with TinkerGraph or other graphs that support user supplied identifiers.
+     */
+    @Test
+    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
+    @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_STRING_VALUES)
+    @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_INTEGER_VALUES)
+    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_FLOAT_VALUES)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_USER_SUPPLIED_IDS)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_NUMERIC_IDS)
+    @LoadGraphWith(LoadGraphWith.GraphData.CLASSIC)
+    public void shouldWriteNormalizedGraphML() throws Exception {
+        try (ByteArrayOutputStream bos = new ByteArrayOutputStream()) {
+            final GraphMLWriter w = GraphMLWriter.build().normalize(true).create();
+            w.writeGraph(bos, graph);
+
+            final String expected = streamToString(IoTest.class.getResourceAsStream(TestHelper.convertPackageToResourcePath(GraphMLResourceAccess.class) + "tinkerpop-classic-normalized.xml"));
+            assertEquals(expected.replace("\n", "").replace("\r", ""), bos.toString().replace("\n", "").replace("\r", ""));
+        }
+    }
+
+    /**
+     * Only need to execute this test with TinkerGraph or other graphs that support user supplied identifiers.
+     */
+    @Test
+    @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_STRING_VALUES)
+    @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_INTEGER_VALUES)
+    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_FLOAT_VALUES)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_USER_SUPPLIED_IDS)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_NUMERIC_IDS)
+    @FeatureRequirement(featureClass = Graph.Features.VertexPropertyFeatures.class, feature = Graph.Features.VertexPropertyFeatures.FEATURE_USER_SUPPLIED_IDS)
+    @FeatureRequirement(featureClass = Graph.Features.VariableFeatures.class, feature = FEATURE_VARIABLES)
+    @LoadGraphWith(LoadGraphWith.GraphData.CLASSIC)
+    public void shouldWriteNormalizedGraphSON() throws Exception {
+        try (ByteArrayOutputStream bos = new ByteArrayOutputStream()) {
+            final GraphSONMapper mapper = graph.io(graphson).mapper().normalize(true).create();
+            final GraphSONWriter w = graph.io(graphson).writer().mapper(mapper).create();
+            w.writeGraph(bos, graph);
+
+            final String expected = streamToString(IoTest.class.getResourceAsStream(TestHelper.convertPackageToResourcePath(GraphSONResourceAccess.class) + "tinkerpop-classic-normalized.json"));
+            assertEquals(expected.replace("\n", "").replace("\r", ""), bos.toString().replace("\n", "").replace("\r", ""));
+        }
+    }
+
+    /**
+     * Note: this is only a very lightweight test of writer/reader encoding. It is known that there are characters
+     * which, when written by GraphMLWriter, cause parse errors for GraphMLReader. However, this happens uncommonly
+     * enough that is not yet known which characters those are. Only need to execute this test with TinkerGraph
+     * or other graphs that support user supplied identifiers.
+     */
+    @Test
+    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
+    @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_STRING_VALUES)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = FEATURE_USER_SUPPLIED_IDS)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_STRING_IDS)
+    public void shouldProperlyEncodeWithGraphML() throws Exception {
+        final Vertex v = graph.addVertex(T.id, "1");
+        v.property(VertexProperty.Cardinality.single, "text", "\u00E9");
+
+        final GraphMLWriter w = GraphMLWriter.build().create();
+
+        final File f = TestHelper.generateTempFile(this.getClass(), "test", ".txt");
+        try (final OutputStream out = new FileOutputStream(f)) {
+            w.writeGraph(out, graph);
+        }
+
+        validateXmlAgainstGraphMLXsd(f);
+
+        // reusing the same config used for creation of "g".
+        final Configuration configuration = graphProvider.newGraphConfiguration("g2", this.getClass(), name.getMethodName(), null);
+        graphProvider.clear(configuration);
+        final Graph g2 = graphProvider.openTestGraph(configuration);
+        final GraphMLReader r = GraphMLReader.build().create();
+
+        try (final InputStream in = new FileInputStream(f)) {
+            r.readGraph(in, g2);
+        }
+
+        final Vertex v2 = g2.vertices("1").next();
+        assertEquals("\u00E9", v2.property("text").value());
+
+        // need to manually close the "g2" instance
+        graphProvider.clear(g2, configuration);
+    }
+
+    /**
+     * This is just a serialization check.
+     */
+    @Test
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = FEATURE_USER_SUPPLIED_IDS)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = FEATURE_ANY_IDS)
+    public void shouldProperlySerializeCustomIdWithGraphSON() throws Exception {
+        final UUID id = UUID.fromString("AF4B5965-B176-4552-B3C1-FBBE2F52C305");
+        graph.addVertex(T.id, new CustomId("vertex", id));
+
+        final SimpleModule module = new SimpleModule();
+        module.addSerializer(CustomId.class, new CustomId.CustomIdJacksonSerializer());
+        final GraphWriter writer = graph.io(graphson).writer().mapper(
+                graph.io(graphson).mapper().addCustomModule(module).embedTypes(true).create()).create();
+
+        try (final ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
+            writer.writeGraph(baos, graph);
+
+            final JsonNode jsonGraph = new ObjectMapper().readTree(baos.toByteArray());
+            final JsonNode idValue = jsonGraph.get(GraphSONTokens.ID);
+            assertTrue(idValue.has("cluster"));
+            assertEquals("vertex", idValue.get("cluster").asText());
+            assertTrue(idValue.has("elementId"));
+            assertEquals("AF4B5965-B176-4552-B3C1-FBBE2F52C305".toLowerCase(), idValue.get("elementId").asText());
+
+            // reusing the same config used for creation of "g".
+            final Configuration configuration = graphProvider.newGraphConfiguration("g2", this.getClass(), name.getMethodName(), null);
+            graphProvider.clear(configuration);
+            final Graph g2 = graphProvider.openTestGraph(configuration);
+
+            try (final InputStream is = new ByteArrayInputStream(baos.toByteArray())) {
+                final GraphReader reader = graph.io(graphson).reader()
+                        .mapper(graph.io(graphson).mapper().embedTypes(true).addCustomModule(module).create()).create();
+                reader.readGraph(is, g2);
+            }
+
+            final Vertex v2 = g2.vertices().next();
+            final CustomId customId = (CustomId) v2.id();
+            assertEquals(id, customId.getElementId());
+            assertEquals("vertex", customId.getCluster());
+
+            // need to manually close the "g2" instance
+            graphProvider.clear(g2, configuration);
+        }
+    }
+
+    @Test
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = FEATURE_USER_SUPPLIED_IDS)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = FEATURE_ANY_IDS)
+    public void shouldProperlySerializeCustomIdWithGryo() throws Exception {
+        graph.addVertex(T.id, new CustomId("vertex", UUID.fromString("AF4B5965-B176-4552-B3C1-FBBE2F52C305")));
+        final GryoMapper gryo = GryoMapper.build().addCustom(CustomId.class).create();
+
+        final GryoWriter writer = GryoWriter.build().mapper(gryo).create();
+        final GryoReader reader = GryoReader.build().mapper(gryo).create();
+
+        final Configuration configuration = graphProvider.newGraphConfiguration("readGraph", this.getClass(), name.getMethodName(), null);
+        graphProvider.clear(configuration);
+        final Graph g1 = graphProvider.openTestGraph(configuration);
+
+        GraphMigrator.migrateGraph(graph, g1, reader, writer);
+
+        final Vertex onlyVertex = g1.traversal().V().next();
+        final CustomId id = (CustomId) onlyVertex.id();
+        assertEquals("vertex", id.getCluster());
+        assertEquals(UUID.fromString("AF4B5965-B176-4552-B3C1-FBBE2F52C305"), id.getElementId());
+
+        // need to manually close the "g1" instance
+        graphProvider.clear(g1, configuration);
+    }
+
+    @Test
+    @LoadGraphWith(LoadGraphWith.GraphData.CLASSIC)
+    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
+    public void shouldMigrateGraphWithFloat() throws Exception {
+        final Configuration configuration = graphProvider.newGraphConfiguration("readGraph", this.getClass(), name.getMethodName(), null);
+        graphProvider.clear(configuration);
+        final Graph g1 = graphProvider.openTestGraph(configuration);
+
+        final GryoReader reader = graph.io(gryo).reader().create();
+        final GryoWriter writer = graph.io(gryo).writer().create();
+
+        GraphMigrator.migrateGraph(graph, g1, reader, writer);
+
+        assertClassicGraph(g1, false, false);
+
+        // need to manually close the "g1" instance
+        graphProvider.clear(g1, configuration);
+    }
+
+    @Test
+    @LoadGraphWith(LoadGraphWith.GraphData.MODERN)
+    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
+    public void shouldMigrateGraph() throws Exception {
+        final Configuration configuration = graphProvider.newGraphConfiguration("readGraph", this.getClass(), name.getMethodName(), LoadGraphWith.GraphData.MODERN);
+        graphProvider.clear(configuration);
+        final Graph g1 = graphProvider.openTestGraph(configuration);
+
+        final GryoReader reader = graph.io(gryo).reader().create();
+        final GryoWriter writer = graph.io(gryo).writer().create();
+
+        GraphMigrator.migrateGraph(graph, g1, reader, writer);
+
+        // by making this lossy for float it will assert floats for doubles
+        assertModernGraph(g1, true, false);
+
+        // need to manually close the "g1" instance
+        graphProvider.clear(g1, configuration);
+    }
+
+    @Test
+    @LoadGraphWith(LoadGraphWith.GraphData.MODERN)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_USER_SUPPLIED_IDS)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_NUMERIC_IDS)
+    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
+    public void shouldReadWriteModernToGryo() throws Exception {
+        try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
+            final GryoWriter writer = graph.io(gryo).writer().create();
+            writer.writeGraph(os, graph);
+
+            final Configuration configuration = graphProvider.newGraphConfiguration("readGraph", this.getClass(), name.getMethodName(), LoadGraphWith.GraphData.MODERN);
+            graphProvider.clear(configuration);
+            final Graph g1 = graphProvider.openTestGraph(configuration);
+            final GryoReader reader = graph.io(gryo).reader().create();
+            final byte[] x = os.toByteArray();
+            try (final ByteArrayInputStream bais = new ByteArrayInputStream(x)) {
+                reader.readGraph(bais, g1);
+            }
+
+            // by making this lossy for float it will assert floats for doubles
+            assertModernGraph(g1, true, false);
+
+            // need to manually close the "g1" instance
+            graphProvider.clear(g1, configuration);
+        }
+    }
+
+    @Test
+    @LoadGraphWith(LoadGraphWith.GraphData.MODERN)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_USER_SUPPLIED_IDS)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_NUMERIC_IDS)
+    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
+    public void shouldReadWriteModernToGryoToFileWithHelpers() throws Exception {
+        final File f = TestHelper.generateTempFile(this.getClass(), name.getMethodName(), ".kryo");
+        try {
+            graph.io(gryo).writeGraph(f.getAbsolutePath());
+
+            final Configuration configuration = graphProvider.newGraphConfiguration("readGraph", this.getClass(), name.getMethodName(), LoadGraphWith.GraphData.MODERN);
+            final Graph g1 = graphProvider.openTestGraph(configuration);
+            g1.io(gryo).readGraph(f.getAbsolutePath());
+
+            // by making this lossy for float it will assert floats for doubles
+            assertModernGraph(g1, true, false);
+
+            // need to manually close the "g1" instance
+            graphProvider.clear(g1, configuration);
+        } catch (Exception ex) {
+            f.delete();
+            throw ex;
+        }
+    }
+
+    @Test
+    @LoadGraphWith(LoadGraphWith.GraphData.CREW)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_USER_SUPPLIED_IDS)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_NUMERIC_IDS)
+    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
+    public void shouldReadWriteCrewToGryo() throws Exception {
+        try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
+
+            final GryoWriter writer = graph.io(gryo).writer().create();
+            writer.writeGraph(os, graph);
+
+            final Configuration configuration = graphProvider.newGraphConfiguration("readGraph", this.getClass(), name.getMethodName(), LoadGraphWith.GraphData.CREW);
+            graphProvider.clear(configuration);
+            final Graph g1 = graphProvider.openTestGraph(configuration);
+            final GryoReader reader = GryoReader.build()
+                    .mapper(graph.io(gryo).mapper().create()).create();
+            try (final ByteArrayInputStream bais = new ByteArrayInputStream(os.toByteArray())) {
+                reader.readGraph(bais, g1);
+            }
+
+            // by making this lossy for float it will assert floats for doubles
+            assertCrewGraph(g1, false);
+
+            // need to manually close the "g1" instance
+            graphProvider.clear(g1, configuration);
+        }
+    }
+
+
+    @Test
+    @LoadGraphWith(LoadGraphWith.GraphData.CLASSIC)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_USER_SUPPLIED_IDS)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_NUMERIC_IDS)
+    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
+    public void shouldReadWriteClassicToGryo() throws Exception {
+        try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
+            final GryoWriter writer = graph.io(gryo).writer().create();
+            writer.writeGraph(os, graph);
+
+            final Configuration configuration = graphProvider.newGraphConfiguration("readGraph", this.getClass(), name.getMethodName(), LoadGraphWith.GraphData.CLASSIC);
+            graphProvider.clear(configuration);
+            final Graph g1 = graphProvider.openTestGraph(configuration);
+            final GryoReader reader = graph.io(gryo).reader().create();
+            try (final ByteArrayInputStream bais = new ByteArrayInputStream(os.toByteArray())) {
+                reader.readGraph(bais, g1);
+            }
+
+            assertClassicGraph(g1, false, false);
+
+            // need to manually close the "g1" instance
+            graphProvider.clear(g1, configuration);
+        }
+    }
+
+    @Test
+    @LoadGraphWith(LoadGraphWith.GraphData.CLASSIC)
+    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
+    public void shouldReadWriteClassicToGraphSON() throws Exception {
+        try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
+            final GraphSONWriter writer = graph.io(graphson).writer().create();
+            writer.writeGraph(os, graph);
+
+            final Configuration configuration = graphProvider.newGraphConfiguration("readGraph", this.getClass(), name.getMethodName(), LoadGraphWith.GraphData.CLASSIC);
+            graphProvider.clear(configuration);
+            final Graph g1 = graphProvider.openTestGraph(configuration);
+            final GraphSONReader reader = graph.io(graphson).reader().create();
+            try (final ByteArrayInputStream bais = new ByteArrayInputStream(os.toByteArray())) {
+                reader.readGraph(bais, g1);
+            }
+
+            assertClassicGraph(g1, true, false);
+
+            // need to manually close the "g1" instance
+            graphProvider.clear(g1, configuration);
+        }
+    }
+
+    @Test
+    @LoadGraphWith(LoadGraphWith.GraphData.MODERN)
+    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
+    public void shouldReadWriteModernToGraphSON() throws Exception {
+        try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
+            final GraphSONWriter writer = graph.io(graphson).writer().create();
+            writer.writeGraph(os, graph);
+
+            final Configuration configuration = graphProvider.newGraphConfiguration("readGraph", this.getClass(), name.getMethodName(), LoadGraphWith.GraphData.MODERN);
+            graphProvider.clear(configuration);
+            final Graph g1 = graphProvider.openTestGraph(configuration);
+            final GraphSONReader reader = graph.io(graphson).reader().create();
+            try (final ByteArrayInputStream bais = new ByteArrayInputStream(os.toByteArray())) {
+                reader.readGraph(bais, g1);
+            }
+
+            assertModernGraph(g1, true, false);
+
+            // need to manually close the "g1" instance
+            graphProvider.clear(g1, configuration);
+        }
+    }
+
+    @Test
+    @LoadGraphWith(LoadGraphWith.GraphData.MODERN)
+    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
+    public void shouldReadWriteModernToGraphSONWithHelpers() throws Exception {
+        final File f = TestHelper.generateTempFile(this.getClass(), name.getMethodName(), ".json");
+        try {
+            graph.io(graphson).writeGraph(f.getAbsolutePath());
+
+            final Configuration configuration = graphProvider.newGraphConfiguration("readGraph", this.getClass(), name.getMethodName(), LoadGraphWith.GraphData.MODERN);
+            graphProvider.clear(configuration);
+            final Graph g1 = graphProvider.openTestGraph(configuration);
+            g1.io(graphson).readGraph(f.getAbsolutePath());
+
+            assertModernGraph(g1, true, false);
+
+            // need to manually close the "g1" instance
+            graphProvider.clear(g1, configuration);
+        } catch (Exception ex) {
+            f.delete();
+            throw ex;
+        }
+    }
+
+    @Test
+    @LoadGraphWith(LoadGraphWith.GraphData.CREW)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_USER_SUPPLIED_IDS)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_NUMERIC_IDS)
+    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
+    public void shouldReadWriteCrewToGraphSON() throws Exception {
+        try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
+            final GraphSONWriter writer = graph.io(graphson).writer().create();
+            writer.writeGraph(os, graph);
+
+            final Configuration configuration = graphProvider.newGraphConfiguration("readGraph", this.getClass(), name.getMethodName(), LoadGraphWith.GraphData.CREW);
+            graphProvider.clear(configuration);
+            final Graph g1 = graphProvider.openTestGraph(configuration);
+            final GraphSONReader reader = graph.io(graphson).reader().create();
+            try (final ByteArrayInputStream bais = new ByteArrayInputStream(os.toByteArray())) {
+                reader.readGraph(bais, g1);
+            }
+
+            assertCrewGraph(g1, true);
+
+            // need to manually close the "g1" instance
+            graphProvider.clear(g1, configuration);
+        }
+    }
+
+    @Test
+    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
+    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_FLOAT_VALUES)
+    public void shouldReadWriteEdgeToGryoUsingFloatProperty() throws Exception {
+        final Vertex v1 = graph.addVertex(T.label, "person");
+        final Vertex v2 = graph.addVertex(T.label, "person");
+        final Edge e = v1.addEdge("friend", v2, "weight", 0.5f, "acl", "rw");
+
+        try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
+            final GryoWriter writer = graph.io(gryo).writer().create();
+            writer.writeEdge(os, e);
+
+            final AtomicBoolean called = new AtomicBoolean(false);
+            final GryoReader reader = graph.io(gryo).reader().create();
+            try (final ByteArrayInputStream bais = new ByteArrayInputStream(os.toByteArray())) {
+                reader.readEdge(bais, edge -> {
+                    final Edge detachedEdge = (Edge) edge;
+                    assertEquals(e.id(), detachedEdge.id());
+                    assertEquals(v1.id(), detachedEdge.outVertex().id());
+                    assertEquals(v2.id(), detachedEdge.inVertex().id());
+                    assertEquals(v1.label(), detachedEdge.outVertex().label());
+                    assertEquals(v2.label(), detachedEdge.inVertex().label());
+                    assertEquals(e.label(), detachedEdge.label());
+                    assertEquals(0.5f, detachedEdge.properties("weight").next().value());
+                    assertEquals("rw", detachedEdge.properties("acl").next().value());
+
+                    called.set(true);
+
+                    return null;
+                });
+            }
+
+            assertTrue(called.get());
+        }
+    }
+
+    @Test
+    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
+    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_DOUBLE_VALUES)
+    public void shouldReadWriteEdgeToGryo() throws Exception {
+        final Vertex v1 = graph.addVertex(T.label, "person");
+        final Vertex v2 = graph.addVertex(T.label, "person");
+        final Edge e = v1.addEdge("friend", v2, "weight", 0.5d, "acl", "rw");
+
+        try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
+            final GryoWriter writer = graph.io(gryo).writer().create();
+            writer.writeEdge(os, e);
+
+            final AtomicBoolean called = new AtomicBoolean(false);
+            final GryoReader reader = graph.io(gryo).reader().create();
+            try (final ByteArrayInputStream bais = new ByteArrayInputStream(os.toByteArray())) {
+                reader.readEdge(bais, edge -> {
+                    final Edge detachedEdge = (Edge) edge;
+                    assertEquals(e.id(), detachedEdge.id());
+                    assertEquals(v1.id(), detachedEdge.outVertex().id());
+                    assertEquals(v2.id(), detachedEdge.inVertex().id());
+                    assertEquals(v1.label(), detachedEdge.outVertex().label());
+                    assertEquals(v2.label(), detachedEdge.inVertex().label());
+                    assertEquals(e.label(), detachedEdge.label());
+                    assertEquals(0.5d, e.properties("weight").next().value());
+                    assertEquals("rw", e.properties("acl").next().value());
+                    called.set(true);
+                    return null;
+                });
+            }
+
+            assertTrue(called.get());
+        }
+    }
+
+    @Test
+    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
+    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_DOUBLE_VALUES)
+    public void shouldReadWriteDetachedEdgeAsReferenceToGryo() throws Exception {
+        final Vertex v1 = graph.addVertex(T.label, "person");
+        final Vertex v2 = graph.addVertex(T.label, "person");
+        final Edge e = DetachedFactory.detach(v1.addEdge("friend", v2, "weight", 0.5d, "acl", "rw"), false);
+
+        try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
+            final GryoWriter writer = graph.io(gryo).writer().create();
+            writer.writeEdge(os, e);
+
+            final AtomicBoolean called = new AtomicBoolean(false);
+            final GryoReader reader = graph.io(gryo).reader().create();
+            try (final ByteArrayInputStream bais = new ByteArrayInputStream(os.toByteArray())) {
+                reader.readEdge(bais, edge -> {
+                    final Edge detachedEdge = (Edge) edge;
+                    assertEquals(e.id(), detachedEdge.id());
+                    assertEquals(v1.id(), detachedEdge.outVertex().id());
+                    assertEquals(v2.id(), detachedEdge.inVertex().id());
+                    assertEquals(v1.label(), detachedEdge.outVertex().label());
+                    assertEquals(v2.label(), detachedEdge.inVertex().label());
+                    assertEquals(e.label(), detachedEdge.label());
+                    assertEquals(e.keys().size(), IteratorUtils.count(detachedEdge.properties()));
+                    called.set(true);
+
+                    return null;
+                });
+            }
+
+            assertTrue(called.get());
+        }
+    }
+
+    @Test
+    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
+    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_DOUBLE_VALUES)
+    public void shouldReadWriteDetachedEdgeToGryo() throws Exception {
+        final Vertex v1 = graph.addVertex(T.label, "person");
+        final Vertex v2 = graph.addVertex(T.label, "person");
+        final Edge e = DetachedFactory.detach(v1.addEdge("friend", v2, "weight", 0.5d, "acl", "rw"), true);
+
+        try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
+            final GryoWriter writer = graph.io(gryo).writer().create();
+            writer.writeEdge(os, e);
+
+            final AtomicBoolean called = new AtomicBoolean(false);
+            final GryoReader reader = graph.io(gryo).reader().create();
+            try (final ByteArrayInputStream bais = new ByteArrayInputStream(os.toByteArray())) {
+                reader.readEdge(bais, edge -> {
+                    final Edge detachedEdge = (Edge) edge;
+                    assertEquals(e.id(), detachedEdge.id());
+                    assertEquals(v1.id(), detachedEdge.outVertex().id());
+                    assertEquals(v2.id(), detachedEdge.inVertex().id());
+                    assertEquals(v1.label(), detachedEdge.outVertex().label());
+                    assertEquals(v2.label(), detachedEdge.inVertex().label());
+                    assertEquals(e.label(), detachedEdge.label());
+                    assertEquals(0.5d, detachedEdge.properties("weight").next().value());
+                    assertEquals("rw", detachedEdge.properties("acl").next().value());
+                    called.set(true);
+                    return null;
+                });
+            }
+
+            assertTrue(called.get());
+        }
+    }
+
+    @Test
+    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
+    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_FLOAT_VALUES)
+    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_DOUBLE_VALUES)
+    public void shouldReadWriteEdgeToGraphSON() throws Exception {
+        final Vertex v1 = graph.addVertex(T.label, "person");
+        final Vertex v2 = graph.addVertex(T.label, "person");
+        final Edge e = v1.addEdge("friend", v2, "weight", 0.5f, "acl", "rw");
+
+        try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
+            final GraphSONWriter writer = graph.io(graphson).writer().create();
+            writer.writeEdge(os, e);
+
+            final AtomicBoolean called = new AtomicBoolean(false);
+            final GraphSONReader reader = graph.io(graphson).reader().create();
+            try (final ByteArrayInputStream bais = new ByteArrayInputStream(os.toByteArray())) {
+                reader.readEdge(bais, edge -> {
+                    final Edge detachedEdge = (Edge) edge;
+                    assertEquals(e.id(), graph.edges(detachedEdge.id().toString()).next().id());
+                    assertEquals(v1.id(), graph.vertices(detachedEdge.outVertex().id().toString()).next().id());
+                    assertEquals(v2.id(), graph.vertices(detachedEdge.inVertex().id().toString()).next().id());
+                    assertEquals(v1.label(), detachedEdge.outVertex().label());
+                    assertEquals(v2.label(), detachedEdge.inVertex().label());
+                    assertEquals(e.label(), detachedEdge.label());
+                    assertEquals(0.5d, detachedEdge.properties("weight").next().value());
+                    assertEquals("rw", detachedEdge.properties("acl").next().value());
+                    called.set(true);
+                    return null;
+                });
+            }
+
+            assertTrue(called.get());
+        }
+    }
+
+    @Test
+    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
+    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_FLOAT_VALUES)
+    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_DOUBLE_VALUES)
+    public void shouldReadWriteDetachedEdgeAsReferenceToGraphSON() throws Exception {
+        final Vertex v1 = graph.addVertex(T.label, "person");
+        final Vertex v2 = graph.addVertex(T.label, "person");
+        final Edge e = DetachedFactory.detach(v1.addEdge("friend", v2, "weight", 0.5f, "acl", "rw"), false);
+
+        try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
+            final GraphSONWriter writer = graph.io(graphson).writer().create();
+            writer.writeEdge(os, e);
+
+            final AtomicBoolean called = new AtomicBoolean(false);
+            final GraphSONReader reader = graph.io(graphson).reader().create();
+            try (final ByteArrayInputStream bais = new ByteArrayInputStream(os.toByteArray())) {
+                reader.readEdge(bais, edge -> {
+                    final Edge detachedEdge = (Edge) edge;
+                    assertEquals(e.id(), graph.edges(detachedEdge.id().toString()).next().id());
+                    assertEquals(v1.id(), graph.vertices(detachedEdge.outVertex().id().toString()).next().id());
+                    assertEquals(v2.id(), graph.vertices(detachedEdge.inVertex().id().toString()).next().id());
+                    assertEquals(v1.label(), detachedEdge.outVertex().label());
+                    assertEquals(v2.label(), detachedEdge.inVertex().label());
+                    assertEquals(e.label(), detachedEdge.label());
+                    assertEquals(e.keys().size(), IteratorUtils.count(detachedEdge.properties()));
+                    called.set(true);
+                    return null;
+                });
+            }
+
+            assertTrue(called.get());
+        }
+    }
+
+    @Test
+    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
+    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_FLOAT_VALUES)
+    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_DOUBLE_VALUES)
+    public void shouldReadWriteDetachedEdgeToGraphSON() throws Exception {
+        final Vertex v1 = graph.addVertex(T.label, "person");
+        final Vertex v2 = graph.addVertex(T.label, "person");
+        final Edge e = DetachedFactory.detach(v1.addEdge("friend", v2, "weight", 0.5f, "acl", "rw"), true);
+
+        try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
+            final GraphSONWriter writer = graph.io(graphson).writer().create();
+            writer.writeEdge(os, e);
+
+            final AtomicBoolean called = new AtomicBoolean(false);
+            final GraphSONReader reader = graph.io(graphson).reader().create();
+            try (final ByteArrayInputStream bais = new ByteArrayInputStream(os.toByteArray())) {
+                reader.readEdge(bais, edge -> {
+                    final Edge detachedEdge = (Edge) edge;
+                    assertEquals(e.id(), graph.edges(detachedEdge.id().toString()).next().id());
+                    assertEquals(v1.id(), graph.vertices(detachedEdge.outVertex().id().toString()).next().id());
+                    assertEquals(v2.id(), graph.vertices(detachedEdge.inVertex().id().toString()).next().id());
+                    assertEquals(v1.label(), detachedEdge.outVertex().label());
+                    assertEquals(v2.label(), detachedEdge.inVertex().label());
+                    assertEquals(e.label(), detachedEdge.label());
+                    assertEquals(0.5d, detachedEdge.properties("weight").next().value());
+                    assertEquals("rw", detachedEdge.properties("acl").next().value());
+                    called.set(true);
+                    return null;
+                });
+            }
+
+            assertTrue(called.get());
+        }
+    }
+
+    @Test
+    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
+    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_FLOAT_VALUES)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_NUMERIC_IDS)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = FEATURE_USER_SUPPLIED_IDS)
+    public void shouldReadWriteEdgeToGraphSONNonLossy() throws Exception {
+        final Vertex v1 = graph.addVertex(T.id, 1l, T.label, "person");
+        final Vertex v2 = graph.addVertex(T.id, 2l, T.label, "person");
+        final Edge e = v1.addEdge("friend", v2, "weight", 0.5f, "acl", "rw");
+
+        try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
+            final GraphSONWriter writer = graph.io(graphson).writer().mapper(graph.io(graphson).mapper().embedTypes(true).create()).create();
+            writer.writeEdge(os, e);
+
+            final AtomicBoolean called = new AtomicBoolean(false);
+            final GraphSONReader reader = graph.io(graphson).reader().mapper(graph.io(graphson).mapper().embedTypes(true).create()).create();
+            try (final ByteArrayInputStream bais = new ByteArrayInputStream(os.toByteArray())) {
+                reader.readEdge(bais, edge -> {
+                    final Edge detachedEdge = (Edge) edge;
+                    assertEquals(e.id(), detachedEdge.id());
+                    assertEquals(v1.id(), detachedEdge.outVertex().id());
+                    assertEquals(v2.id(), detachedEdge.inVertex().id());
+                    assertEquals(v1.label(), detachedEdge.outVertex().label());
+                    assertEquals(v2.label(), detachedEdge.inVertex().label());
+                    assertEquals(e.label(), detachedEdge.label());
+                    assertEquals(0.5f, detachedEdge.properties("weight").next().value());
+                    assertEquals("rw", detachedEdge.properties("acl").next().value());
+                    called.set(true);
+
+                    return null;
+                });
+            }
+
+            assertTrue(called.get());
+        }
+    }
+
+    @Test
+    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
+    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_SERIALIZABLE_VALUES)
+    public void shouldSupportUUIDInGraphSON() throws Exception {
+        final UUID id = UUID.randomUUID();
+        final Vertex v1 = graph.addVertex(T.label, "person");
+        final Vertex v2 = graph.addVertex(T.label, "person");
+        final Edge e = v1.addEdge("friend", v2, "uuid", id);
+
+        try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
+            final GraphSONWriter writer = graph.io(graphson).writer().mapper(graph.io(graphson).mapper().embedTypes(true).create()).create();
+            writer.writeEdge(os, e);
+
+            final AtomicBoolean called = new AtomicBoolean(false);
+            final GraphSONReader reader = graph.io(graphson).reader().mapper(graph.io(graphson).mapper().embedTypes(true).create()).create();
+            try (final ByteArrayInputStream bais = new ByteArrayInputStream(os.toByteArray())) {
+                reader.readEdge(bais, edge -> {
+                    final Edge detachedEdge = (Edge) edge;
+                    // a quick reminder here that the purpose of these id assertions is to ensure that those with
+                    // complex ids that are not simply toString'd (i.e. are complex objects in JSON as well)
+                    // properly respond to filtering in Graph.edges/vertices
+                    assertEquals(e.id(), graph.edges(detachedEdge.id()).next().id());
+                    assertEquals(v1.id(), graph.vertices(detachedEdge.outVertex().id()).next().id());
+                    assertEquals(v2.id(), graph.vertices(detachedEdge.inVertex().id()).next().id());
+                    assertEquals(v1.label(), detachedEdge.outVertex().label());
+                    assertEquals(v2.label(), detachedEdge.inVertex().label());
+                    assertEquals(e.label(), detachedEdge.label());
+                    assertEquals(e.keys().size(), IteratorUtils.count(detachedEdge.properties()));
+                    assertEquals(id, detachedEdge.value("uuid"));
+
+                    called.set(true);
+
+                    return null;
+                });
+            }
+
+            assertTrue(called.get());
+        }
+    }
+
+    @Test
+    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
+    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_SERIALIZABLE_VALUES)
+    public void shouldSupportUUIDInGryo() throws Exception {
+        final UUID id = UUID.randomUUID();
+        final Vertex v1 = graph.addVertex(T.label, "person");
+        final Vertex v2 = graph.addVertex(T.label, "person");
+        final Edge e = v1.addEdge("friend", v2, "uuid", id);
+
+        try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
+            final GryoWriter writer = graph.io(gryo).writer().create();
+            writer.writeEdge(os, e);
+
+            final AtomicBoolean called = new AtomicBoolean(false);
+            final GryoReader reader = graph.io(gryo).reader().create();
+            try (final ByteArrayInputStream bais = new ByteArrayInputStream(os.toByteArray())) {
+                reader.readEdge(bais, edge -> {
+                    final Edge detachedEdge = (Edge) edge;
+                    assertEquals(e.id(), detachedEdge.id());
+                    assertEquals(v1.id(), detachedEdge.outVertex().id());
+                    assertEquals(v2.id(), detachedEdge.inVertex().id());
+                    assertEquals(v1.label(), detachedEdge.outVertex().label());
+                    assertEquals(v2.label(), detachedEdge.inVertex().label());
+                    assertEquals(e.label(), detachedEdge.label());
+                    assertEquals(e.keys().size(), IteratorUtils.count(detachedEdge.properties()));
+                    assertEquals(id, detachedEdge.value("uuid"));
+
+                    called.set(true);
+
+                    return null;
+                });
+            }
+
+            assertTrue(called.get());
+        }
+    }
+
+    @Test
+    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
+    @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_STRING_VALUES)
+    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_FLOAT_VALUES)
+    public void shouldReadWriteVertexNoEdgesToGryoUsingFloatProperty() throws Exception {
+        final Vertex v1 = graph.addVertex("name", "marko", "acl", "rw");
+
+        final Vertex v2 = graph.addVertex();
+        v1.addEdge("friends", v2, "weight", 0.5f);
+
+        try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
+            final GryoWriter writer = graph.io(gryo).writer().create();
+            writer.writeVertex(os, v1);
+
+            final AtomicBoolean called = new AtomicBoolean(false);
+            final GryoReader reader = graph.io(gryo).reader().create();
+            try (final ByteArrayInputStream bais = new ByteArrayInputStream(os.toByteArray())) {
+                reader.readVertex(bais, attachable -> {
+                    final Vertex detachedVertex = attachable.get();
+                    assertEquals(v1.id(), detachedVertex.id());
+                    assertEquals(v1.label(), detachedVertex.label());
+                    assertEquals(2, IteratorUtils.count(detachedVertex.properties()));
+                    assertEquals(v1.value("name"), detachedVertex.value("name").toString());
+                    assertEquals(v1.value("acl"), detachedVertex.value("acl").toString());
+                    called.set(true);
+                    return mock(Vertex.class);
+                });
+            }
+            assertTrue(called.get());
+        }
+    }
+
+    @Test
+    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
+    @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_STRING_VALUES)
+    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_DOUBLE_VALUES)
+    public void shouldReadWriteVertexNoEdgesToGryo() throws Exception {
+        final Vertex v1 = graph.addVertex("name", "marko", "acl", "rw");
+        final Vertex v2 = graph.addVertex();
+        v1.addEdge("friends", v2, "weight", 0.5d);
+
+        try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
+            final GryoWriter writer = graph.io(gryo).writer().create();
+            writer.writeVertex(os, v1);
+
+            final AtomicBoolean called = new AtomicBoolean(false);
+            final GryoReader reader = graph.io(gryo).reader().create();
+            try (final ByteArrayInputStream bais = new ByteArrayInputStream(os.toByteArray())) {
+                reader.readVertex(bais, attachable -> {
+                    final Vertex detachedVertex = attachable.get();
+                    assertEquals(v1.id(), detachedVertex.id());
+                    assertEquals(v1.label(), detachedVertex.label());
+                    assertEquals(2, IteratorUtils.count(detachedVertex.properties()));
+                    assertEquals(v1.value("name"), detachedVertex.value("name").toString());
+                    assertEquals(v1.value("acl"), detachedVertex.value("acl").toString());
+                    called.set(true);
+                    return mock(Vertex.class);
+                });
+            }
+            assertTrue(called.get());
+        }
+    }
+
+    @Test
+    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
+    @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_STRING_VALUES)
+    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_DOUBLE_VALUES)
+    public void shouldReadWriteDetachedVertexNoEdgesToGryo() throws Exception {
+        final Vertex v1 = graph.addVertex("name", "marko", "acl", "rw");
+        final Vertex v2 = graph.addVertex();
+        v1.addEdge("friends", v2, "weight", 0.5d);
+
+        try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
+            final GryoWriter writer = graph.io(gryo).writer().create();
+            final DetachedVertex dv = DetachedFactory.detach(v1, true);
+            writer.writeVertex(os, dv);
+
+            final AtomicBoolean called = new AtomicBoolean(false);
+            final GryoReader reader = graph.io(gryo).reader().create();
+            try (final ByteArrayInputStream bais = new ByteArrayInputStream(os.toByteArray())) {
+                reader.readVertex(bais, attachable -> {
+                    final Vertex detachedVertex = attachable.get();
+                    assertEquals(v1.id(), detachedVertex.id());
+                    assertEquals(v1.label(), detachedVertex.label());
+                    assertEquals(2, IteratorUtils.count(detachedVertex.properties()));
+                    assertEquals("marko", detachedVertex.properties("name").next().value());
+                    assertEquals("rw", detachedVertex.properties("acl").next().value());
+                    called.set(true);
+                    return mock(Vertex.class);
+                });
+            }
+            assertTrue(called.get());
+        }
+    }
+
+    @Test
+    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
+    @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_STRING_VALUES)
+    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_DOUBLE_VALUES)
+    public void shouldReadWriteDetachedVertexAsReferenceNoEdgesToGryo() throws Exception {
+        final Vertex v1 = graph.addVertex("name", "marko", "acl", "rw");
+        final Vertex v2 = graph.addVertex();
+        v1.addEdge("friends", v2, "weight", 0.5d);
+
+        try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
+            final GryoWriter writer = graph.io(gryo).writer().create();
+            final DetachedVertex dv = DetachedFactory.detach(v1, false);
+            writer.writeVertex(os, dv);
+
+            final AtomicBoolean called = new AtomicBoolean(false);
+            final GryoReader reader = graph.io(gryo).reader().create();
+            try (final ByteArrayInputStream bais = new ByteArrayInputStream(os.toByteArray())) {
+                reader.readVertex(bais, attachable -> {
+                    final Vertex detachedVertex = attachable.get();
+                    assertEquals(v1.id(), detachedVertex.id());
+                    assertEquals(v1.label(), detachedVertex.label());
+                    assertEquals(0, IteratorUtils.count(detachedVertex.properties()));
+                    called.set(true);
+                    return mock(Vertex.class);
+                });
+            }
+            assertTrue(called.get());
+        }
+    }
+
+    @Test
+    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
+    @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_STRING_VALUES)
+    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_DOUBLE_VALUES)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_MULTI_PROPERTIES)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_META_PROPERTIES)
+    public void shouldReadWriteVertexMultiPropsNoEdgesToGryo() throws Exception {
+        final Vertex v1 = graph.addVertex("name", "marko", "name", "mark", "acl", "rw");
+        v1.property(VertexProperty.Cardinality.single, "propsSquared", 123, "x", "a", "y", "b");
+        final Vertex v2 = graph.addVertex();
+        v1.addEdge("friends", v2, "weight", 0.5d);
+
+        try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
+            final GryoWriter writer = graph.io(gryo).writer().create();
+            writer.writeVertex(os, v1);
+
+            final AtomicBoolean called = new AtomicBoolean(false);
+            final GryoReader reader = graph.io(gryo).reader().create();
+            try (final ByteArrayInputStream bais = new ByteArrayInputStream(os.toByteArray())) {
+                reader.readVertex(bais, attachable -> {
+                    final Vertex detachedVertex = attachable.get();
+                    assertEquals(v1.id(), detachedVertex.id());
+                    assertEquals(v1.label(), detachedVertex.label());
+                    assertEquals(4, IteratorUtils.count(detachedVertex.properties()));
+                    assertEquals("a", detachedVertex.property("propsSquared").value("x"));
+                    assertEquals("b", detachedVertex.property("propsSquared").value("y"));
+                    assertEquals(2, IteratorUtils.count(detachedVertex.properties("name")));
+                    assertTrue(StreamFactory.stream(detachedVertex.properties("name")).allMatch(p -> p.key().equals("name") && (p.value().equals("marko") || p.value().equals("mark"))));
+                    assertEquals(v1.value("acl"), detachedVertex.value("acl").toString());
+                    called.set(true);
+                    return mock(Vertex.class);
+                });
+            }
+            assertTrue(called.get());
+        }
+    }
+
+    @Test
+    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
+    @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_STRING_VALUES)
+    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_FLOAT_VALUES)
+    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_DOUBLE_VALUES)
+    public void shouldReadWriteVertexNoEdgesToGraphSON() throws Exception {
+        final Vertex v1 = graph.addVertex("name", "marko", "acl", "rw");
+        final Vertex v2 = graph.addVertex();
+        v1.addEdge("friends", v2, "weight", 0.5f);
+
+        try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
+            final GraphSONWriter writer = graph.io(graphson).writer().create();
+            writer.writeVertex(os, v1);
+
+            final AtomicBoolean called = new AtomicBoolean(false);
+            final GraphSONReader reader = graph.io(graphson).reader().create();
+            try (final ByteArrayInputStream bais = new ByteArrayInputStream(os.toByteArray())) {
+                reader.readVertex(bais, attachable -> {
+                    final Vertex detachedVertex = attachable.get();
+                    assertEquals(v1.id(), graph.vertices(detachedVertex.id().toString()).next().id());
+                    assertEquals(v1.label(), detachedVertex.label());
+                    assertEquals(2, IteratorUtils.count(detachedVertex.properties()));
+                    assertEquals("marko", detachedVertex.properties("name").next().value());
+                    assertEquals("rw", detachedVertex.properties("acl").next().value());
+                    called.set(true);
+                    return detachedVertex;
+                });
+            }
+
+            assertTrue(called.get());
+        }
+    }
+
+    @Test
+    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
+    @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_STRING_VALUES)
+    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_FLOAT_VALUES)
+    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_DOUBLE_VALUES)
+    public void shouldReadWriteDetachedVertexNoEdgesToGraphSON() throws Exception {
+        final Vertex v1 = graph.addVertex("name", "marko", "acl", "rw");
+        final Vertex v2 = graph.addVertex();
+        v1.addEdge("friends", v2, "weight", 0.5f);
+
+        try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
+            final GraphSONWriter writer = graph.io(graphson).writer().create();
+            final DetachedVertex dv = DetachedFactory.detach(v1, true);
+            writer.writeVertex(os, dv);
+
+            final AtomicBoolean called = new AtomicBoolean(false);
+            final GraphSONReader reader = graph.io(graphson).reader().create();
+            try (final ByteArrayInputStream bais = new ByteArrayInputStream(os.toByteArray())) {
+                reader.readVertex(bais, attachable -> {
+                    final Vertex detachedVertex = attachable.get();
+                    assertEquals(v1.id(), graph.vertices(detachedVertex.id().toString()).next().id());
+                    assertEquals(v1.label(), detachedVertex.label());
+                    assertEquals(2, IteratorUtils.count(detachedVertex.properties()));
+                    assertEquals("marko", detachedVertex.properties("name").next().value());
+                    assertEquals("rw", detachedVertex.properties("acl").next().value());
+                    called.set(true);
+                    return detachedVertex;
+                });
+            }
+
+            assertTrue(called.get());
+        }
+    }
+
+    @Test
+    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
+    @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_STRING_VALUES)
+    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_FLOAT_VALUES)
+    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_DOUBLE_VALUES)
+    public void shouldReadWriteDetachedVertexAsReferenceNoEdgesToGraphSON() throws Exception {
+        final Vertex v1 = graph.addVertex("name", "marko", "acl", "rw");
+        final Vertex v2 = graph.addVertex();
+        v1.addEdge("friends", v2, "weight", 0.5f);
+
+        try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
+            final GraphSONWriter writer = graph.io(graphson).writer().create();
+            final DetachedVertex dv = DetachedFactory.detach(v1, false);
+            writer.writeVertex(os, dv);
+
+            final AtomicBoolean called = new AtomicBoolean(false);
+            final GraphSONReader reader = graph.io(graphson).reader().create();
+            try (final ByteArrayInputStream bais = new ByteArrayInputStream(os.toByteArray())) {
+                reader.readVertex(bais, attachable -> {
+                    final Vertex detachedVertex = attachable.get();
+                    assertEquals(v1.id(), graph.vertices(detachedVertex.id().toString()).next().id());
+                    assertEquals(v1.label(), detachedVertex.label());
+                    assertEquals(0, IteratorUtils.count(detachedVertex.properties()));
+
+                    called.set(true);
+                    return detachedVertex;
+                });
+            }
+
+            assertTrue(called.get());
+        }
+    }
+
+    @Test
+    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
+    @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_STRING_VALUES)
+    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_DOUBLE_VALUES)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_MULTI_PROPERTIES)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_META_PROPERTIES)
+    public void shouldReadWriteVertexMultiPropsNoEdgesToGraphSON() throws Exception {
+        final Vertex v1 = graph.addVertex("name", "marko", "name", "mark", "acl", "rw");
+        v1.property(VertexProperty.Cardinality.single, "propsSquared", 123, "x", "a", "y", "b");
+        final Vertex v2 = graph.addVertex();
+        v1.addEdge("friends", v2, "weight", 0.5d);
+
+        try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
+            final GraphSONWriter writer = graph.io(graphson).writer().create();
+            writer.writeVertex(os, v1);
+
+            final AtomicBoolean called = new AtomicBoolean(false);
+            final GraphSONReader reader = graph.io(graphson).reader().create();
+            try (final ByteArrayInputStream bais = new ByteArrayInputStream(os.toByteArray())) {
+                reader.readVertex(bais, attachable -> {
+                    final Vertex detachedVertex = attachable.get();
+                    assertEquals(v1.id(), graph.vertices(detachedVertex.id().toString()).next().id());
+                    assertEquals(v1.label(), detachedVertex.label());
+                    assertEquals(4, IteratorUtils.count(detachedVertex.properties()));
+                    assertEquals("a", detachedVertex.property("propsSquared").value("x"));
+                    assertEquals("b", detachedVertex.property("propsSquared").value("y"));
+                    assertEquals(2, IteratorUtils.count(detachedVertex.properties("name")));
+                    assertTrue(StreamFactory.stream(detachedVertex.properties("name")).allMatch(p -> p.key().equals("name") && (p.value().equals("marko") || p.value().equals("mark"))));
+                    assertEquals(v1.value("acl"), detachedVertex.value("acl").toString());
+                    called.set(true);
+                    return mock(Vertex.class);
+                });
+            }
+            assertTrue(called.get());
+        }
+    }
+
+    @Test
+    @LoadGraphWith(LoadGraphWith.GraphData.CLASSIC)
+    public void shouldReadWriteVerticesNoEdgesToGryoManual() throws Exception {
+        try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
+            final GryoWriter writer = graph.io(gryo).writer().create();
+            writer.writeVertices(os, g.V().has("age", P.gt(30)));
+
+            final AtomicInteger called = new AtomicInteger(0);
+            final GryoReader reader = graph.io(gryo).reader().create();
+            try (final VertexByteArrayInputStream vbais = new VertexByteArrayInputStream(new ByteArrayInputStream(os.toByteArray()))) {
+                final byte[] y = vbais.readVertexBytes().toByteArray();
+                reader.readVertex(new ByteArrayInputStream(y),
+                        attachable -> {
+                            final Vertex detachedVertex = attachable.get();
+                            called.incrementAndGet();
+                            return detachedVertex;
+                        });
+
+                final byte[] z = vbais.readVertexBytes().toByteArray();
+                reader.readVertex(new ByteArrayInputStream(z),
+                        attachable -> {
+                            final Vertex detachedVertex = attachable.get();
+                            called.incrementAndGet();
+                            return detachedVertex;
+                        });
+            }
+
+            assertEquals(2, called.get());
+        }
+    }
+
+    @Test
+    @LoadGraphWith(LoadGraphWith.GraphData.MODERN)
+    public void shouldReadWriteVerticesNoEdgesToGryo() throws Exception {
+        try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
+            final GryoWriter writer = graph.io(gryo).writer().create();
+            writer.writeVertices(os, g.V().has("age", P.gt(30)));
+
+            final AtomicInteger called = new AtomicInteger(0);
+            final GryoReader reader = graph.io(gryo).reader().create();
+
+            try (final ByteArrayInputStream bais = new ByteArrayInputStream(os.toByteArray())) {
+                final Iterator<Vertex> itty = reader.readVertices(bais,
+                        attachable -> {
+                            final Vertex detachedVertex = attachable.get();
+                            called.incrementAndGet();
+                            return detachedVertex;
+                        }, null, null);
+
+                assertNotNull(itty.next());
+                assertNotNull(itty.next());
+                assertFalse(itty.hasNext());
+            }
+
+            assertEquals(2, called.get());
+        }
+    }
+
+    @Test
+    @LoadGraphWith(LoadGraphWith.GraphData.MODERN)
+    public void shouldReadWriteVerticesNoEdgesToGraphSON() throws Exception {
+        try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
+            final GraphSONWriter writer = graph.io(graphson).writer().create();
+            writer.writeVertices(os, g.V().has("age", P.gt(30)));
+
+            final AtomicInteger called = new AtomicInteger(0);
+            final GraphSONReader reader = graph.io(graphson).reader().create();
+
+            try (final ByteArrayInputStream bais = new ByteArrayInputStream(os.toByteArray())) {
+                final Iterator<Vertex> itty = reader.readVertices(bais,
+                        attachable -> {
+                            final Vertex detachedVertex = attachable.get();
+                            called.incrementAndGet();
+                            return detachedVertex;
+                        }, null, null);
+
+                assertNotNull(itty.next());
+                assertNotNull(itty.next());
+                assertFalse(itty.hasNext());
+            }
+
+            assertEquals(2, called.get());
+        }
+    }
+
+    @Test
+    @LoadGraphWith(LoadGraphWith.GraphData.CLASSIC)
+    public void shouldReadWriteVerticesNoEdgesToGraphSONManual() throws Exception {
+        try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
+            final GraphSONWriter writer = graph.io(graphson).writer().create();
+            writer.writeVertices(os, g.V().has("age", P.gt(30)));
+
+            final AtomicInteger called = new AtomicInteger(0);
+            final GraphSONReader reader = graph.io(graphson).reader().create();
+            final BufferedReader br = new BufferedReader(new InputStreamReader(new ByteArrayInputStream(os.toByteArray())));
+            String line = br.readLine();
+            reader.readVertex(new ByteArrayInputStream(line.getBytes()),
+                    attachable -> {
+                        called.incrementAndGet();
+                        return mock(Vertex.class);
+                    });
+
+            line = br.readLine();
+            reader.readVertex(new ByteArrayInputStream(line.getBytes()),
+                    detachedVertex -> {
+                        called.incrementAndGet();
+                        return mock(Vertex.class);
+                    });
+
+            assertEquals(2, called.get());
+        }
+    }
+
+
+    @Test
+    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
+    @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_STRING_VALUES)
+    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_DOUBLE_VALUES)
+    public void shouldReadWriteVertexWithOUTEdgesToGryo() throws Exception {
+        final Vertex v1 = graph.addVertex("name", "marko", T.label, "person");
+
+        final Vertex v2 = graph.addVertex(T.label, "person");
+        final Edge e = v1.addEdge("friends", v2, "weight", 0.5d);
+
+        try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
+            final GryoWriter writer = graph.io(gryo).writer().create();
+            writer.writeVertex(os, v1, Direction.OUT);
+
+            final AtomicBoolean calledVertex = new AtomicBoolean(false);
+            final AtomicBoolean calledEdge = new AtomicBoolean(false);
+            final GryoReader reader = graph.io(gryo).reader().create();
+
+            try (final ByteArrayInputStream bais = new ByteArrayInputStream(os.toByteArray())) {
+                reader.readVertex(bais, attachable -> {
+                            final Vertex detachedVertex = attachable.get();
+                            TestHelper.validateVertexEquality(v1, detachedVertex, true);
+                            calledVertex.set(true);
+                            return detachedVertex;
+                        },
+                        attachable -> {
+                            final Edge detachedEdge = attachable.get();
+                            TestHelper.validateEdgeEquality(e, detachedEdge);
+                            calledEdge.set(true);
+
+                            return detachedEdge;
+                        }, Direction.OUT);
+            }
+
+            assertTrue(calledVertex.get());
+            assertTrue(calledEdge.get());
+        }
+    }
+
+    @Test
+    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
+    @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_STRING_VALUES)
+    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_FLOAT_VALUES)
+    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_DOUBLE_VALUES)
+    public void shouldReadWriteVertexWithOUTEdgesToGraphSON() throws Exception {
+        final Vertex v1 = graph.addVertex("name", "marko", T.label, "person");
+        final Vertex v2 = graph.addVertex(T.label, "person");
+        final Edge e = v1.addEdge("friends", v2, "weight", 0.5f);
+
+        try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
+            final GraphSONWriter writer = graph.io(graphson).writer().create();
+            writer.writeVertex(os, v1, Direction.OUT);
+
+            final AtomicBoolean calledVertex = new AtomicBoolean(false);
+            final AtomicBoolean calledEdge = new AtomicBoolean(false);
+            final GraphSONReader reader = graph.io(graphson).reader().create();
+            try (final ByteArrayInputStream bais = new ByteArrayInputStream(os.toByteArray())) {
+                reader.readVertex(bais, attachable -> {
+                    final Vertex detachedVertex = attachable.get();
+                    assertEquals(v1.id(), graph.vertices(detachedVertex.id().toString()).next().id());
+                    assertEquals(v1.label(), detachedVertex.label());
+                    assertEquals(1, IteratorUtils.count(detachedVertex.properties()));
+                    assertEquals("marko", detachedVertex.value("name"));
+                    calledVertex.set(true);
+                    return null;
+                }, attachable -> {
+                    final Edge detachedEdge = attachable.get();
+                    assertEquals(e.id(), graph.edges(detachedEdge.id().toString()).next().id());
+                    assertEquals(v1.id(), graph.vertices(detachedEdge.outVertex().id().toString()).next().id());
+                    assertEquals(v2.id(), graph.vertices(detachedEdge.inVertex().id().toString()).next().id());
+                    assertEquals(v1.label(), detachedEdge.outVertex().label());
+                    assertEquals(e.label(), detachedEdge.label());
+                    assertEquals(1, IteratorUtils.count(detachedEdge.properties()));
+                    assertEquals(0.5d, detachedEdge.value("weight"), 0.000001d);                      // lossy
+
+                    calledEdge.set(true);
+                    return null;
+                }, Direction.OUT);
+            }
+
+            assertTrue(calledVertex.get());
+            assertTrue(calledEdge.get());
+        }
+    }
+
+    @Test
+    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
+    @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_STRING_VALUES)
+    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_DOUBLE_VALUES)
+    public void shouldReadWriteVertexWithINEdgesToGryo() throws Exception {
+        final Vertex v1 = graph.addVertex("name", "marko", T.label, "person");
+
+        final Vertex v2 = graph.addVertex(T.label, "person");
+        final Edge e = v2.addEdge("friends", v1, "weight", 0.5d);
+
+        try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
+            final GryoWriter writer = graph.io(gryo).writer().create();
+            writer.writeVertex(os, v1, Direction.IN);
+
+            final AtomicBoolean calledVertex = new AtomicBoolean(false);
+            final AtomicBoolean calledEdge = new AtomicBoolean(false);
+
+            final GryoReader reader = graph.io(gryo).reader().create();
+            try (final ByteArrayInputStream bais = new ByteArrayInputStream(os.toByteArray())) {
+                reader.readVertex(bais, attachable -> {
+                    final Vertex detachedVertex = attachable.get();
+                    TestHelper.validateVertexEquality(v1, detachedVertex, true);
+                    calledVertex.set(true);
+                    return detachedVertex;
+                }, attachable -> {
+                    final Edge detachedEdge = attachable.get();
+                    TestHelper.validateEdgeEquality(e, detachedEdge);
+                    calledEdge.set(true);
+
+                    return detachedEdge;
+                }, Direction.IN);
+            }
+
+            assertTrue(calledVertex.get());
+            assertTrue(calledEdge.get());
+        }
+    }
+
+    @Test
+    @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
+    @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_STRING_VALUES)
+    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_FLOAT_VALUES)
+    @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_DOUBLE_VALUES)
+    public void shouldReadWriteVertexWithINEdgesToGraphSON() throws Exception {
+        final

<TRUNCATED>


[19/50] [abbrv] incubator-tinkerpop git commit: VertexProgram.loadState() and MapReduce.loadState() now take a Graph argument. This greatly simplifies numerous areas of the code base around getting the graph to the OLAP job. So much code was gutted that

Posted by dk...@apache.org.
VertexProgram.loadState() and MapReduce.loadState() now take a Graph argument. This greatly simplifies numerous areas of the code base around getting the graph to the OLAP job. So much code was gutted that did backwards workarounds to get to that information. Geez. Should have done this on day one.


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

Branch: refs/heads/TINKERPOP3-666
Commit: 48c15ee281a4fcc866a30483463ef59b8ec7fac0
Parents: e99a57b
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Fri May 8 12:00:14 2015 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Fri May 8 12:00:14 2015 -0600

----------------------------------------------------------------------
 CHANGELOG.asciidoc                              |  1 +
 .../gremlin/process/computer/MapReduce.java     |  9 ++++---
 .../gremlin/process/computer/VertexProgram.java | 15 ++++++------
 .../peerpressure/ClusterCountMapReduce.java     |  3 ++-
 .../ClusterPopulationMapReduce.java             |  3 ++-
 .../peerpressure/PeerPressureVertexProgram.java |  3 ++-
 .../ranking/pagerank/PageRankMapReduce.java     |  3 ++-
 .../ranking/pagerank/PageRankVertexProgram.java |  3 ++-
 .../traversal/TraversalVertexProgram.java       | 12 ++++++----
 .../traversal/step/map/ComputerResultStep.java  |  2 +-
 .../mapreduce/TraverserMapReduce.java           |  5 ++--
 .../util/AbstractVertexProgramBuilder.java      |  5 ++--
 .../process/traversal/step/map/GroupStep.java   | 25 +++++++++-----------
 .../step/sideEffect/AggregateStep.java          |  5 ++--
 .../sideEffect/GroupCountSideEffectStep.java    |  5 ++--
 .../step/sideEffect/GroupSideEffectStep.java    |  7 +++---
 .../traversal/step/sideEffect/StoreStep.java    |  5 ++--
 .../step/sideEffect/TreeSideEffectStep.java     |  3 ++-
 .../ranking/PageRankVertexProgramTest.java      |  2 +-
 .../groovy/plugin/HadoopRemoteAcceptor.java     |  2 +-
 .../hadoop/process/computer/HadoopCombine.java  |  5 +++-
 .../hadoop/process/computer/HadoopMap.java      |  5 +++-
 .../hadoop/process/computer/HadoopReduce.java   |  6 +++--
 .../computer/giraph/GiraphGraphComputer.java    |  2 +-
 .../process/computer/giraph/GiraphMemory.java   |  6 ++++-
 .../computer/giraph/GiraphMessageCombiner.java  |  5 +++-
 .../computer/giraph/GiraphWorkerContext.java    |  5 +++-
 .../process/computer/spark/SparkExecutor.java   |  9 +++----
 .../computer/spark/SparkGraphComputer.java      |  2 +-
 .../process/computer/util/MemoryMapReduce.java  |  3 ++-
 .../structure/io/ObjectWritableComparator.java  |  7 ++++--
 31 files changed, 105 insertions(+), 68 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/48c15ee2/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index 91b82c5..ecfa23c 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -25,6 +25,7 @@ image::http://www.tinkerpop.com/docs/current/images/gremlin-hindu.png[width=225]
 TinkerPop 3.0.0.M9 (NOT OFFICIALLY RELEASED YET)
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
+* `VertexProgram` and `MapReduce` now add a `Graph` parameter to `loadState(Graph,Configuration)`.
 * Added `ScopingStrategy` which auto-scopes `select()` and `where()` so the language looks clean.
 * Added `Scoping` as a marker interface to state that a step desires a particular `Scope`.
 * `SelectStep`, `SelectOneStep`, and `WhereStep` support both `Scope.local` and `Scope.global` for `Map<String,Object>` or `Path` analysis, respectively.

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/48c15ee2/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/MapReduce.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/MapReduce.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/MapReduce.java
index 91e3afe..4852a9c 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/MapReduce.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/MapReduce.java
@@ -19,6 +19,7 @@
 package org.apache.tinkerpop.gremlin.process.computer;
 
 import org.apache.commons.configuration.Configuration;
+import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 
 import java.io.IOException;
@@ -69,9 +70,10 @@ public interface MapReduce<MK, MV, RK, RV, R> extends Cloneable {
      * It is important that the state loaded from loadState() is identical to any state created from a constructor.
      * For those GraphComputers that do not need to use Configurations to migrate state between JVMs, the constructor will only be used.
      *
+     * @param graph         the graph the MapReduce job will run against
      * @param configuration the configuration to load the state of the MapReduce job from.
      */
-    public default void loadState(final Configuration configuration) {
+    public default void loadState(final Graph graph, final Configuration configuration) {
 
     }
 
@@ -208,16 +210,17 @@ public interface MapReduce<MK, MV, RK, RV, R> extends Cloneable {
      * The class of the MapReduce is read from the {@link MapReduce#MAP_REDUCE} static configuration key.
      * Once the MapReduce is constructed, {@link MapReduce#loadState} method is called with the provided configuration.
      *
+     * @param graph         The graph that the MapReduce job will run against
      * @param configuration A configuration with requisite information to build a MapReduce
      * @return the newly constructed MapReduce
      */
-    public static <M extends MapReduce> M createMapReduce(final Configuration configuration) {
+    public static <M extends MapReduce> M createMapReduce(final Graph graph, final Configuration configuration) {
         try {
             final Class<M> mapReduceClass = (Class) Class.forName(configuration.getString(MAP_REDUCE));
             final Constructor<M> constructor = mapReduceClass.getDeclaredConstructor();
             constructor.setAccessible(true);
             final M mapReduce = constructor.newInstance();
-            mapReduce.loadState(configuration);
+            mapReduce.loadState(graph, configuration);
             return mapReduce;
         } catch (final Exception e) {
             throw new IllegalStateException(e.getMessage(), e);

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/48c15ee2/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/VertexProgram.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/VertexProgram.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/VertexProgram.java
index 533ea60..4fd9e82 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/VertexProgram.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/VertexProgram.java
@@ -20,6 +20,7 @@
 package org.apache.tinkerpop.gremlin.process.computer;
 
 import org.apache.commons.configuration.Configuration;
+import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 
 import java.lang.reflect.Constructor;
@@ -62,12 +63,11 @@ public interface VertexProgram<M> extends Cloneable {
      * When it is necessary to load the state of the VertexProgram, this method is called.
      * This is typically required when the VertexProgram needs to be serialized to another machine.
      * Note that what is loaded is simply the instance state, not any processed data.
-     * It is possible for this method to be called for each and every vertex in the graph.
-     * Thus, it is important to only store/load that state which is needed during execution in order to reduce startup time.
      *
+     * @param graph         the graph that the VertexProgram will run against
      * @param configuration the configuration to load the state of the VertexProgram from.
      */
-    public default void loadState(final Configuration configuration) {
+    public default void loadState(final Graph graph, final Configuration configuration) {
 
     }
 
@@ -201,19 +201,20 @@ public interface VertexProgram<M> extends Cloneable {
     /**
      * A helper method to construct a {@link VertexProgram} given the content of the supplied configuration.
      * The class of the VertexProgram is read from the {@link VertexProgram#VERTEX_PROGRAM} static configuration key.
-     * Once the VertexProgram is constructed, {@link VertexProgram#loadState} method is called with the provided configuration.
+     * Once the VertexProgram is constructed, {@link VertexProgram#loadState} method is called with the provided graph and configuration.
      *
+     * @param graph         The graph that the vertex program will execute against
      * @param configuration A configuration with requisite information to build a vertex program
      * @param <V>           The vertex program type
      * @return the newly constructed vertex program
      */
-    public static <V extends VertexProgram> V createVertexProgram(final Configuration configuration) {
+    public static <V extends VertexProgram> V createVertexProgram(final Graph graph, final Configuration configuration) {
         try {
             final Class<V> vertexProgramClass = (Class) Class.forName(configuration.getString(VERTEX_PROGRAM));
             final Constructor<V> constructor = vertexProgramClass.getDeclaredConstructor();
             constructor.setAccessible(true);
             final V vertexProgram = constructor.newInstance();
-            vertexProgram.loadState(configuration);
+            vertexProgram.loadState(graph, configuration);
             return vertexProgram;
         } catch (final Exception e) {
             throw new IllegalStateException(e.getMessage(), e);
@@ -224,7 +225,7 @@ public interface VertexProgram<M> extends Cloneable {
 
         public Builder configure(final Object... keyValues);
 
-        public <P extends VertexProgram> P create();
+        public <P extends VertexProgram> P create(final Graph graph);
 
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/48c15ee2/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/clustering/peerpressure/ClusterCountMapReduce.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/clustering/peerpressure/ClusterCountMapReduce.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/clustering/peerpressure/ClusterCountMapReduce.java
index 5f625d5..4b391ed 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/clustering/peerpressure/ClusterCountMapReduce.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/clustering/peerpressure/ClusterCountMapReduce.java
@@ -21,6 +21,7 @@ package org.apache.tinkerpop.gremlin.process.computer.clustering.peerpressure;
 import org.apache.tinkerpop.gremlin.process.computer.KeyValue;
 import org.apache.tinkerpop.gremlin.process.computer.MapReduce;
 import org.apache.tinkerpop.gremlin.process.computer.util.StaticMapReduce;
+import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.Property;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
@@ -57,7 +58,7 @@ public class ClusterCountMapReduce extends StaticMapReduce<MapReduce.NullObject,
     }
 
     @Override
-    public void loadState(final Configuration configuration) {
+    public void loadState(final Graph graph, final Configuration configuration) {
         this.memoryKey = configuration.getString(CLUSTER_COUNT_MEMORY_KEY, DEFAULT_MEMORY_KEY);
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/48c15ee2/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/clustering/peerpressure/ClusterPopulationMapReduce.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/clustering/peerpressure/ClusterPopulationMapReduce.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/clustering/peerpressure/ClusterPopulationMapReduce.java
index e172738..c87926c 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/clustering/peerpressure/ClusterPopulationMapReduce.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/clustering/peerpressure/ClusterPopulationMapReduce.java
@@ -20,6 +20,7 @@ package org.apache.tinkerpop.gremlin.process.computer.clustering.peerpressure;
 
 import org.apache.tinkerpop.gremlin.process.computer.KeyValue;
 import org.apache.tinkerpop.gremlin.process.computer.util.StaticMapReduce;
+import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.Property;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
@@ -54,7 +55,7 @@ public class ClusterPopulationMapReduce extends StaticMapReduce<Serializable, Lo
     }
 
     @Override
-    public void loadState(final Configuration configuration) {
+    public void loadState(final Graph graph, final Configuration configuration) {
         this.memoryKey = configuration.getString(CLUSTER_POPULATION_MEMORY_KEY, DEFAULT_MEMORY_KEY);
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/48c15ee2/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/clustering/peerpressure/PeerPressureVertexProgram.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/clustering/peerpressure/PeerPressureVertexProgram.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/clustering/peerpressure/PeerPressureVertexProgram.java
index c9070dd..323dd15 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/clustering/peerpressure/PeerPressureVertexProgram.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/clustering/peerpressure/PeerPressureVertexProgram.java
@@ -30,6 +30,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.MapHelper;
 import org.apache.tinkerpop.gremlin.structure.Edge;
+import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.VertexProperty;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
@@ -75,7 +76,7 @@ public class PeerPressureVertexProgram extends StaticVertexProgram<Pair<Serializ
     }
 
     @Override
-    public void loadState(final Configuration configuration) {
+    public void loadState(final Graph graph, final Configuration configuration) {
         this.traversalSupplier = LambdaHolder.loadState(configuration, INCIDENT_TRAVERSAL_SUPPLIER);
         if (null != this.traversalSupplier) {
             this.voteScope = MessageScope.Local.of(this.traversalSupplier.get());

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/48c15ee2/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/ranking/pagerank/PageRankMapReduce.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/ranking/pagerank/PageRankMapReduce.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/ranking/pagerank/PageRankMapReduce.java
index 861adaf..00e211d 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/ranking/pagerank/PageRankMapReduce.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/ranking/pagerank/PageRankMapReduce.java
@@ -20,6 +20,7 @@ package org.apache.tinkerpop.gremlin.process.computer.ranking.pagerank;
 
 import org.apache.tinkerpop.gremlin.process.computer.KeyValue;
 import org.apache.tinkerpop.gremlin.process.computer.util.StaticMapReduce;
+import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.Property;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
@@ -52,7 +53,7 @@ public class PageRankMapReduce extends StaticMapReduce<Object, Double, Object, D
     }
 
     @Override
-    public void loadState(final Configuration configuration) {
+    public void loadState(final Graph graph, final Configuration configuration) {
         this.memoryKey = configuration.getString(PAGE_RANK_MEMORY_KEY, DEFAULT_MEMORY_KEY);
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/48c15ee2/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/ranking/pagerank/PageRankVertexProgram.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/ranking/pagerank/PageRankVertexProgram.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/ranking/pagerank/PageRankVertexProgram.java
index cbd999c..96492b6 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/ranking/pagerank/PageRankVertexProgram.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/ranking/pagerank/PageRankVertexProgram.java
@@ -30,6 +30,7 @@ import org.apache.tinkerpop.gremlin.process.computer.util.StaticVertexProgram;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
 import org.apache.tinkerpop.gremlin.structure.Edge;
+import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.VertexProperty;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
@@ -69,7 +70,7 @@ public class PageRankVertexProgram extends StaticVertexProgram<Double> {
     }
 
     @Override
-    public void loadState(final Configuration configuration) {
+    public void loadState(final Graph graph, final Configuration configuration) {
         this.traversalSupplier = LambdaHolder.loadState(configuration, INCIDENT_TRAVERSAL_SUPPLIER);
         if (null != this.traversalSupplier) {
             this.incidentMessageScope = MessageScope.Local.of(this.traversalSupplier.get());

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/48c15ee2/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 4f630c6..7b4e8b0 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
@@ -96,11 +96,12 @@ public final class TraversalVertexProgram implements VertexProgram<TraverserSet<
      * A helper method to yield a {@link Supplier} of {@link Traversal} from the {@link Configuration}.
      * The supplier is either a {@link Class}, {@link org.apache.tinkerpop.gremlin.process.computer.util.ScriptEngineLambda}, or a direct Java8 lambda.
      *
+     * @param graph         the graph that the traversal will run against
      * @param configuration The configuration containing the public static TRAVERSAL_SUPPLIER key.
      * @return the traversal supplier in the configuration
      */
-    public static Supplier<Traversal.Admin<?, ?>> getTraversalSupplier(final Configuration configuration) {
-        return LambdaHolder.<Supplier<Traversal.Admin<?, ?>>>loadState(configuration, TraversalVertexProgram.TRAVERSAL_SUPPLIER).get();
+    public static Traversal.Admin<?, ?> getTraversal(final Graph graph, final Configuration configuration) {
+        return VertexProgram.<TraversalVertexProgram>createVertexProgram(graph, configuration).getTraversal();
     }
 
     public Traversal.Admin<?, ?> getTraversal() {
@@ -108,13 +109,16 @@ public final class TraversalVertexProgram implements VertexProgram<TraverserSet<
     }
 
     @Override
-    public void loadState(final Configuration configuration) {
+    public void loadState(final Graph graph, final Configuration configuration) {
         this.traversalSupplier = LambdaHolder.loadState(configuration, TRAVERSAL_SUPPLIER);
         if (null == this.traversalSupplier) {
             throw new IllegalArgumentException("The configuration does not have a traversal supplier");
         }
         this.traversal = this.traversalSupplier.get().get();
-        if (!this.traversal.isLocked()) this.traversal.applyStrategies();
+        if (!this.traversal.isLocked()) {
+            this.traversal.setGraph(graph);
+            this.traversal.applyStrategies();
+        }
         ((ComputerResultStep) this.traversal.getEndStep()).byPass();
         this.traversalMatrix = new TraversalMatrix<>(this.traversal);
         for (final MapReducer<?, ?, ?, ?, ?> mapReducer : TraversalHelper.getStepsOfAssignableClassRecursively(MapReducer.class, this.traversal)) {

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/48c15ee2/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/ComputerResultStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/ComputerResultStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/ComputerResultStep.java
index 80e8364..a5e49c9 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/ComputerResultStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/ComputerResultStep.java
@@ -76,7 +76,7 @@ public final class ComputerResultStep<S> extends AbstractStep<S, S> {
         if (this.byPass) return this.starts.next();
         if (this.first && null == this.computerResult) {
             try {
-                populateTraversers(this.graphComputer.program(TraversalVertexProgram.build().traversal(this.getTraversal(), !this.graphComputer.features().supportsDirectObjects()).create()).submit().get());
+                populateTraversers(this.graphComputer.program(TraversalVertexProgram.build().traversal(this.getTraversal(), !this.graphComputer.features().supportsDirectObjects()).create(this.graph)).submit().get());
             } catch (final Exception e) {
                 throw new IllegalStateException(e.getMessage(), e);
             }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/48c15ee2/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/sideEffect/mapreduce/TraverserMapReduce.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/sideEffect/mapreduce/TraverserMapReduce.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/sideEffect/mapreduce/TraverserMapReduce.java
index 3e38325..a691fd5 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/sideEffect/mapreduce/TraverserMapReduce.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/sideEffect/mapreduce/TraverserMapReduce.java
@@ -25,7 +25,6 @@ import org.apache.tinkerpop.gremlin.process.computer.util.GraphComputerHelper;
 import org.apache.tinkerpop.gremlin.process.computer.util.StaticMapReduce;
 import org.apache.tinkerpop.gremlin.process.traversal.Step;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.step.ComparatorHolder;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.OrderGlobalStep;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.util.TraverserSet;
 import org.apache.tinkerpop.gremlin.structure.Graph;
@@ -57,8 +56,8 @@ public final class TraverserMapReduce extends StaticMapReduce<Comparable, Object
     }
 
     @Override
-    public void loadState(final Configuration configuration) {
-        this.traversal = TraversalVertexProgram.getTraversalSupplier(configuration).get();
+    public void loadState(final Graph graph, final Configuration configuration) {
+        this.traversal = TraversalVertexProgram.getTraversal(graph, configuration);
         final Step endStep = this.traversal.getEndStep().getPreviousStep(); // don't get the ComputerResultStep
         this.comparator = Optional.ofNullable(endStep instanceof OrderGlobalStep ? new ChainedComparator<Comparable>(((OrderGlobalStep) endStep).getComparators()) : null);
     }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/48c15ee2/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/AbstractVertexProgramBuilder.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/AbstractVertexProgramBuilder.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/AbstractVertexProgramBuilder.java
index dd5cfe4..035b685 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/AbstractVertexProgramBuilder.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/AbstractVertexProgramBuilder.java
@@ -20,6 +20,7 @@ package org.apache.tinkerpop.gremlin.process.computer.util;
 
 import org.apache.tinkerpop.gremlin.process.computer.VertexProgram;
 import org.apache.commons.configuration.BaseConfiguration;
+import org.apache.tinkerpop.gremlin.structure.Graph;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -53,7 +54,7 @@ public abstract class AbstractVertexProgramBuilder<B extends VertexProgram.Build
     }
 
     @Override
-    public <P extends VertexProgram> P create() {
-        return (P) VertexProgram.createVertexProgram(this.configuration);
+    public <P extends VertexProgram> P create(final Graph graph) {
+        return (P) VertexProgram.createVertexProgram(graph, this.configuration);
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/48c15ee2/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStep.java
index 2dc1be6..3092c2f 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStep.java
@@ -19,21 +19,22 @@
 package org.apache.tinkerpop.gremlin.process.traversal.step.map;
 
 import org.apache.commons.configuration.Configuration;
-import org.apache.tinkerpop.gremlin.process.traversal.Step;
-import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
 import org.apache.tinkerpop.gremlin.process.computer.KeyValue;
 import org.apache.tinkerpop.gremlin.process.computer.MapReduce;
 import org.apache.tinkerpop.gremlin.process.computer.traversal.TraversalVertexProgram;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.ReducingBarrierStep;
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalMatrix;
+import org.apache.tinkerpop.gremlin.process.traversal.Step;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.step.MapReducer;
 import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalUtil;
-import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.BulkSet;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.ReducingBarrierStep;
+import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.util.TraverserSet;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalMatrix;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalUtil;
+import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
 
@@ -209,13 +210,9 @@ public final class GroupStep<S, K, V, R> extends ReducingBarrierStep<S, Map<K, R
         }
 
         @Override
-        public void loadState(final Configuration configuration) {
+        public void loadState(final Graph graph, final Configuration configuration) {
             this.groupStepId = configuration.getString(GROUP_BY_STEP_STEP_ID);
-            final Traversal.Admin<?, ?> traversal = TraversalVertexProgram.getTraversalSupplier(configuration).get();
-            if (!traversal.isLocked())
-                traversal.applyStrategies(); // TODO: this is a scary error prone requirement, but only a problem for GroupStep
-            final GroupStep groupStep = new TraversalMatrix<>(traversal).getStepById(this.groupStepId);
-            this.reduceTraversal = groupStep.getReduceTraversal();
+            this.reduceTraversal = ((GroupStep) new TraversalMatrix<>(TraversalVertexProgram.getTraversal(graph, configuration)).getStepById(this.groupStepId)).getReduceTraversal();
         }
 
         @Override

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/48c15ee2/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AggregateStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AggregateStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AggregateStep.java
index 3ce80a5..cf19d45 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AggregateStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AggregateStep.java
@@ -34,6 +34,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequire
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.util.TraverserSet;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalUtil;
+import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.util.function.BulkSetSupplier;
 
@@ -130,9 +131,9 @@ public final class AggregateStep<S> extends CollectingBarrierStep<S> implements
         }
 
         @Override
-        public void loadState(final Configuration configuration) {
+        public void loadState(final Graph graph, final Configuration configuration) {
             this.sideEffectKey = configuration.getString(AGGREGATE_STEP_SIDE_EFFECT_KEY);
-            this.collectionSupplier = TraversalVertexProgram.getTraversalSupplier(configuration).get().getSideEffects().<Collection>getRegisteredSupplier(this.sideEffectKey).orElse(BulkSet::new);
+            this.collectionSupplier = TraversalVertexProgram.getTraversal(graph, configuration).getSideEffects().<Collection>getRegisteredSupplier(this.sideEffectKey).orElse(BulkSet::new);
         }
 
         @Override

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/48c15ee2/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupCountSideEffectStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupCountSideEffectStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupCountSideEffectStep.java
index de88730..9b69884 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupCountSideEffectStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupCountSideEffectStep.java
@@ -33,6 +33,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.util.MapHelper;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalUtil;
+import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.util.function.HashMapSupplier;
 
@@ -127,9 +128,9 @@ public final class GroupCountSideEffectStep<S, E> extends SideEffectStep<S> impl
         }
 
         @Override
-        public void loadState(final Configuration configuration) {
+        public void loadState(final Graph graph, final Configuration configuration) {
             this.sideEffectKey = configuration.getString(GROUP_COUNT_SIDE_EFFECT_STEP_SIDE_EFFECT_KEY);
-            this.mapSupplier = TraversalVertexProgram.getTraversalSupplier(configuration).get().getSideEffects().<Map<E, Long>>getRegisteredSupplier(this.sideEffectKey).orElse(HashMap::new);
+            this.mapSupplier = TraversalVertexProgram.getTraversal(graph, configuration).getSideEffects().<Map<E, Long>>getRegisteredSupplier(this.sideEffectKey).orElse(HashMap::new);
         }
 
         @Override

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/48c15ee2/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupSideEffectStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupSideEffectStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupSideEffectStep.java
index 57fbc6f..6d469e7 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupSideEffectStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupSideEffectStep.java
@@ -35,6 +35,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequire
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalMatrix;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalUtil;
+import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
 import org.apache.tinkerpop.gremlin.util.function.HashMapSupplier;
@@ -187,12 +188,10 @@ public final class GroupSideEffectStep<S, K, V, R> extends SideEffectStep<S> imp
         }
 
         @Override
-        public void loadState(final Configuration configuration) {
+        public void loadState(final Graph graph, final Configuration configuration) {
             this.sideEffectKey = configuration.getString(GROUP_SIDE_EFFECT_STEP_SIDE_EFFECT_KEY);
             this.groupStepId = configuration.getString(GROUP_SIDE_EFFECT_STEP_STEP_ID);
-            final Traversal.Admin<?, ?> traversal = TraversalVertexProgram.getTraversalSupplier(configuration).get();
-            if (!traversal.isLocked())
-                traversal.applyStrategies(); // TODO: this is a scary error prone requirement, but only a problem for GroupStep
+            final Traversal.Admin<?, ?> traversal = TraversalVertexProgram.getTraversal(graph, configuration);
             final GroupSideEffectStep groupSideEffectStep = new TraversalMatrix<>(traversal).getStepById(this.groupStepId);
             this.reduceTraversal = groupSideEffectStep.getReduceTraversal();
             this.mapSupplier = traversal.getSideEffects().<Map<K, R>>getRegisteredSupplier(this.sideEffectKey).orElse(HashMap::new);

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/48c15ee2/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/StoreStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/StoreStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/StoreStep.java
index 3c1a979..b721b85 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/StoreStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/StoreStep.java
@@ -33,6 +33,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.util.BulkSet;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalUtil;
+import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.util.function.BulkSetSupplier;
 
@@ -128,9 +129,9 @@ public final class StoreStep<S> extends SideEffectStep<S> implements SideEffectC
         }
 
         @Override
-        public void loadState(final Configuration configuration) {
+        public void loadState(final Graph graph, final Configuration configuration) {
             this.sideEffectKey = configuration.getString(STORE_STEP_SIDE_EFFECT_KEY);
-            this.collectionSupplier = TraversalVertexProgram.getTraversalSupplier(configuration).get().getSideEffects().<Collection>getRegisteredSupplier(this.sideEffectKey).orElse(BulkSet::new);
+            this.collectionSupplier = TraversalVertexProgram.getTraversal(graph, configuration).getSideEffects().<Collection>getRegisteredSupplier(this.sideEffectKey).orElse(BulkSet::new);
         }
 
         @Override

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/48c15ee2/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/TreeSideEffectStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/TreeSideEffectStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/TreeSideEffectStep.java
index c4f1288..176ac06 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/TreeSideEffectStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/TreeSideEffectStep.java
@@ -34,6 +34,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalRing;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalUtil;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
+import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.util.function.TreeSupplier;
 
@@ -138,7 +139,7 @@ public final class TreeSideEffectStep<S> extends SideEffectStep<S> implements Si
         }
 
         @Override
-        public void loadState(final Configuration configuration) {
+        public void loadState(final Graph graph, final Configuration configuration) {
             this.sideEffectKey = configuration.getString(TREE_SIDE_EFFECT_STEP_SIDE_EFFECT_KEY);
         }
 

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/48c15ee2/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/ranking/PageRankVertexProgramTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/ranking/PageRankVertexProgramTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/ranking/PageRankVertexProgramTest.java
index e7bcaf3..beb2824 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/ranking/PageRankVertexProgramTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/ranking/PageRankVertexProgramTest.java
@@ -38,7 +38,7 @@ public class PageRankVertexProgramTest extends AbstractGremlinProcessTest {
     @Test
     @LoadGraphWith(MODERN)
     public void shouldExecutePageRank() throws Exception {
-        final ComputerResult result = graph.compute(g.getGraphComputer().get().getClass()).program(PageRankVertexProgram.build().create()).submit().get();
+        final ComputerResult result = graph.compute(g.getGraphComputer().get().getClass()).program(PageRankVertexProgram.build().create(graph)).submit().get();
         result.graph().traversal().V().forEachRemaining(v -> {
             assertTrue(v.keys().contains("name"));
             assertTrue(v.keys().contains(PageRankVertexProgram.PAGE_RANK));

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/48c15ee2/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/groovy/plugin/HadoopRemoteAcceptor.java
----------------------------------------------------------------------
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/groovy/plugin/HadoopRemoteAcceptor.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/groovy/plugin/HadoopRemoteAcceptor.java
index 93c2413..c3f14ff 100644
--- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/groovy/plugin/HadoopRemoteAcceptor.java
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/groovy/plugin/HadoopRemoteAcceptor.java
@@ -100,7 +100,7 @@ public class HadoopRemoteAcceptor implements RemoteAcceptor {
             String script = RemoteAcceptor.getScript(String.join(SPACE, args), this.shell);
             if (this.useSugarPlugin)
                 script = SugarLoader.class.getPackage() + ".SugarLoader.load()\n" + script;
-            final TraversalVertexProgram program = TraversalVertexProgram.build().traversal(this.hadoopGraph.getClass(), GraphTraversalSource.computer(), "gremlin-groovy", script).create();
+            final TraversalVertexProgram program = TraversalVertexProgram.build().traversal(this.hadoopGraph.getClass(), GraphTraversalSource.computer(), "gremlin-groovy", script).create(this.hadoopGraph);
             final ComputerResult computerResult = this.hadoopGraph.compute().program(program).submit().get();
             this.shell.getInterp().getContext().setProperty(RESULT, computerResult);
 

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/48c15ee2/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/HadoopCombine.java
----------------------------------------------------------------------
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/HadoopCombine.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/HadoopCombine.java
index e7b94b5..c23d4dc 100644
--- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/HadoopCombine.java
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/HadoopCombine.java
@@ -18,7 +18,9 @@
  */
 package org.apache.tinkerpop.gremlin.hadoop.process.computer;
 
+import org.apache.commons.configuration.Configuration;
 import org.apache.hadoop.mapreduce.Reducer;
+import org.apache.tinkerpop.gremlin.hadoop.structure.HadoopGraph;
 import org.apache.tinkerpop.gremlin.hadoop.structure.io.ObjectWritable;
 import org.apache.tinkerpop.gremlin.hadoop.structure.util.ConfUtil;
 import org.apache.tinkerpop.gremlin.process.computer.MapReduce;
@@ -45,7 +47,8 @@ public class HadoopCombine extends Reducer<ObjectWritable, ObjectWritable, Objec
 
     @Override
     public void setup(final Reducer<ObjectWritable, ObjectWritable, ObjectWritable, ObjectWritable>.Context context) {
-        this.mapReduce = MapReduce.createMapReduce(ConfUtil.makeApacheConfiguration(context.getConfiguration()));
+        final Configuration apacheConfiguration = ConfUtil.makeApacheConfiguration(context.getConfiguration());
+        this.mapReduce = MapReduce.createMapReduce(HadoopGraph.open(apacheConfiguration), apacheConfiguration);
         this.mapReduce.workerStart(MapReduce.Stage.COMBINE);
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/48c15ee2/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/HadoopMap.java
----------------------------------------------------------------------
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/HadoopMap.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/HadoopMap.java
index d88c134..3e55613 100644
--- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/HadoopMap.java
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/HadoopMap.java
@@ -18,8 +18,10 @@
  */
 package org.apache.tinkerpop.gremlin.hadoop.process.computer;
 
+import org.apache.commons.configuration.Configuration;
 import org.apache.hadoop.io.NullWritable;
 import org.apache.hadoop.mapreduce.Mapper;
+import org.apache.tinkerpop.gremlin.hadoop.structure.HadoopGraph;
 import org.apache.tinkerpop.gremlin.hadoop.structure.io.ObjectWritable;
 import org.apache.tinkerpop.gremlin.hadoop.structure.io.VertexWritable;
 import org.apache.tinkerpop.gremlin.hadoop.structure.util.ConfUtil;
@@ -44,7 +46,8 @@ public class HadoopMap extends Mapper<NullWritable, VertexWritable, ObjectWritab
 
     @Override
     public void setup(final Mapper<NullWritable, VertexWritable, ObjectWritable, ObjectWritable>.Context context) {
-        this.mapReduce = MapReduce.createMapReduce(ConfUtil.makeApacheConfiguration(context.getConfiguration()));
+        final Configuration apacheConfiguration = ConfUtil.makeApacheConfiguration(context.getConfiguration());
+        this.mapReduce = MapReduce.createMapReduce(HadoopGraph.open(apacheConfiguration), apacheConfiguration);
         this.mapReduce.workerStart(MapReduce.Stage.MAP);
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/48c15ee2/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/HadoopReduce.java
----------------------------------------------------------------------
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/HadoopReduce.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/HadoopReduce.java
index a0ddf67..66a14e3 100644
--- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/HadoopReduce.java
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/HadoopReduce.java
@@ -18,7 +18,9 @@
  */
 package org.apache.tinkerpop.gremlin.hadoop.process.computer;
 
+import org.apache.commons.configuration.Configuration;
 import org.apache.hadoop.mapreduce.Reducer;
+import org.apache.tinkerpop.gremlin.hadoop.structure.HadoopGraph;
 import org.apache.tinkerpop.gremlin.hadoop.structure.io.ObjectWritable;
 import org.apache.tinkerpop.gremlin.hadoop.structure.util.ConfUtil;
 import org.apache.tinkerpop.gremlin.process.computer.MapReduce;
@@ -27,7 +29,6 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.io.IOException;
-import java.util.Iterator;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -44,7 +45,8 @@ public class HadoopReduce extends Reducer<ObjectWritable, ObjectWritable, Object
 
     @Override
     public void setup(final Reducer<ObjectWritable, ObjectWritable, ObjectWritable, ObjectWritable>.Context context) {
-        this.mapReduce = MapReduce.createMapReduce(ConfUtil.makeApacheConfiguration(context.getConfiguration()));
+        final Configuration apacheConfiguration = ConfUtil.makeApacheConfiguration(context.getConfiguration());
+        this.mapReduce = MapReduce.createMapReduce(HadoopGraph.open(apacheConfiguration), apacheConfiguration);
         this.mapReduce.workerStart(MapReduce.Stage.REDUCE);
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/48c15ee2/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/giraph/GiraphGraphComputer.java
----------------------------------------------------------------------
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/giraph/GiraphGraphComputer.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/giraph/GiraphGraphComputer.java
index d03fa37..dee7a29 100644
--- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/giraph/GiraphGraphComputer.java
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/giraph/GiraphGraphComputer.java
@@ -211,6 +211,6 @@ public class GiraphGraphComputer extends AbstractHadoopGraphComputer implements
 
     public static void main(final String[] args) throws Exception {
         final FileConfiguration configuration = new PropertiesConfiguration(args[0]);
-        new GiraphGraphComputer(HadoopGraph.open(configuration)).program(VertexProgram.createVertexProgram(configuration)).submit().get();
+        new GiraphGraphComputer(HadoopGraph.open(configuration)).program(VertexProgram.createVertexProgram(HadoopGraph.open(configuration),configuration)).submit().get();
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/48c15ee2/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/giraph/GiraphMemory.java
----------------------------------------------------------------------
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/giraph/GiraphMemory.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/giraph/GiraphMemory.java
index eaac36f..ba5be5e 100644
--- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/giraph/GiraphMemory.java
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/giraph/GiraphMemory.java
@@ -18,13 +18,16 @@
  */
 package org.apache.tinkerpop.gremlin.hadoop.process.computer.giraph;
 
+import org.apache.commons.configuration.Configuration;
 import org.apache.giraph.master.MasterCompute;
 import org.apache.tinkerpop.gremlin.hadoop.Constants;
+import org.apache.tinkerpop.gremlin.hadoop.structure.HadoopGraph;
 import org.apache.tinkerpop.gremlin.hadoop.structure.util.ConfUtil;
 import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
 import org.apache.tinkerpop.gremlin.process.computer.Memory;
 import org.apache.tinkerpop.gremlin.process.computer.VertexProgram;
 import org.apache.tinkerpop.gremlin.process.computer.util.MemoryHelper;
+import org.apache.tinkerpop.gremlin.structure.util.GraphFactory;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
 
 import java.io.DataInput;
@@ -64,7 +67,8 @@ public class GiraphMemory extends MasterCompute implements Memory {
     public void compute() {
         this.isMasterCompute = true;
         if (0 == this.getSuperstep()) { // setup
-            this.vertexProgram = VertexProgram.createVertexProgram(ConfUtil.makeApacheConfiguration(this.getConf()));
+            final Configuration apacheConfiguration = ConfUtil.makeApacheConfiguration(this.getConf());
+            this.vertexProgram = VertexProgram.createVertexProgram(HadoopGraph.open(apacheConfiguration), apacheConfiguration);
             this.memoryKeys = new HashSet<>(this.vertexProgram.getMemoryComputeKeys());
             try {
                 for (final String key : this.memoryKeys) {

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/48c15ee2/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/giraph/GiraphMessageCombiner.java
----------------------------------------------------------------------
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/giraph/GiraphMessageCombiner.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/giraph/GiraphMessageCombiner.java
index ef71207..7390c61 100644
--- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/giraph/GiraphMessageCombiner.java
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/giraph/GiraphMessageCombiner.java
@@ -18,9 +18,11 @@
  */
 package org.apache.tinkerpop.gremlin.hadoop.process.computer.giraph;
 
+import org.apache.commons.configuration.Configuration;
 import org.apache.giraph.combiner.Combiner;
 import org.apache.giraph.conf.ImmutableClassesGiraphConfigurable;
 import org.apache.giraph.conf.ImmutableClassesGiraphConfiguration;
+import org.apache.tinkerpop.gremlin.hadoop.structure.HadoopGraph;
 import org.apache.tinkerpop.gremlin.hadoop.structure.io.ObjectWritable;
 import org.apache.tinkerpop.gremlin.hadoop.structure.util.ConfUtil;
 import org.apache.tinkerpop.gremlin.process.computer.MessageCombiner;
@@ -49,7 +51,8 @@ public class GiraphMessageCombiner extends Combiner<ObjectWritable, ObjectWritab
     @Override
     public void setConf(final ImmutableClassesGiraphConfiguration configuration) {
         this.configuration = configuration;
-        this.messageCombiner = (MessageCombiner) VertexProgram.createVertexProgram(ConfUtil.makeApacheConfiguration(configuration)).getMessageCombiner().get();
+        final Configuration apacheConfiguration = ConfUtil.makeApacheConfiguration(configuration);
+        this.messageCombiner = (MessageCombiner) VertexProgram.createVertexProgram(HadoopGraph.open(apacheConfiguration), apacheConfiguration).getMessageCombiner().get();
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/48c15ee2/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/giraph/GiraphWorkerContext.java
----------------------------------------------------------------------
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/giraph/GiraphWorkerContext.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/giraph/GiraphWorkerContext.java
index 84a1888..0547aef 100644
--- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/giraph/GiraphWorkerContext.java
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/giraph/GiraphWorkerContext.java
@@ -18,9 +18,11 @@
  */
 package org.apache.tinkerpop.gremlin.hadoop.process.computer.giraph;
 
+import org.apache.commons.configuration.Configuration;
 import org.apache.giraph.conf.GiraphConstants;
 import org.apache.giraph.worker.WorkerContext;
 import org.apache.tinkerpop.gremlin.hadoop.Constants;
+import org.apache.tinkerpop.gremlin.hadoop.structure.HadoopGraph;
 import org.apache.tinkerpop.gremlin.hadoop.structure.io.ObjectWritable;
 import org.apache.tinkerpop.gremlin.hadoop.structure.util.ConfUtil;
 import org.apache.tinkerpop.gremlin.process.computer.VertexProgram;
@@ -43,7 +45,8 @@ public final class GiraphWorkerContext extends WorkerContext {
     }
 
     public void preApplication() throws InstantiationException, IllegalAccessException {
-        final VertexProgram vertexProgram = VertexProgram.createVertexProgram(ConfUtil.makeApacheConfiguration(this.getContext().getConfiguration()));
+        final Configuration apacheConfiguration = ConfUtil.makeApacheConfiguration(this.getContext().getConfiguration());
+        final VertexProgram vertexProgram = VertexProgram.createVertexProgram(HadoopGraph.open(apacheConfiguration), apacheConfiguration);
         this.vertexProgramPool = new VertexProgramPool(vertexProgram, this.getContext().getConfiguration().getInt(GiraphConstants.NUM_COMPUTE_THREADS.getKey(), 1));
         this.memory = new GiraphMemory(this, vertexProgram);
         this.deriveMemory = this.getContext().getConfiguration().getBoolean(Constants.GREMLIN_HADOOP_DERIVE_MEMORY, false);

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/48c15ee2/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/spark/SparkExecutor.java
----------------------------------------------------------------------
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/spark/SparkExecutor.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/spark/SparkExecutor.java
index 5df9ac1..3cc0542 100644
--- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/spark/SparkExecutor.java
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/spark/SparkExecutor.java
@@ -32,6 +32,7 @@ import org.apache.tinkerpop.gremlin.hadoop.process.computer.spark.payload.Payloa
 import org.apache.tinkerpop.gremlin.hadoop.process.computer.spark.payload.ViewIncomingPayload;
 import org.apache.tinkerpop.gremlin.hadoop.process.computer.spark.payload.ViewOutgoingPayload;
 import org.apache.tinkerpop.gremlin.hadoop.process.computer.spark.payload.ViewPayload;
+import org.apache.tinkerpop.gremlin.hadoop.structure.HadoopGraph;
 import org.apache.tinkerpop.gremlin.hadoop.structure.io.ObjectWritable;
 import org.apache.tinkerpop.gremlin.hadoop.structure.io.ObjectWritableIterator;
 import org.apache.tinkerpop.gremlin.hadoop.structure.io.VertexWritable;
@@ -79,7 +80,7 @@ public final class SparkExecutor {
                 graphRDD.leftOuterJoin(viewIncomingRDD))                                                   // every other iteration may have views and messages
                 // for each partition of vertices
                 .mapPartitionsToPair(partitionIterator -> {
-                    final VertexProgram<M> workerVertexProgram = VertexProgram.<VertexProgram<M>>createVertexProgram(apacheConfiguration); // each partition(Spark)/worker(TP3) has a local copy of the vertex program (a worker's task)
+                    final VertexProgram<M> workerVertexProgram = VertexProgram.<VertexProgram<M>>createVertexProgram(HadoopGraph.open(apacheConfiguration),apacheConfiguration); // each partition(Spark)/worker(TP3) has a local copy of the vertex program (a worker's task)
                     final Set<String> elementComputeKeys = workerVertexProgram.getElementComputeKeys(); // the compute keys as a set
                     final String[] elementComputeKeysArray = elementComputeKeys.size() == 0 ? EMPTY_ARRAY : elementComputeKeys.toArray(new String[elementComputeKeys.size()]); // the compute keys as an array
                     final SparkMessenger<M> messenger = new SparkMessenger<>();
@@ -107,7 +108,7 @@ public final class SparkExecutor {
                 })).setName("viewOutgoingRDD");
 
         // "message pass" by reducing on the vertex object id of the view and message payloads
-        final MessageCombiner<M> messageCombiner = VertexProgram.<VertexProgram<M>>createVertexProgram(apacheConfiguration).getMessageCombiner().orElse(null);
+        final MessageCombiner<M> messageCombiner = VertexProgram.<VertexProgram<M>>createVertexProgram(HadoopGraph.open(apacheConfiguration), apacheConfiguration).getMessageCombiner().orElse(null);
         final JavaPairRDD<Object, ViewIncomingPayload<M>> newViewIncomingRDD = viewOutgoingRDD
                 .flatMapToPair(tuple -> () -> IteratorUtils.<Tuple2<Object, Payload>>concat(
                         IteratorUtils.of(new Tuple2<>(tuple._1(), tuple._2().getView())),      // emit the view payload
@@ -161,7 +162,7 @@ public final class SparkExecutor {
 
     public static <K, V> JavaPairRDD<K, V> executeMap(final JavaPairRDD<Object, VertexWritable> graphRDD, final MapReduce<K, V, ?, ?, ?> mapReduce, final Configuration apacheConfiguration) {
         JavaPairRDD<K, V> mapRDD = graphRDD.mapPartitionsToPair(partitionIterator -> {
-            final MapReduce<K, V, ?, ?, ?> workerMapReduce = MapReduce.<MapReduce<K, V, ?, ?, ?>>createMapReduce(apacheConfiguration);
+            final MapReduce<K, V, ?, ?, ?> workerMapReduce = MapReduce.<MapReduce<K, V, ?, ?, ?>>createMapReduce(HadoopGraph.open(apacheConfiguration),apacheConfiguration);
             workerMapReduce.workerStart(MapReduce.Stage.MAP);
             final SparkMapEmitter<K, V> mapEmitter = new SparkMapEmitter<>();
             return () -> IteratorUtils.flatMap(partitionIterator, vertexWritable -> {
@@ -180,7 +181,7 @@ public final class SparkExecutor {
 
     public static <K, V, OK, OV> JavaPairRDD<OK, OV> executeReduce(final JavaPairRDD<K, V> mapRDD, final MapReduce<K, V, OK, OV, ?> mapReduce, final Configuration apacheConfiguration) {
         JavaPairRDD<OK, OV> reduceRDD = mapRDD.groupByKey().mapPartitionsToPair(partitionIterator -> {
-            final MapReduce<K, V, OK, OV, ?> workerMapReduce = MapReduce.<MapReduce<K, V, OK, OV, ?>>createMapReduce(apacheConfiguration);
+            final MapReduce<K, V, OK, OV, ?> workerMapReduce = MapReduce.<MapReduce<K, V, OK, OV, ?>>createMapReduce(HadoopGraph.open(apacheConfiguration),apacheConfiguration);
             workerMapReduce.workerStart(MapReduce.Stage.REDUCE);
             final SparkReduceEmitter<OK, OV> reduceEmitter = new SparkReduceEmitter<>();
             return () -> IteratorUtils.flatMap(partitionIterator, keyValue -> {

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/48c15ee2/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/spark/SparkGraphComputer.java
----------------------------------------------------------------------
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/spark/SparkGraphComputer.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/spark/SparkGraphComputer.java
index fff1039..133610f 100644
--- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/spark/SparkGraphComputer.java
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/spark/SparkGraphComputer.java
@@ -182,6 +182,6 @@ public final class SparkGraphComputer extends AbstractHadoopGraphComputer {
 
     public static void main(final String[] args) throws Exception {
         final FileConfiguration configuration = new PropertiesConfiguration(args[0]);
-        new SparkGraphComputer(HadoopGraph.open(configuration)).program(VertexProgram.createVertexProgram(configuration)).submit().get();
+        new SparkGraphComputer(HadoopGraph.open(configuration)).program(VertexProgram.createVertexProgram(HadoopGraph.open(configuration),configuration)).submit().get();
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/48c15ee2/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/util/MemoryMapReduce.java
----------------------------------------------------------------------
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/util/MemoryMapReduce.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/util/MemoryMapReduce.java
index 82fa2df..3afdc19 100644
--- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/util/MemoryMapReduce.java
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/util/MemoryMapReduce.java
@@ -25,6 +25,7 @@ import org.apache.tinkerpop.gremlin.process.computer.Memory;
 import org.apache.tinkerpop.gremlin.process.computer.util.GraphComputerHelper;
 import org.apache.tinkerpop.gremlin.process.computer.util.MapMemory;
 import org.apache.tinkerpop.gremlin.process.computer.util.StaticMapReduce;
+import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
 import org.apache.commons.configuration.Configuration;
@@ -62,7 +63,7 @@ public final class MemoryMapReduce extends StaticMapReduce<MapReduce.NullObject,
     }
 
     @Override
-    public void loadState(final Configuration configuration) {
+    public void loadState(final Graph graph, final Configuration configuration) {
         this.memoryKeys = new HashSet((List) configuration.getList(Constants.GREMLIN_HADOOP_MEMORY_KEYS));
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/48c15ee2/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/ObjectWritableComparator.java
----------------------------------------------------------------------
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/ObjectWritableComparator.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/ObjectWritableComparator.java
index 7ecdd7d..c810768 100644
--- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/ObjectWritableComparator.java
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/ObjectWritableComparator.java
@@ -18,6 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.hadoop.structure.io;
 
+import org.apache.tinkerpop.gremlin.hadoop.structure.HadoopGraph;
 import org.apache.tinkerpop.gremlin.hadoop.structure.util.ConfUtil;
 import org.apache.tinkerpop.gremlin.process.computer.MapReduce;
 import org.apache.hadoop.conf.Configurable;
@@ -69,7 +70,8 @@ public abstract class ObjectWritableComparator implements RawComparator<ObjectWr
         @Override
         public void setConf(final Configuration configuration) {
             this.configuration = configuration;
-            this.comparator = MapReduce.<MapReduce<?,?,?,?,?>>createMapReduce(ConfUtil.makeApacheConfiguration(configuration)).getMapKeySort().get();
+            final org.apache.commons.configuration.Configuration apacheConfiguration = ConfUtil.makeApacheConfiguration(configuration);
+            this.comparator = MapReduce.<MapReduce<?,?,?,?,?>>createMapReduce(HadoopGraph.open(apacheConfiguration),apacheConfiguration).getMapKeySort().get();
         }
     }
 
@@ -77,7 +79,8 @@ public abstract class ObjectWritableComparator implements RawComparator<ObjectWr
         @Override
         public void setConf(final Configuration configuration) {
             this.configuration = configuration;
-            this.comparator = MapReduce.<MapReduce<?,?,?,?,?>>createMapReduce(ConfUtil.makeApacheConfiguration(configuration)).getReduceKeySort().get();
+            final org.apache.commons.configuration.Configuration apacheConfiguration = ConfUtil.makeApacheConfiguration(configuration);
+            this.comparator = MapReduce.<MapReduce<?,?,?,?,?>>createMapReduce(HadoopGraph.open(apacheConfiguration),apacheConfiguration).getReduceKeySort().get();
         }
     }
 }