Created a new gremlin-tools/ packaged called gremlin-tinkergraph-test/ which 
includes an AbstractTinkerGraphProvider to allow providers to more easily 
leverage TinkerGraph in their testing. Both spark-gremlin/ and akka-gremlin/ 
use it to test SparkGraphComputer and AkkaGraphActors against TinkerGraph.


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

Branch: refs/heads/TINKERPOP-1564
Commit: cb9cc6377cc4d16265d5bf99e584bf25e71f6852
Parents: 1bd6e09
Author: Marko A. Rodriguez <okramma...@gmail.com>
Authored: Fri Jan 20 08:11:47 2017 -0700
Committer: Marko A. Rodriguez <okramma...@gmail.com>
Committed: Mon Jan 23 14:22:53 2017 -0700

----------------------------------------------------------------------
 akka-gremlin/pom.xml                            |   8 +-
 .../akka/process/actors/WorkerActor.java        |   5 -
 .../process/actors/AkkaGroovyPlayTest.groovy    |  49 ----
 .../akka/process/actors/AkkaActorsProvider.java | 138 ++--------
 .../tinkerpop/gremlin/process/actors/Actor.java |  20 +-
 .../traversal/TraversalWorkerProgram.java       |   6 +-
 gremlin-tools/gremlin-tinkergraph-test/pom.xml  |  59 +++++
 .../AbstractTinkerGraphProvider.java            | 257 +++++++++++++++++++
 gremlin-tools/pom.xml                           |   1 +
 spark-gremlin/pom.xml                           |   2 +-
 ...PartitionerComputerProcessIntegrateTest.java |  33 +++
 .../computer/SparkHadoopGraphProvider.java      |   4 -
 .../computer/SparkTinkerGraphProvider.java      | 117 +++++++++
 ...PartitionerComputerProcessIntegrateTest.java |  34 ---
 .../TinkerGraphPartitionerProvider.java         | 224 ----------------
 15 files changed, 502 insertions(+), 455 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/cb9cc637/akka-gremlin/pom.xml
----------------------------------------------------------------------
diff --git a/akka-gremlin/pom.xml b/akka-gremlin/pom.xml
index e3b12ef..a756f7e 100644
--- a/akka-gremlin/pom.xml
+++ b/akka-gremlin/pom.xml
@@ -69,19 +69,13 @@
         <!-- TEST -->
         <dependency>
             <groupId>org.apache.tinkerpop</groupId>
-            <artifactId>gremlin-groovy</artifactId>
-            <version>3.3.0-SNAPSHOT</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.tinkerpop</groupId>
             <artifactId>gremlin-test</artifactId>
             <version>3.3.0-SNAPSHOT</version>
             <scope>test</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.tinkerpop</groupId>
-            <artifactId>tinkergraph-gremlin</artifactId>
+            <artifactId>gremlin-tinkergraph-test</artifactId>
             <version>3.3.0-SNAPSHOT</version>
             <scope>test</scope>
         </dependency>

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/cb9cc637/akka-gremlin/src/main/java/org/apache/tinkerpop/gremlin/akka/process/actors/WorkerActor.java
----------------------------------------------------------------------
diff --git 
a/akka-gremlin/src/main/java/org/apache/tinkerpop/gremlin/akka/process/actors/WorkerActor.java
 
b/akka-gremlin/src/main/java/org/apache/tinkerpop/gremlin/akka/process/actors/WorkerActor.java
index 02c4e4c..9ce3704 100644
--- 
a/akka-gremlin/src/main/java/org/apache/tinkerpop/gremlin/akka/process/actors/WorkerActor.java
+++ 
b/akka-gremlin/src/main/java/org/apache/tinkerpop/gremlin/akka/process/actors/WorkerActor.java
@@ -99,11 +99,6 @@ public final class WorkerActor extends AbstractActor 
implements RequiresMessageQ
     }
 
     @Override
-    public Partitioner partitioner() {
-        return this.partitioner;
-    }
-
-    @Override
     public Address.Worker address() {
         return this.self;
     }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/cb9cc637/akka-gremlin/src/test/groovy/org/apache/tinkerpop/gremlin/akka/process/actors/AkkaGroovyPlayTest.groovy
----------------------------------------------------------------------
diff --git 
a/akka-gremlin/src/test/groovy/org/apache/tinkerpop/gremlin/akka/process/actors/AkkaGroovyPlayTest.groovy
 
b/akka-gremlin/src/test/groovy/org/apache/tinkerpop/gremlin/akka/process/actors/AkkaGroovyPlayTest.groovy
deleted file mode 100644
index b4730c4..0000000
--- 
a/akka-gremlin/src/test/groovy/org/apache/tinkerpop/gremlin/akka/process/actors/AkkaGroovyPlayTest.groovy
+++ /dev/null
@@ -1,49 +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.akka.process.actors
-
-import org.apache.tinkerpop.gremlin.process.computer.Computer
-import org.apache.tinkerpop.gremlin.structure.T
-import org.apache.tinkerpop.gremlin.structure.io.IoCore
-import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph
-import org.apache.tinkerpop.gremlin.util.TimeUtil
-import org.junit.Ignore
-import org.junit.Test
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-class AkkaGroovyPlayTest {
-
-    @Test
-    @Ignore
-    public void testStuff() {
-
-        def graph = TinkerGraph.open()
-        graph.io(IoCore.gryo()).readGraph("/Users/marko/Desktop/test.kryo")
-        def g = graph.traversal()
-        def a = 
graph.traversal().withProcessor(AkkaGraphActors.open().workers(8));
-
-        println TimeUtil.clockWithResult(1) { 
g.V().id().select("c").count().next() }
-        println TimeUtil.clockWithResult(1) { 
g.V().id().select("c").dedup().count().next() }
-        println TimeUtil.clockWithResult(1) { 
a.V().id().select("c").count().next() }
-        println TimeUtil.clockWithResult(1) { 
a.V().id().select("c").dedup().count().next() }
-    }
-}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/cb9cc637/akka-gremlin/src/test/java/org/apache/tinkerpop/gremlin/akka/process/actors/AkkaActorsProvider.java
----------------------------------------------------------------------
diff --git 
a/akka-gremlin/src/test/java/org/apache/tinkerpop/gremlin/akka/process/actors/AkkaActorsProvider.java
 
b/akka-gremlin/src/test/java/org/apache/tinkerpop/gremlin/akka/process/actors/AkkaActorsProvider.java
index 1309491..7a27994 100644
--- 
a/akka-gremlin/src/test/java/org/apache/tinkerpop/gremlin/akka/process/actors/AkkaActorsProvider.java
+++ 
b/akka-gremlin/src/test/java/org/apache/tinkerpop/gremlin/akka/process/actors/AkkaActorsProvider.java
@@ -20,9 +20,7 @@
 package org.apache.tinkerpop.gremlin.akka.process.actors;
 
 import org.apache.commons.configuration.Configuration;
-import org.apache.tinkerpop.gremlin.AbstractGraphProvider;
 import org.apache.tinkerpop.gremlin.LoadGraphWith;
-import org.apache.tinkerpop.gremlin.TestHelper;
 import org.apache.tinkerpop.gremlin.akka.process.actors.io.gryo.GryoSerializer;
 import org.apache.tinkerpop.gremlin.process.actors.GraphActors;
 import 
org.apache.tinkerpop.gremlin.process.traversal.TraversalInterruptionTest;
@@ -35,22 +33,11 @@ import 
org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.Elemen
 import 
org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.EventStrategyProcessTest;
 import 
org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.PartitionStrategyProcessTest;
 import org.apache.tinkerpop.gremlin.structure.Graph;
-import org.apache.tinkerpop.gremlin.structure.VertexProperty;
-import 
org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONResourceAccess;
-import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoResourceAccess;
-import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerEdge;
-import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerElement;
-import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph;
-import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraphVariables;
-import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerProperty;
-import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerVertex;
-import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerVertexProperty;
+import org.apache.tinkerpop.gremlin.tinkergraph.AbstractTinkerGraphProvider;
 
 import java.util.Arrays;
 import java.util.Collections;
-import java.util.HashMap;
 import java.util.HashSet;
-import java.util.List;
 import java.util.Map;
 import java.util.Random;
 import java.util.Set;
@@ -58,7 +45,7 @@ import java.util.Set;
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public class AkkaActorsProvider extends AbstractGraphProvider {
+public class AkkaActorsProvider extends AbstractTinkerGraphProvider {
 
     private static final Random RANDOM = new Random();
 
@@ -81,128 +68,37 @@ public class AkkaActorsProvider extends 
AbstractGraphProvider {
             ElementIdStrategyProcessTest.class.getCanonicalName(),
             TraversalInterruptionTest.class.getCanonicalName()));
 
-    private static final Set<Class> IMPLEMENTATION = new HashSet<Class>() {{
-        add(TinkerEdge.class);
-        add(TinkerElement.class);
-        add(TinkerGraph.class);
-        add(TinkerGraphVariables.class);
-        add(TinkerProperty.class);
-        add(TinkerVertex.class);
-        add(TinkerVertexProperty.class);
-    }};
-
-    private static Map<String, String> PATHS = new HashMap<>();
-
-    static {
-        try {
-            final List<String> kryoResources = Arrays.asList(
-                    "tinkerpop-modern.kryo",
-                    "grateful-dead.kryo",
-                    "tinkerpop-classic.kryo",
-                    "tinkerpop-crew.kryo");
-            for (final String fileName : kryoResources) {
-                PATHS.put(fileName, 
TestHelper.generateTempFileFromResource(GryoResourceAccess.class, fileName, 
"").getAbsolutePath().replace('\\', '/'));
-            }
-
-            final List<String> graphsonResources = Arrays.asList(
-                    "tinkerpop-modern-v2d0-typed.json",
-                    "grateful-dead-v2d0-typed.json",
-                    "tinkerpop-classic-v2d0-typed.json",
-                    "tinkerpop-crew-v2d0-typed.json");
-            for (final String fileName : graphsonResources) {
-                PATHS.put(fileName, 
TestHelper.generateTempFileFromResource(GraphSONResourceAccess.class, fileName, 
"").getAbsolutePath().replace('\\', '/'));
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
+    @Override
+    public Set<String> getSkipTests() {
+        return SKIP_TESTS;
     }
 
     @Override
     public Map<String, Object> getBaseConfiguration(final String graphName, 
final Class<?> test, final String testMethodName,
                                                     final 
LoadGraphWith.GraphData loadGraphWith) {
 
-        final TinkerGraph.DefaultIdManager idManager = 
selectIdMakerFromGraphData(loadGraphWith);
-        final String idMaker = 
(idManager.equals(TinkerGraph.DefaultIdManager.ANY) ? 
selectIdMakerFromGraphData(loadGraphWith) : idManager).name();
-        return new HashMap<String, Object>() {{
-            put(Graph.GRAPH, TinkerGraph.class.getName());
-            put(TinkerGraph.GREMLIN_TINKERGRAPH_VERTEX_ID_MANAGER, idMaker);
-            put(TinkerGraph.GREMLIN_TINKERGRAPH_EDGE_ID_MANAGER, idMaker);
-            put(TinkerGraph.GREMLIN_TINKERGRAPH_VERTEX_PROPERTY_ID_MANAGER, 
idMaker);
-            put("skipTest", SKIP_TESTS.contains(testMethodName) || 
SKIP_TESTS.contains(test.getCanonicalName()));
-            if (null != loadGraphWith) {
-                put(TinkerGraph.GREMLIN_TINKERGRAPH_GRAPH_LOCATION, 
loadGraphDataViaHadoopConfig(loadGraphWith));
-                put(TinkerGraph.GREMLIN_TINKERGRAPH_GRAPH_FORMAT, "gryo");
-                if (loadGraphWith == LoadGraphWith.GraphData.CREW)
-                    
put(TinkerGraph.GREMLIN_TINKERGRAPH_DEFAULT_VERTEX_PROPERTY_CARDINALITY, 
VertexProperty.Cardinality.list.name());
-            }
-            // Akka specific configuration
-            put(Constants.AKKA_LOG_DEAD_LETTERS_DURING_SHUTDOWN, false);
-            put(Constants.AKKA_ACTOR_PROVIDER, "remote");
-            put(Constants.AKKA_ACTOR_SERIALIZE_MESSAGES, "on");
-            put(Constants.AKKA_ACTOR_SERIALIZERS_GRYO, 
GryoSerializer.class.getCanonicalName());
-            put(Constants.AKKA_REMOTE_ENABLED_TRANSPORTS, 
Collections.singletonList("akka.remote.netty.tcp"));
-            put(Constants.AKKA_REMOTE_NETTY_TCP_HOSTNAME, "127.0.0.1");
-            put(Constants.AKKA_REMOTE_NETTY_TCP_PORT, 2552);
-        }};
-    }
-
-    public String loadGraphDataViaHadoopConfig(final LoadGraphWith.GraphData 
graphData) {
-        final String type = ".kryo";
-        if (graphData.equals(LoadGraphWith.GraphData.GRATEFUL)) {
-            return PATHS.get("grateful-dead" + type);
-        } else if (graphData.equals(LoadGraphWith.GraphData.MODERN)) {
-            return PATHS.get("tinkerpop-modern" + type);
-        } else if (graphData.equals(LoadGraphWith.GraphData.CLASSIC)) {
-            return PATHS.get("tinkerpop-classic" + type);
-        } else if (graphData.equals(LoadGraphWith.GraphData.CREW)) {
-            return PATHS.get("tinkerpop-crew" + type);
-        } else {
-            throw new RuntimeException("Could not load graph with " + 
graphData);
-        }
-    }
-
-    @Override
-    public void loadGraphData(final Graph graph, final LoadGraphWith 
loadGraphWith, final Class testClass, final String testName) {
-
+        final Map<String, Object> configuration = 
super.getBaseConfiguration(graphName, test, testMethodName, loadGraphWith);
+        // Akka specific configuration
+        configuration.put(Constants.AKKA_LOG_DEAD_LETTERS_DURING_SHUTDOWN, 
false);
+        configuration.put(Constants.AKKA_ACTOR_PROVIDER, "remote");
+        configuration.put(Constants.AKKA_ACTOR_SERIALIZE_MESSAGES, "on");
+        configuration.put(Constants.AKKA_ACTOR_SERIALIZERS_GRYO, 
GryoSerializer.class.getCanonicalName());
+        configuration.put(Constants.AKKA_REMOTE_ENABLED_TRANSPORTS, 
Collections.singletonList("akka.remote.netty.tcp"));
+        configuration.put(Constants.AKKA_REMOTE_NETTY_TCP_HOSTNAME, 
"127.0.0.1");
+        configuration.put(Constants.AKKA_REMOTE_NETTY_TCP_PORT, 2552);
+        return configuration;
     }
 
     @Override
     public void clear(final Graph graph, final Configuration configuration) 
throws Exception {
-        //  if (graph != null) graph.close();
-    }
-
-    @Override
-    public Set<Class> getImplementations() {
-        return IMPLEMENTATION;
-    }
-
-    /**
-     * Test that load with specific graph data can be configured with a 
specific id manager as the data type to
-     * be used in the test for that graph is known.
-     */
-    protected TinkerGraph.DefaultIdManager selectIdMakerFromGraphData(final 
LoadGraphWith.GraphData loadGraphWith) {
-        if (null == loadGraphWith) return TinkerGraph.DefaultIdManager.ANY;
-        if (loadGraphWith.equals(LoadGraphWith.GraphData.CLASSIC))
-            return TinkerGraph.DefaultIdManager.INTEGER;
-        else if (loadGraphWith.equals(LoadGraphWith.GraphData.MODERN))
-            return TinkerGraph.DefaultIdManager.INTEGER;
-        else if (loadGraphWith.equals(LoadGraphWith.GraphData.CREW))
-            return TinkerGraph.DefaultIdManager.INTEGER;
-        else if (loadGraphWith.equals(LoadGraphWith.GraphData.GRATEFUL))
-            return TinkerGraph.DefaultIdManager.INTEGER;
-        else
-            throw new IllegalStateException(String.format("Need to define a 
new %s for %s", TinkerGraph.IdManager.class.getName(), loadGraphWith.name()));
+        // don't delete the loaded data
     }
 
-/////////////////////////////
-/////////////////////////////
-/////////////////////////////
 
     @Override
     public GraphTraversalSource traversal(final Graph graph) {
-        if ((Boolean) graph.configuration().getProperty("skipTest"))
+        if ((Boolean) 
graph.configuration().getProperty(GREMLIN_TINKERGRAPH_SKIP_TEST))
             return graph.traversal();
-            //throw new VerificationException("This test current does not work 
with Gremlin-Python", EmptyTraversal.instance());
         else {
             final GraphTraversalSource g = graph.traversal();
             return RANDOM.nextBoolean() ?

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/cb9cc637/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/actors/Actor.java
----------------------------------------------------------------------
diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/actors/Actor.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/actors/Actor.java
index 0445968..5d06168 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/actors/Actor.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/actors/Actor.java
@@ -36,13 +36,6 @@ import java.util.List;
 public interface Actor {
 
     /**
-     * Get the {@link Partitioner} associated with the {@link GraphActors} 
system.
-     *
-     * @return the partitioner used to partition (logically and/or physically) 
the {@link org.apache.tinkerpop.gremlin.structure.Graph}
-     */
-    public Partitioner partitioner();
-
-    /**
      * Get the {@link Address} of the actors.
      *
      * @return the actors's address
@@ -67,8 +60,21 @@ public interface Actor {
 
     public interface Master extends Actor {
 
+        /**
+         * Get the master actors address.
+         *
+         * @return the master actor's address
+         */
+        @Override
         public Address.Master address();
 
+        /**
+         * Get the {@link Partitioner} associated with the {@link GraphActors} 
system.
+         *
+         * @return the partitioner used to partition (logically and/or 
physically) the {@link org.apache.tinkerpop.gremlin.structure.Graph}
+         */
+        public Partitioner partitioner();
+
         public void close();
 
         public <R> ActorsResult<R> result();

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/cb9cc637/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/actors/traversal/TraversalWorkerProgram.java
----------------------------------------------------------------------
diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/actors/traversal/TraversalWorkerProgram.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/actors/traversal/TraversalWorkerProgram.java
index b3b73d5..4e49f03 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/actors/traversal/TraversalWorkerProgram.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/actors/traversal/TraversalWorkerProgram.java
@@ -90,8 +90,8 @@ final class TraversalWorkerProgram implements 
ActorProgram.Worker<Object> {
         final int i = this.self.workers().indexOf(this.self.address());
         this.neighborWorker = this.self.workers().get(i == 
this.self.workers().size() - 1 ? 0 : i + 1);
         this.isLeader = i == 0;
-        for (int j = 0; j < this.self.partitioner().getPartitions().size(); 
j++) {
-            
this.partitionToWorkerMap.put(this.self.partitioner().getPartitions().get(j), 
this.self.workers().get(j));
+        for (int j = 0; j < 
this.self.partition().partitioner().getPartitions().size(); j++) {
+            
this.partitionToWorkerMap.put(this.self.partition().partitioner().getPartitions().get(j),
 this.self.workers().get(j));
         }
     }
 
@@ -177,7 +177,7 @@ final class TraversalWorkerProgram implements 
ActorProgram.Worker<Object> {
         if (traverser.isHalted())
             this.self.send(this.self.master(), traverser);
         else if (traverser.get() instanceof Element && 
!this.self.partition().contains((Element) traverser.get()))
-            
this.self.send(this.partitionToWorkerMap.get(this.self.partitioner().find((Element)
 traverser.get())), traverser);
+            
this.self.send(this.partitionToWorkerMap.get(this.self.partition().partitioner().find((Element)
 traverser.get())), traverser);
         else
             this.self.send(this.self.address(), traverser);
     }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/cb9cc637/gremlin-tools/gremlin-tinkergraph-test/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-tools/gremlin-tinkergraph-test/pom.xml 
b/gremlin-tools/gremlin-tinkergraph-test/pom.xml
new file mode 100644
index 0000000..cead50a
--- /dev/null
+++ b/gremlin-tools/gremlin-tinkergraph-test/pom.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~  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.
+  -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0";
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <artifactId>gremlin-tools</artifactId>
+        <groupId>org.apache.tinkerpop</groupId>
+        <version>3.3.0-SNAPSHOT</version>
+    </parent>
+    <artifactId>gremlin-tinkergraph-test</artifactId>
+    <name>Apache TinkerPop :: Gremlin TinkerGraph Test</name>
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.tinkerpop</groupId>
+            <artifactId>tinkergraph-gremlin</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.tinkerpop</groupId>
+            <artifactId>gremlin-test</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-log4j12</artifactId>
+            <optional>true</optional>
+        </dependency>
+    </dependencies>
+    <build>
+        <plugins>
+            <plugin>
+                <artifactId>maven-deploy-plugin</artifactId>
+                <configuration>
+                    <skip>true</skip>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+</project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/cb9cc637/gremlin-tools/gremlin-tinkergraph-test/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/AbstractTinkerGraphProvider.java
----------------------------------------------------------------------
diff --git 
a/gremlin-tools/gremlin-tinkergraph-test/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/AbstractTinkerGraphProvider.java
 
b/gremlin-tools/gremlin-tinkergraph-test/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/AbstractTinkerGraphProvider.java
new file mode 100644
index 0000000..a25ac66
--- /dev/null
+++ 
b/gremlin-tools/gremlin-tinkergraph-test/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/AbstractTinkerGraphProvider.java
@@ -0,0 +1,257 @@
+/*
+ *  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;
+
+import org.apache.commons.configuration.Configuration;
+import org.apache.tinkerpop.gremlin.AbstractGraphProvider;
+import org.apache.tinkerpop.gremlin.LoadGraphWith;
+import org.apache.tinkerpop.gremlin.TestHelper;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.apache.tinkerpop.gremlin.structure.GraphTest;
+import org.apache.tinkerpop.gremlin.structure.VertexProperty;
+import org.apache.tinkerpop.gremlin.structure.io.IoEdgeTest;
+import org.apache.tinkerpop.gremlin.structure.io.IoVertexTest;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoResourceAccess;
+import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedGraphTest;
+import org.apache.tinkerpop.gremlin.structure.util.star.StarGraphTest;
+import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerEdge;
+import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerElement;
+import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph;
+import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraphVariables;
+import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerProperty;
+import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerVertex;
+import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerVertexProperty;
+
+import java.io.File;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public abstract class AbstractTinkerGraphProvider extends 
AbstractGraphProvider {
+
+    protected static final String GREMLIN_TINKERGRAPH_SKIP_TEST = 
"gremlin.tinkergraph.skipTest";
+
+    private static final Set<Class> IMPLEMENTATION = new HashSet<Class>() {{
+        add(TinkerEdge.class);
+        add(TinkerElement.class);
+        add(TinkerGraph.class);
+        add(TinkerGraphVariables.class);
+        add(TinkerProperty.class);
+        add(TinkerVertex.class);
+        add(TinkerVertexProperty.class);
+    }};
+
+    private static Map<String, String> PATHS = new HashMap<>();
+
+    static {
+        try {
+            final List<String> kryoResources = Arrays.asList(
+                    "tinkerpop-modern.kryo",
+                    "grateful-dead.kryo",
+                    "tinkerpop-classic.kryo",
+                    "tinkerpop-crew.kryo");
+            for (final String fileName : kryoResources) {
+                PATHS.put(fileName, 
TestHelper.generateTempFileFromResource(GryoResourceAccess.class, fileName, 
"").getAbsolutePath().replace('\\', '/'));
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    public abstract Set<String> getSkipTests();
+
+    @Override
+    public Map<String, Object> getBaseConfiguration(final String graphName, 
final Class<?> test, final String testMethodName,
+                                                    final 
LoadGraphWith.GraphData loadGraphWith) {
+        final TinkerGraph.DefaultIdManager idManager = 
selectIdMakerFromGraphData(loadGraphWith);
+        final String idMaker = 
(idManager.equals(TinkerGraph.DefaultIdManager.ANY) ? 
selectIdMakerFromTest(test, testMethodName) : idManager).name();
+        return new HashMap<String, Object>() {{
+            put(Graph.GRAPH, TinkerGraph.class.getName());
+            put(TinkerGraph.GREMLIN_TINKERGRAPH_VERTEX_ID_MANAGER, idMaker);
+            put(TinkerGraph.GREMLIN_TINKERGRAPH_EDGE_ID_MANAGER, idMaker);
+            put(TinkerGraph.GREMLIN_TINKERGRAPH_VERTEX_PROPERTY_ID_MANAGER, 
idMaker);
+            put(GREMLIN_TINKERGRAPH_SKIP_TEST, 
getSkipTests().contains(testMethodName) || 
getSkipTests().contains(test.getCanonicalName()));
+            if (requiresListCardinalityAsDefault(loadGraphWith, test, 
testMethodName))
+                
put(TinkerGraph.GREMLIN_TINKERGRAPH_DEFAULT_VERTEX_PROPERTY_CARDINALITY, 
VertexProperty.Cardinality.list.name());
+            if (requiresPersistence(test, testMethodName)) {
+                put(TinkerGraph.GREMLIN_TINKERGRAPH_GRAPH_FORMAT, "gryo");
+                final File tempDir = TestHelper.makeTestDataPath(test, "temp");
+                put(TinkerGraph.GREMLIN_TINKERGRAPH_GRAPH_LOCATION,
+                        tempDir.getAbsolutePath() + File.separator + 
testMethodName + ".kryo");
+            }
+            if (null != loadGraphWith) {
+                put(TinkerGraph.GREMLIN_TINKERGRAPH_GRAPH_LOCATION, 
getGraphLocation(loadGraphWith));
+                put(TinkerGraph.GREMLIN_TINKERGRAPH_GRAPH_FORMAT, "gryo");
+            }
+        }};
+    }
+
+
+    private final String getGraphLocation(final LoadGraphWith.GraphData 
graphData) {
+        final String type = ".kryo";
+        if (graphData.equals(LoadGraphWith.GraphData.GRATEFUL)) {
+            return PATHS.get("grateful-dead" + type);
+        } else if (graphData.equals(LoadGraphWith.GraphData.MODERN)) {
+            return PATHS.get("tinkerpop-modern" + type);
+        } else if (graphData.equals(LoadGraphWith.GraphData.CLASSIC)) {
+            return PATHS.get("tinkerpop-classic" + type);
+        } else if (graphData.equals(LoadGraphWith.GraphData.CREW)) {
+            return PATHS.get("tinkerpop-crew" + type);
+        } else {
+            throw new RuntimeException("Could not load graph with " + 
graphData);
+        }
+    }
+
+    @Override
+    public void loadGraphData(final Graph graph, final LoadGraphWith 
loadGraphWith, final Class testClass, final String testName) {
+        // all data is loaded via file
+    }
+
+    @Override
+    public void clear(final Graph graph, final Configuration configuration) 
throws Exception {
+        if (graph != null)
+            graph.close();
+
+        // in the even the graph is persisted we need to clean up
+        final String graphLocation = 
configuration.getString(TinkerGraph.GREMLIN_TINKERGRAPH_GRAPH_LOCATION, null);
+        if (graphLocation != null) {
+            final File f = new File(graphLocation);
+            f.delete();
+        }
+    }
+
+    @Override
+    public Set<Class> getImplementations() {
+        return IMPLEMENTATION;
+    }
+
+    /**
+     * Determines if a test requires TinkerGraph persistence to be configured 
with graph location and format.
+     */
+    protected static boolean requiresPersistence(final Class<?> test, final 
String testMethodName) {
+        return test == GraphTest.class && 
testMethodName.equals("shouldPersistDataOnClose");
+    }
+
+    /**
+     * Determines if a test requires a different cardinality as the default or 
not.
+     */
+    protected static boolean requiresListCardinalityAsDefault(final 
LoadGraphWith.GraphData loadGraphWith,
+                                                              final Class<?> 
test, final String testMethodName) {
+        return loadGraphWith == LoadGraphWith.GraphData.CREW
+                || (test == StarGraphTest.class && 
testMethodName.equals("shouldAttachWithCreateMethod"))
+                || (test == DetachedGraphTest.class && 
testMethodName.equals("testAttachableCreateMethod"));
+    }
+
+    /**
+     * Some tests require special configuration for TinkerGraph to properly 
configure the id manager.
+     */
+    protected TinkerGraph.DefaultIdManager selectIdMakerFromTest(final 
Class<?> test, final String testMethodName) {
+        if (test.equals(GraphTest.class)) {
+            final Set<String> testsThatNeedLongIdManager = new 
HashSet<String>() {{
+                
add("shouldIterateVerticesWithNumericIdSupportUsingDoubleRepresentation");
+                
add("shouldIterateVerticesWithNumericIdSupportUsingDoubleRepresentations");
+                
add("shouldIterateVerticesWithNumericIdSupportUsingIntegerRepresentation");
+                
add("shouldIterateVerticesWithNumericIdSupportUsingIntegerRepresentations");
+                
add("shouldIterateVerticesWithNumericIdSupportUsingFloatRepresentation");
+                
add("shouldIterateVerticesWithNumericIdSupportUsingFloatRepresentations");
+                
add("shouldIterateVerticesWithNumericIdSupportUsingStringRepresentation");
+                
add("shouldIterateVerticesWithNumericIdSupportUsingStringRepresentations");
+                
add("shouldIterateEdgesWithNumericIdSupportUsingDoubleRepresentation");
+                
add("shouldIterateEdgesWithNumericIdSupportUsingDoubleRepresentations");
+                
add("shouldIterateEdgesWithNumericIdSupportUsingIntegerRepresentation");
+                
add("shouldIterateEdgesWithNumericIdSupportUsingIntegerRepresentations");
+                
add("shouldIterateEdgesWithNumericIdSupportUsingFloatRepresentation");
+                
add("shouldIterateEdgesWithNumericIdSupportUsingFloatRepresentations");
+                
add("shouldIterateEdgesWithNumericIdSupportUsingStringRepresentation");
+                
add("shouldIterateEdgesWithNumericIdSupportUsingStringRepresentations");
+            }};
+
+            final Set<String> testsThatNeedUuidIdManager = new 
HashSet<String>() {{
+                
add("shouldIterateVerticesWithUuidIdSupportUsingStringRepresentation");
+                
add("shouldIterateVerticesWithUuidIdSupportUsingStringRepresentations");
+                
add("shouldIterateEdgesWithUuidIdSupportUsingStringRepresentation");
+                
add("shouldIterateEdgesWithUuidIdSupportUsingStringRepresentations");
+            }};
+
+            if (testsThatNeedLongIdManager.contains(testMethodName))
+                return TinkerGraph.DefaultIdManager.LONG;
+            else if (testsThatNeedUuidIdManager.contains(testMethodName))
+                return TinkerGraph.DefaultIdManager.UUID;
+        } else if (test.equals(IoEdgeTest.class)) {
+            final Set<String> testsThatNeedLongIdManager = new 
HashSet<String>() {{
+                add("shouldReadWriteEdge[graphson-v1]");
+                add("shouldReadWriteDetachedEdgeAsReference[graphson-v1]");
+                add("shouldReadWriteDetachedEdge[graphson-v1]");
+                add("shouldReadWriteEdge[graphson-v2]");
+                add("shouldReadWriteDetachedEdgeAsReference[graphson-v2]");
+                add("shouldReadWriteDetachedEdge[graphson-v2]");
+            }};
+
+            if (testsThatNeedLongIdManager.contains(testMethodName))
+                return TinkerGraph.DefaultIdManager.LONG;
+        } else if (test.equals(IoVertexTest.class)) {
+            final Set<String> testsThatNeedLongIdManager = new 
HashSet<String>() {{
+                add("shouldReadWriteVertexWithBOTHEdges[graphson-v1]");
+                add("shouldReadWriteVertexWithINEdges[graphson-v1]");
+                add("shouldReadWriteVertexWithOUTEdges[graphson-v1]");
+                add("shouldReadWriteVertexNoEdges[graphson-v1]");
+                add("shouldReadWriteDetachedVertexNoEdges[graphson-v1]");
+                
add("shouldReadWriteDetachedVertexAsReferenceNoEdges[graphson-v1]");
+                add("shouldReadWriteVertexMultiPropsNoEdges[graphson-v1]");
+                add("shouldReadWriteVertexWithBOTHEdges[graphson-v2]");
+                add("shouldReadWriteVertexWithINEdges[graphson-v2]");
+                add("shouldReadWriteVertexWithOUTEdges[graphson-v2]");
+                add("shouldReadWriteVertexNoEdges[graphson-v2]");
+                add("shouldReadWriteDetachedVertexNoEdges[graphson-v2]");
+                
add("shouldReadWriteDetachedVertexAsReferenceNoEdges[graphson-v2]");
+                add("shouldReadWriteVertexMultiPropsNoEdges[graphson-v2]");
+            }};
+
+            if (testsThatNeedLongIdManager.contains(testMethodName))
+                return TinkerGraph.DefaultIdManager.LONG;
+        }
+
+        return TinkerGraph.DefaultIdManager.ANY;
+    }
+
+    /**
+     * Test that load with specific graph data can be configured with a 
specific id manager as the data type to
+     * be used in the test for that graph is known.
+     */
+    protected TinkerGraph.DefaultIdManager selectIdMakerFromGraphData(final 
LoadGraphWith.GraphData loadGraphWith) {
+        if (null == loadGraphWith) return TinkerGraph.DefaultIdManager.ANY;
+        if (loadGraphWith.equals(LoadGraphWith.GraphData.CLASSIC))
+            return TinkerGraph.DefaultIdManager.INTEGER;
+        else if (loadGraphWith.equals(LoadGraphWith.GraphData.MODERN))
+            return TinkerGraph.DefaultIdManager.INTEGER;
+        else if (loadGraphWith.equals(LoadGraphWith.GraphData.CREW))
+            return TinkerGraph.DefaultIdManager.INTEGER;
+        else if (loadGraphWith.equals(LoadGraphWith.GraphData.GRATEFUL))
+            return TinkerGraph.DefaultIdManager.INTEGER;
+        else
+            throw new IllegalStateException(String.format("Need to define a 
new %s for %s", TinkerGraph.IdManager.class.getName(), loadGraphWith.name()));
+    }
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/cb9cc637/gremlin-tools/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-tools/pom.xml b/gremlin-tools/pom.xml
index 864bb95..eb0fbea 100644
--- a/gremlin-tools/pom.xml
+++ b/gremlin-tools/pom.xml
@@ -16,6 +16,7 @@
         <module>gremlin-benchmark</module>
         <module>gremlin-coverage</module>
         <module>gremlin-io-test</module>
+        <module>gremlin-tinkergraph-test</module>
     </modules>
 
     <build>

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/cb9cc637/spark-gremlin/pom.xml
----------------------------------------------------------------------
diff --git a/spark-gremlin/pom.xml b/spark-gremlin/pom.xml
index a08fdfd..9e8dd0e 100644
--- a/spark-gremlin/pom.xml
+++ b/spark-gremlin/pom.xml
@@ -351,7 +351,7 @@
         </dependency>
         <dependency>
             <groupId>org.apache.tinkerpop</groupId>
-            <artifactId>tinkergraph-gremlin</artifactId>
+            <artifactId>gremlin-tinkergraph-test</artifactId>
             <version>${project.version}</version>
             <scope>test</scope>
         </dependency>

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/cb9cc637/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/SparkGraphPartitionerComputerProcessIntegrateTest.java
----------------------------------------------------------------------
diff --git 
a/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/SparkGraphPartitionerComputerProcessIntegrateTest.java
 
b/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/SparkGraphPartitionerComputerProcessIntegrateTest.java
new file mode 100644
index 0000000..3b5b8a4
--- /dev/null
+++ 
b/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/SparkGraphPartitionerComputerProcessIntegrateTest.java
@@ -0,0 +1,33 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.tinkerpop.gremlin.spark.process.computer;
+
+import org.apache.tinkerpop.gremlin.GraphProviderClass;
+import org.apache.tinkerpop.gremlin.process.ProcessComputerSuite;
+import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph;
+import org.junit.runner.RunWith;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+@RunWith(ProcessComputerSuite.class)
+@GraphProviderClass(provider = SparkTinkerGraphProvider.class, graph = 
TinkerGraph.class)
+public class SparkGraphPartitionerComputerProcessIntegrateTest {
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/cb9cc637/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/SparkHadoopGraphProvider.java
----------------------------------------------------------------------
diff --git 
a/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/SparkHadoopGraphProvider.java
 
b/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/SparkHadoopGraphProvider.java
index 760bba6..556d9d5 100644
--- 
a/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/SparkHadoopGraphProvider.java
+++ 
b/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/SparkHadoopGraphProvider.java
@@ -28,7 +28,6 @@ import 
org.apache.tinkerpop.gremlin.hadoop.HadoopGraphProvider;
 import 
org.apache.tinkerpop.gremlin.hadoop.groovy.plugin.HadoopGremlinPluginCheck;
 import org.apache.tinkerpop.gremlin.hadoop.structure.io.FileSystemStorageCheck;
 import org.apache.tinkerpop.gremlin.hadoop.structure.io.HadoopPools;
-import org.apache.tinkerpop.gremlin.hadoop.structure.io.gryo.ToyIoRegistry;
 import org.apache.tinkerpop.gremlin.process.computer.Computer;
 import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
 import 
org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
@@ -42,12 +41,9 @@ import 
org.apache.tinkerpop.gremlin.process.traversal.step.map.ProgramTest;
 import org.apache.tinkerpop.gremlin.spark.structure.Spark;
 import org.apache.tinkerpop.gremlin.spark.structure.io.PersistedOutputRDD;
 import 
org.apache.tinkerpop.gremlin.spark.structure.io.SparkContextStorageCheck;
-import org.apache.tinkerpop.gremlin.spark.structure.io.SparkIoRegistryCheck;
 import org.apache.tinkerpop.gremlin.spark.structure.io.ToyGraphInputRDD;
 import org.apache.tinkerpop.gremlin.spark.structure.io.gryo.GryoRegistrator;
 import org.apache.tinkerpop.gremlin.structure.Graph;
-import org.apache.tinkerpop.gremlin.structure.io.IoRegistry;
-import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.KryoShimService;
 import 
org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.KryoShimServiceLoader;
 
 import java.util.Map;

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/cb9cc637/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/SparkTinkerGraphProvider.java
----------------------------------------------------------------------
diff --git 
a/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/SparkTinkerGraphProvider.java
 
b/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/SparkTinkerGraphProvider.java
new file mode 100644
index 0000000..19a7f8c
--- /dev/null
+++ 
b/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/SparkTinkerGraphProvider.java
@@ -0,0 +1,117 @@
+/*
+ *  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.spark.process.computer;
+
+import org.apache.commons.configuration.Configuration;
+import org.apache.tinkerpop.gremlin.GraphProvider;
+import org.apache.tinkerpop.gremlin.LoadGraphWith;
+import org.apache.tinkerpop.gremlin.hadoop.Constants;
+import org.apache.tinkerpop.gremlin.hadoop.structure.io.gryo.GryoOutputFormat;
+import 
org.apache.tinkerpop.gremlin.hadoop.structure.io.partitioner.PartitionerInputFormat;
+import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
+import 
org.apache.tinkerpop.gremlin.process.computer.bulkloading.BulkLoaderVertexProgramTest;
+import 
org.apache.tinkerpop.gremlin.process.computer.ranking.pagerank.PageRankVertexProgramTest;
+import 
org.apache.tinkerpop.gremlin.process.traversal.TraversalInterruptionComputerTest;
+import 
org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.PageRankTest;
+import 
org.apache.tinkerpop.gremlin.process.traversal.step.map.PeerPressureTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.ProgramTest;
+import 
org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.ReadOnlyStrategy;
+import 
org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.ReadOnlyStrategyProcessTest;
+import org.apache.tinkerpop.gremlin.spark.structure.io.gryo.GryoSerializer;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.apache.tinkerpop.gremlin.tinkergraph.AbstractTinkerGraphProvider;
+import 
org.apache.tinkerpop.gremlin.tinkergraph.process.computer.TinkerGraphComputer;
+import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph;
+
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import static 
org.apache.tinkerpop.gremlin.structure.io.gryo.GryoPool.CONFIG_IO_GRYO_POOL_SIZE;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+@GraphProvider.Descriptor(computer = SparkGraphComputer.class)
+public class SparkTinkerGraphProvider extends AbstractTinkerGraphProvider {
+
+    private static Set<String> SKIP_TESTS = new HashSet<>(Arrays.asList(
+            TraversalInterruptionComputerTest.class.getCanonicalName(),
+            PageRankTest.Traversals.class.getCanonicalName(),
+            ProgramTest.Traversals.class.getCanonicalName(),
+            PeerPressureTest.Traversals.class.getCanonicalName(),
+            BulkLoaderVertexProgramTest.class.getCanonicalName(),
+            PageRankVertexProgramTest.class.getCanonicalName(),
+            ReadOnlyStrategyProcessTest.class.getCanonicalName(),
+            "testProfileStrategyCallback",
+            "testProfileStrategyCallbackSideEffect",
+            "shouldSucceedWithProperTraverserRequirements",
+            "shouldStartAndEndWorkersForVertexProgramAndMapReduce",
+            "shouldFailWithImproperTraverserRequirements"));
+
+    @Override
+    public Set<String> getSkipTests() {
+        return SKIP_TESTS;
+    }
+
+    @Override
+    public Map<String, Object> getBaseConfiguration(final String graphName, 
final Class<?> test, final String testMethodName,
+                                                    final 
LoadGraphWith.GraphData loadGraphWith) {
+
+        final Map<String, Object> configuration = 
super.getBaseConfiguration(graphName, test, testMethodName, loadGraphWith);
+
+        // Spark specific configuration
+        configuration.put("spark.master", "local[4]");
+        configuration.put("spark.serializer", 
GryoSerializer.class.getCanonicalName());
+        configuration.put("spark.kryo.registrationRequired", true);
+        configuration.put(Constants.GREMLIN_HADOOP_GRAPH_READER, 
PartitionerInputFormat.class.getCanonicalName());
+        configuration.put(Constants.GREMLIN_HADOOP_GRAPH_WRITER, 
GryoOutputFormat.class.getCanonicalName());
+        configuration.put(Constants.GREMLIN_HADOOP_OUTPUT_LOCATION, 
getWorkingDirectory());
+        configuration.put(Constants.GREMLIN_HADOOP_JARS_IN_DISTRIBUTED_CACHE, 
false);
+        configuration.put(CONFIG_IO_GRYO_POOL_SIZE, 16);
+        if (!(Boolean) 
configuration.getOrDefault(GREMLIN_TINKERGRAPH_SKIP_TEST, false))
+            configuration.put(GraphComputer.GRAPH_COMPUTER, 
SparkGraphComputer.class.getCanonicalName());
+        configuration.put(Constants.GREMLIN_SPARK_PERSIST_CONTEXT, true);
+        return configuration;
+    }
+
+    @Override
+    public void clear(final Graph graph, final Configuration configuration) 
throws Exception {
+        //  don't clear loaded data files
+    }
+
+    @Override
+    public GraphTraversalSource traversal(final Graph graph) {
+        if (graph.configuration().getBoolean(GREMLIN_TINKERGRAPH_SKIP_TEST, 
false))
+            return 
graph.traversal().withStrategies(ReadOnlyStrategy.instance()).withComputer();
+        else
+            return 
graph.traversal().withStrategies(ReadOnlyStrategy.instance()).withProcessor(SparkGraphComputer.open(graph.configuration()));
+    }
+
+    @Override
+    public GraphComputer getGraphComputer(final Graph graph) {
+        if (graph.configuration().getBoolean(GREMLIN_TINKERGRAPH_SKIP_TEST, 
false))
+            return new TinkerGraphComputer((TinkerGraph) graph);
+        else
+            return SparkGraphComputer.open(graph.configuration());
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/cb9cc637/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/structure/io/partitioner/SparkGraphPartitionerComputerProcessIntegrateTest.java
----------------------------------------------------------------------
diff --git 
a/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/structure/io/partitioner/SparkGraphPartitionerComputerProcessIntegrateTest.java
 
b/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/structure/io/partitioner/SparkGraphPartitionerComputerProcessIntegrateTest.java
deleted file mode 100644
index 0cefaa5..0000000
--- 
a/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/structure/io/partitioner/SparkGraphPartitionerComputerProcessIntegrateTest.java
+++ /dev/null
@@ -1,34 +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.spark.structure.io.partitioner;
-
-import org.apache.tinkerpop.gremlin.GraphProviderClass;
-import org.apache.tinkerpop.gremlin.process.ProcessComputerSuite;
-import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph;
-import org.junit.Ignore;
-import org.junit.runner.RunWith;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-@RunWith(ProcessComputerSuite.class)
-@GraphProviderClass(provider = TinkerGraphPartitionerProvider.class, graph = 
TinkerGraph.class)
-public class SparkGraphPartitionerComputerProcessIntegrateTest {
-}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/cb9cc637/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/structure/io/partitioner/TinkerGraphPartitionerProvider.java
----------------------------------------------------------------------
diff --git 
a/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/structure/io/partitioner/TinkerGraphPartitionerProvider.java
 
b/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/structure/io/partitioner/TinkerGraphPartitionerProvider.java
deleted file mode 100644
index 15fa3ac..0000000
--- 
a/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/structure/io/partitioner/TinkerGraphPartitionerProvider.java
+++ /dev/null
@@ -1,224 +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.spark.structure.io.partitioner;
-
-import org.apache.commons.configuration.Configuration;
-import org.apache.tinkerpop.gremlin.AbstractGraphProvider;
-import org.apache.tinkerpop.gremlin.AbstractGremlinTest;
-import org.apache.tinkerpop.gremlin.GraphProvider;
-import org.apache.tinkerpop.gremlin.LoadGraphWith;
-import org.apache.tinkerpop.gremlin.TestHelper;
-import org.apache.tinkerpop.gremlin.hadoop.Constants;
-import org.apache.tinkerpop.gremlin.hadoop.structure.io.gryo.GryoOutputFormat;
-import 
org.apache.tinkerpop.gremlin.hadoop.structure.io.partitioner.PartitionerInputFormat;
-import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
-import 
org.apache.tinkerpop.gremlin.process.computer.bulkloading.BulkLoaderVertexProgramTest;
-import 
org.apache.tinkerpop.gremlin.process.computer.ranking.pagerank.PageRankVertexProgramTest;
-import 
org.apache.tinkerpop.gremlin.process.traversal.TraversalInterruptionComputerTest;
-import 
org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
-import org.apache.tinkerpop.gremlin.process.traversal.step.filter.DropTest;
-import org.apache.tinkerpop.gremlin.process.traversal.step.map.PageRankTest;
-import 
org.apache.tinkerpop.gremlin.process.traversal.step.map.PeerPressureTest;
-import org.apache.tinkerpop.gremlin.process.traversal.step.map.ProgramTest;
-import 
org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.ReadOnlyStrategy;
-import 
org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.ReadOnlyStrategyProcessTest;
-import org.apache.tinkerpop.gremlin.spark.process.computer.SparkGraphComputer;
-import org.apache.tinkerpop.gremlin.spark.structure.io.gryo.GryoSerializer;
-import org.apache.tinkerpop.gremlin.structure.Graph;
-import org.apache.tinkerpop.gremlin.structure.VertexProperty;
-import 
org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONResourceAccess;
-import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoResourceAccess;
-import 
org.apache.tinkerpop.gremlin.tinkergraph.process.computer.TinkerGraphComputer;
-import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerEdge;
-import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerElement;
-import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph;
-import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraphVariables;
-import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerProperty;
-import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerVertex;
-import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerVertexProperty;
-
-import java.io.IOException;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-@GraphProvider.Descriptor(computer = SparkGraphComputer.class)
-public class TinkerGraphPartitionerProvider extends AbstractGraphProvider {
-
-    private static Set<String> SKIP_TESTS = new HashSet<>(Arrays.asList(
-            TraversalInterruptionComputerTest.class.getCanonicalName(),
-            PageRankTest.Traversals.class.getCanonicalName(),
-            ProgramTest.Traversals.class.getCanonicalName(),
-            PeerPressureTest.Traversals.class.getCanonicalName(),
-            BulkLoaderVertexProgramTest.class.getCanonicalName(),
-            PageRankVertexProgramTest.class.getCanonicalName(),
-            ReadOnlyStrategyProcessTest.class.getCanonicalName(),
-            "testProfileStrategyCallback",
-            "testProfileStrategyCallbackSideEffect",
-            "shouldSucceedWithProperTraverserRequirements",
-            "shouldStartAndEndWorkersForVertexProgramAndMapReduce",
-            "shouldFailWithImproperTraverserRequirements"));
-
-    private static final Set<Class> IMPLEMENTATION = new HashSet<Class>() {{
-        add(TinkerEdge.class);
-        add(TinkerElement.class);
-        add(TinkerGraph.class);
-        add(TinkerGraphVariables.class);
-        add(TinkerProperty.class);
-        add(TinkerVertex.class);
-        add(TinkerVertexProperty.class);
-    }};
-
-    private static Map<String, String> PATHS = new HashMap<>();
-
-    static {
-        try {
-            final List<String> kryoResources = Arrays.asList(
-                    "tinkerpop-modern.kryo",
-                    "grateful-dead.kryo",
-                    "tinkerpop-classic.kryo",
-                    "tinkerpop-crew.kryo");
-            for (final String fileName : kryoResources) {
-                PATHS.put(fileName, 
TestHelper.generateTempFileFromResource(GryoResourceAccess.class, fileName, 
"").getAbsolutePath().replace('\\', '/'));
-            }
-
-            final List<String> graphsonResources = Arrays.asList(
-                    "tinkerpop-modern-v2d0-typed.json",
-                    "grateful-dead-v2d0-typed.json",
-                    "tinkerpop-classic-v2d0-typed.json",
-                    "tinkerpop-crew-v2d0-typed.json");
-            for (final String fileName : graphsonResources) {
-                PATHS.put(fileName, 
TestHelper.generateTempFileFromResource(GraphSONResourceAccess.class, fileName, 
"").getAbsolutePath().replace('\\', '/'));
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    @Override
-    public Map<String, Object> getBaseConfiguration(final String graphName, 
final Class<?> test, final String testMethodName,
-                                                    final 
LoadGraphWith.GraphData loadGraphWith) {
-
-        final TinkerGraph.DefaultIdManager idManager = 
selectIdMakerFromGraphData(loadGraphWith);
-        final String idMaker = 
(idManager.equals(TinkerGraph.DefaultIdManager.ANY) ? 
selectIdMakerFromGraphData(loadGraphWith) : idManager).name();
-        final boolean skipTest = SKIP_TESTS.contains(testMethodName) || 
SKIP_TESTS.contains(test.getCanonicalName());
-        return new HashMap<String, Object>() {{
-            put(Graph.GRAPH, TinkerGraph.class.getName());
-            put(TinkerGraph.GREMLIN_TINKERGRAPH_VERTEX_ID_MANAGER, idMaker);
-            put(TinkerGraph.GREMLIN_TINKERGRAPH_EDGE_ID_MANAGER, idMaker);
-            put(TinkerGraph.GREMLIN_TINKERGRAPH_VERTEX_PROPERTY_ID_MANAGER, 
idMaker);
-            put("skipTest", SKIP_TESTS.contains(testMethodName) || 
SKIP_TESTS.contains(test.getCanonicalName()));
-            if (null != loadGraphWith) {
-                put(TinkerGraph.GREMLIN_TINKERGRAPH_GRAPH_LOCATION, 
loadGraphDataViaHadoopConfig(loadGraphWith));
-                put(TinkerGraph.GREMLIN_TINKERGRAPH_GRAPH_FORMAT, "gryo");
-                if (loadGraphWith == LoadGraphWith.GraphData.CREW)
-                    
put(TinkerGraph.GREMLIN_TINKERGRAPH_DEFAULT_VERTEX_PROPERTY_CARDINALITY, 
VertexProperty.Cardinality.list.name());
-            }
-
-            // Spark specific configuration
-            put("spark.master", "local[4]");
-            put("spark.serializer", GryoSerializer.class.getCanonicalName());
-            put("spark.kryo.registrationRequired", true);
-            put(Constants.GREMLIN_HADOOP_GRAPH_READER, 
PartitionerInputFormat.class.getCanonicalName());
-            put(Constants.GREMLIN_HADOOP_GRAPH_WRITER, 
GryoOutputFormat.class.getCanonicalName());
-            put(Constants.GREMLIN_HADOOP_OUTPUT_LOCATION, 
getWorkingDirectory());
-            put(Constants.GREMLIN_HADOOP_JARS_IN_DISTRIBUTED_CACHE, false);
-            if (!skipTest)
-                put(GraphComputer.GRAPH_COMPUTER, 
SparkGraphComputer.class.getCanonicalName());
-            put(Constants.GREMLIN_SPARK_PERSIST_CONTEXT, true);
-        }};
-
-
-    }
-
-    public String loadGraphDataViaHadoopConfig(final LoadGraphWith.GraphData 
graphData) {
-        final String type = ".kryo";
-        if (graphData.equals(LoadGraphWith.GraphData.GRATEFUL)) {
-            return PATHS.get("grateful-dead" + type);
-        } else if (graphData.equals(LoadGraphWith.GraphData.MODERN)) {
-            return PATHS.get("tinkerpop-modern" + type);
-        } else if (graphData.equals(LoadGraphWith.GraphData.CLASSIC)) {
-            return PATHS.get("tinkerpop-classic" + type);
-        } else if (graphData.equals(LoadGraphWith.GraphData.CREW)) {
-            return PATHS.get("tinkerpop-crew" + type);
-        } else {
-            throw new RuntimeException("Could not load graph with " + 
graphData);
-        }
-    }
-
-    @Override
-    public void loadGraphData(final Graph graph, final LoadGraphWith 
loadGraphWith, final Class testClass, final String testName) {
-
-    }
-
-    @Override
-    public void clear(final Graph graph, final Configuration configuration) 
throws Exception {
-        //  if (graph != null) graph.close();
-    }
-
-    @Override
-    public Set<Class> getImplementations() {
-        return IMPLEMENTATION;
-    }
-
-    /**
-     * Test that load with specific graph data can be configured with a 
specific id manager as the data type to
-     * be used in the test for that graph is known.
-     */
-    protected TinkerGraph.DefaultIdManager selectIdMakerFromGraphData(final 
LoadGraphWith.GraphData loadGraphWith) {
-        if (null == loadGraphWith) return TinkerGraph.DefaultIdManager.ANY;
-        if (loadGraphWith.equals(LoadGraphWith.GraphData.CLASSIC))
-            return TinkerGraph.DefaultIdManager.INTEGER;
-        else if (loadGraphWith.equals(LoadGraphWith.GraphData.MODERN))
-            return TinkerGraph.DefaultIdManager.INTEGER;
-        else if (loadGraphWith.equals(LoadGraphWith.GraphData.CREW))
-            return TinkerGraph.DefaultIdManager.INTEGER;
-        else if (loadGraphWith.equals(LoadGraphWith.GraphData.GRATEFUL))
-            return TinkerGraph.DefaultIdManager.INTEGER;
-        else
-            throw new IllegalStateException(String.format("Need to define a 
new %s for %s", TinkerGraph.IdManager.class.getName(), loadGraphWith.name()));
-    }
-
-    /////////////////////////////
-    /////////////////////////////
-    /////////////////////////////
-
-    @Override
-    public GraphTraversalSource traversal(final Graph graph) {
-        if (graph.configuration().getBoolean("skipTest", false))
-            return 
graph.traversal().withStrategies(ReadOnlyStrategy.instance()).withComputer();
-        else
-            return 
graph.traversal().withStrategies(ReadOnlyStrategy.instance()).withProcessor(SparkGraphComputer.open(graph.configuration()));
-    }
-
-    @Override
-    public GraphComputer getGraphComputer(final Graph graph) {
-        if (graph.configuration().getBoolean("skipTest", false))
-            return new TinkerGraphComputer((TinkerGraph) graph);
-        else
-            return SparkGraphComputer.open(graph.configuration());
-    }
-}
\ No newline at end of file

Reply via email to