Repository: tinkerpop Updated Branches: refs/heads/TINKERPOP-1389 8b57096f4 -> f851e86c5
No more IoAwareSerializer -- it doens't work in Spark 2.0's serialization model. GryoRegistrar is now responsible for handling IoRegistry registration. Much simpler. Finally, everything is passing -- both GryoSerializer and Kryo+GryoRegistrar. What a horrendous day. cc/ @dalaro. Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/f851e86c Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/f851e86c Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/f851e86c Branch: refs/heads/TINKERPOP-1389 Commit: f851e86c5677c99884060451194754692c2f1ef3 Parents: 8b57096 Author: Marko A. Rodriguez <[email protected]> Authored: Thu Oct 27 15:32:04 2016 -0600 Committer: Marko A. Rodriguez <[email protected]> Committed: Thu Oct 27 15:32:04 2016 -0600 ---------------------------------------------------------------------- .../process/computer/SparkGraphComputer.java | 47 +++++++----- .../structure/io/gryo/GryoRegistrator.java | 18 +++++ .../io/gryo/IoRegistryAwareKryoSerializer.java | 81 -------------------- .../unshaded/UnshadedKryoShimService.java | 10 +-- ...SparkGremlinGryoSerializerIntegrateTest.java | 33 -------- .../spark/SparkGremlinGryoSerializerTest.java | 33 ++++++++ .../spark/SparkGremlinIntegrateTest.java | 33 -------- .../gremlin/spark/SparkGremlinTest.java | 33 ++++++++ 8 files changed, 113 insertions(+), 175 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f851e86c/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/SparkGraphComputer.java ---------------------------------------------------------------------- diff --git a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/SparkGraphComputer.java b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/SparkGraphComputer.java index af158a0..4e74088 100644 --- a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/SparkGraphComputer.java +++ b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/SparkGraphComputer.java @@ -69,7 +69,6 @@ import org.apache.tinkerpop.gremlin.spark.structure.io.OutputRDD; import org.apache.tinkerpop.gremlin.spark.structure.io.PersistedInputRDD; import org.apache.tinkerpop.gremlin.spark.structure.io.PersistedOutputRDD; import org.apache.tinkerpop.gremlin.spark.structure.io.SparkContextStorage; -import org.apache.tinkerpop.gremlin.spark.structure.io.gryo.GryoRegistrator; import org.apache.tinkerpop.gremlin.spark.structure.io.gryo.kryoshim.unshaded.UnshadedKryoShimService; import org.apache.tinkerpop.gremlin.structure.Direction; import org.apache.tinkerpop.gremlin.structure.io.Storage; @@ -108,26 +107,6 @@ public final class SparkGraphComputer extends AbstractHadoopGraphComputer { public SparkGraphComputer(final HadoopGraph hadoopGraph) { super(hadoopGraph); this.sparkConfiguration = new HadoopConfiguration(); - ConfigurationUtils.copy(this.hadoopGraph.configuration(), this.sparkConfiguration); - final String shimService = KryoSerializer.class.getCanonicalName().equals(this.sparkConfiguration.getString(Constants.SPARK_SERIALIZER, null)) && - GryoRegistrator.class.getCanonicalName().equals(this.sparkConfiguration.getString(Constants.SPARK_KRYO_REGISTRATOR, null)) ? - UnshadedKryoShimService.class.getCanonicalName() : - HadoopPoolShimService.class.getCanonicalName(); - this.sparkConfiguration.setProperty(KryoShimServiceLoader.KRYO_SHIM_SERVICE, shimService); - /////////// - final StringBuilder params = new StringBuilder(); - this.sparkConfiguration.getKeys().forEachRemaining(key -> { - if (key.startsWith("gremlin") || key.startsWith("spark")) { - params.append(" -D").append("tinkerpop.").append(key).append("=").append(this.sparkConfiguration.getProperty(key)); - } - }); - if (params.length() > 0) { - this.sparkConfiguration.setProperty(SparkLauncher.EXECUTOR_EXTRA_JAVA_OPTIONS, - (this.sparkConfiguration.getString(SparkLauncher.EXECUTOR_EXTRA_JAVA_OPTIONS, "") + params.toString()).trim()); - this.sparkConfiguration.setProperty(SparkLauncher.DRIVER_EXTRA_JAVA_OPTIONS, - (this.sparkConfiguration.getString(SparkLauncher.DRIVER_EXTRA_JAVA_OPTIONS, "") + params.toString()).trim()); - } - KryoShimServiceLoader.applyConfiguration(this.sparkConfiguration); } @Override @@ -156,6 +135,32 @@ public final class SparkGraphComputer extends AbstractHadoopGraphComputer { // create the completable future return computerService.submit(() -> { final long startTime = System.currentTimeMillis(); + ////////////////////////////////////////////////// + /////// PROCESS SHIM AND SYSTEM PROPERTIES /////// + ////////////////////////////////////////////////// + ConfigurationUtils.copy(this.hadoopGraph.configuration(), this.sparkConfiguration); + final String shimService = KryoSerializer.class.getCanonicalName().equals(this.sparkConfiguration.getString(Constants.SPARK_SERIALIZER, null)) ? + UnshadedKryoShimService.class.getCanonicalName() : + HadoopPoolShimService.class.getCanonicalName(); + this.sparkConfiguration.setProperty(KryoShimServiceLoader.KRYO_SHIM_SERVICE, shimService); + /////////// + final StringBuilder params = new StringBuilder(); + this.sparkConfiguration.getKeys().forEachRemaining(key -> { + if (key.startsWith("gremlin") || key.startsWith("spark")) { + params.append(" -D").append("tinkerpop.").append(key).append("=").append(this.sparkConfiguration.getProperty(key)); + System.setProperty("tinkerpop." + key, this.sparkConfiguration.getProperty(key).toString()); + } + }); + if (params.length() > 0) { + this.sparkConfiguration.setProperty(SparkLauncher.EXECUTOR_EXTRA_JAVA_OPTIONS, + (this.sparkConfiguration.getString(SparkLauncher.EXECUTOR_EXTRA_JAVA_OPTIONS, "") + params.toString()).trim()); + this.sparkConfiguration.setProperty(SparkLauncher.DRIVER_EXTRA_JAVA_OPTIONS, + (this.sparkConfiguration.getString(SparkLauncher.DRIVER_EXTRA_JAVA_OPTIONS, "") + params.toString()).trim()); + } + KryoShimServiceLoader.applyConfiguration(this.sparkConfiguration); + ////////////////////////////////////////////////// + ////////////////////////////////////////////////// + ////////////////////////////////////////////////// // apache and hadoop configurations that are used throughout the graph computer computation final org.apache.commons.configuration.Configuration graphComputerConfiguration = new HadoopConfiguration(this.sparkConfiguration); // TODO !! if (!graphComputerConfiguration.containsKey(Constants.SPARK_SERIALIZER)) http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f851e86c/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/gryo/GryoRegistrator.java ---------------------------------------------------------------------- diff --git a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/gryo/GryoRegistrator.java b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/gryo/GryoRegistrator.java index 9495375..150b4d1 100644 --- a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/gryo/GryoRegistrator.java +++ b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/gryo/GryoRegistrator.java @@ -37,11 +37,17 @@ import org.apache.tinkerpop.gremlin.spark.process.computer.payload.ViewIncomingP import org.apache.tinkerpop.gremlin.spark.process.computer.payload.ViewOutgoingPayload; import org.apache.tinkerpop.gremlin.spark.process.computer.payload.ViewPayload; import org.apache.tinkerpop.gremlin.spark.structure.io.gryo.kryoshim.unshaded.UnshadedSerializerAdapter; +import org.apache.tinkerpop.gremlin.structure.io.IoRegistry; +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.GryoSerializers; import org.apache.tinkerpop.gremlin.structure.io.gryo.TypeRegistration; import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.SerializerShim; +import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.shaded.ShadedSerializerAdapter; +import org.apache.tinkerpop.gremlin.structure.io.util.IoRegistryHelper; import org.apache.tinkerpop.gremlin.structure.util.star.StarGraph; +import org.apache.tinkerpop.gremlin.util.SystemUtil; +import org.javatuples.Pair; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import scala.collection.mutable.WrappedArray; @@ -160,6 +166,18 @@ public class GryoRegistrator implements KryoRegistrator { if (!shimmedClassesFromGryoMapper.contains(StarGraph.class)) { log.warn("No SerializerShim found for StarGraph"); } + + // handle io-registry classes + for (final IoRegistry registry : IoRegistryHelper.createRegistries(SystemUtil.getSystemPropertiesConfiguration("tinkerpop", true))) { + for (final Pair<Class, Object> pair : registry.find(GryoIo.class)) { + if (pair.getValue1() instanceof SerializerShim) + kryo.register(pair.getValue0(), new UnshadedSerializerAdapter((SerializerShim) pair.getValue1())); + else if (pair.getValue1() instanceof ShadedSerializerAdapter) + kryo.register(pair.getValue0(), new UnshadedSerializerAdapter(((ShadedSerializerAdapter) pair.getValue1()).getSerializerShim())); + else + kryo.register(pair.getValue0(), kryo.getDefaultSerializer(pair.getValue0())); + } + } } private LinkedHashMap<Class<?>, Serializer<?>> getExtraRegistrations() { http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f851e86c/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/gryo/IoRegistryAwareKryoSerializer.java ---------------------------------------------------------------------- diff --git a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/gryo/IoRegistryAwareKryoSerializer.java b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/gryo/IoRegistryAwareKryoSerializer.java deleted file mode 100644 index 44a7464..0000000 --- a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/gryo/IoRegistryAwareKryoSerializer.java +++ /dev/null @@ -1,81 +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. - */ - -/** - * Copyright DataStax, Inc. - * <p> - * Please see the included license file for details. - */ -package org.apache.tinkerpop.gremlin.spark.structure.io.gryo; - -import com.esotericsoftware.kryo.Kryo; -import org.apache.commons.configuration.BaseConfiguration; -import org.apache.commons.configuration.Configuration; -import org.apache.spark.SparkConf; -import org.apache.spark.serializer.KryoSerializer; -import org.apache.tinkerpop.gremlin.spark.structure.io.gryo.kryoshim.unshaded.UnshadedSerializerAdapter; -import org.apache.tinkerpop.gremlin.structure.io.IoRegistry; -import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoMapper; -import org.apache.tinkerpop.gremlin.structure.io.gryo.TypeRegistration; -import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.shaded.ShadedSerializerAdapter; -import org.apache.tinkerpop.gremlin.structure.io.util.IoRegistryHelper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.ArrayList; -import java.util.List; - -/** - * A {@link KryoSerializer} that attempts to honor {@link IoRegistry#IO_REGISTRY}. - */ -public final class IoRegistryAwareKryoSerializer extends KryoSerializer { - - private static final Logger log = LoggerFactory.getLogger(IoRegistryAwareKryoSerializer.class); - - private final List<TypeRegistration<?>> typeRegistrations = new ArrayList<>(); - - public IoRegistryAwareKryoSerializer(final SparkConf configuration) { - super(configuration); - if (!configuration.contains(IoRegistry.IO_REGISTRY)) - log.info("SparkConf does not contain a {} property. Skipping {} processing.", IoRegistry.IO_REGISTRY, IoRegistry.class.getCanonicalName()); - else { - final Configuration apacheConfiguration = new BaseConfiguration(); - apacheConfiguration.setProperty(IoRegistry.IO_REGISTRY, configuration.get(IoRegistry.IO_REGISTRY)); - final GryoMapper mapper = GryoMapper.build().addRegistries(IoRegistryHelper.createRegistries(apacheConfiguration)).create(); - for (final TypeRegistration<?> type : mapper.getTypeRegistrations()) { - log.info("Registering {} with serializer type: {}", type.getTargetClass().getCanonicalName(), type); - this.typeRegistrations.add(type); - } - } - } - - @Override - public Kryo newKryo() { - final Kryo kryo = super.newKryo(); - for (final TypeRegistration<?> type : this.typeRegistrations) { - if (null != type.getSerializerShim()) - kryo.register(type.getTargetClass(), new UnshadedSerializerAdapter(type.getSerializerShim()), type.getId()); - else if (null != type.getShadedSerializer() && type.getShadedSerializer() instanceof ShadedSerializerAdapter) - kryo.register(type.getTargetClass(), new UnshadedSerializerAdapter(((ShadedSerializerAdapter) type.getShadedSerializer()).getSerializerShim()), type.getId()); - else - kryo.register(type.getTargetClass(), kryo.getDefaultSerializer(type.getTargetClass()), type.getId()); - } - return kryo; - } -} http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f851e86c/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/gryo/kryoshim/unshaded/UnshadedKryoShimService.java ---------------------------------------------------------------------- diff --git a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/gryo/kryoshim/unshaded/UnshadedKryoShimService.java b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/gryo/kryoshim/unshaded/UnshadedKryoShimService.java index 0998a9f..3bfb32d 100644 --- a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/gryo/kryoshim/unshaded/UnshadedKryoShimService.java +++ b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/gryo/kryoshim/unshaded/UnshadedKryoShimService.java @@ -29,9 +29,8 @@ import com.esotericsoftware.kryo.io.Input; import com.esotericsoftware.kryo.io.Output; import org.apache.commons.configuration.Configuration; import org.apache.spark.SparkConf; -import org.apache.tinkerpop.gremlin.hadoop.Constants; +import org.apache.spark.serializer.KryoSerializer; import org.apache.tinkerpop.gremlin.spark.structure.Spark; -import org.apache.tinkerpop.gremlin.spark.structure.io.gryo.IoRegistryAwareKryoSerializer; import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoPool; import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.KryoShimService; @@ -104,16 +103,13 @@ public class UnshadedKryoShimService implements KryoShimService { // so we don't get a WARN that a new configuration is being created within an active context final SparkConf sparkConf = null == Spark.getContext() ? new SparkConf() : Spark.getContext().getConf().clone(); configuration.getKeys().forEachRemaining(key -> sparkConf.set(key, configuration.getProperty(key).toString())); - // Setting spark.serializer here almost certainly isn't necessary, but it doesn't hurt - sparkConf.set(Constants.SPARK_SERIALIZER, IoRegistryAwareKryoSerializer.class.getCanonicalName()); - // Instantiate the spark.serializer - final IoRegistryAwareKryoSerializer ioRegistrySerializer = new IoRegistryAwareKryoSerializer(sparkConf); + final KryoSerializer serializer = new KryoSerializer(sparkConf); // Setup a pool backed by our spark.serializer instance // Reuse Gryo poolsize for Kryo poolsize (no need to copy this to SparkConf) KRYOS.clear(); final int poolSize = configuration.getInt(GryoPool.CONFIG_IO_GRYO_POOL_SIZE, GryoPool.CONFIG_IO_GRYO_POOL_SIZE_DEFAULT); for (int i = 0; i < poolSize; i++) { - KRYOS.add(ioRegistrySerializer.newKryo()); + KRYOS.add(serializer.newKryo()); } INITIALIZED = true; } http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f851e86c/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/SparkGremlinGryoSerializerIntegrateTest.java ---------------------------------------------------------------------- diff --git a/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/SparkGremlinGryoSerializerIntegrateTest.java b/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/SparkGremlinGryoSerializerIntegrateTest.java deleted file mode 100644 index 6523592..0000000 --- a/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/SparkGremlinGryoSerializerIntegrateTest.java +++ /dev/null @@ -1,33 +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; - -import org.apache.tinkerpop.gremlin.GraphProviderClass; -import org.apache.tinkerpop.gremlin.hadoop.structure.HadoopGraph; -import org.apache.tinkerpop.gremlin.spark.process.computer.SparkHadoopGraphGryoSerializerProvider; -import org.junit.runner.RunWith; - -/** - * @author Marko A. Rodriguez (http://markorodriguez.com) - */ -@RunWith(SparkGremlinSuite.class) -@GraphProviderClass(provider = SparkHadoopGraphGryoSerializerProvider.class, graph = HadoopGraph.class) -public class SparkGremlinGryoSerializerIntegrateTest { -} http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f851e86c/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/SparkGremlinGryoSerializerTest.java ---------------------------------------------------------------------- diff --git a/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/SparkGremlinGryoSerializerTest.java b/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/SparkGremlinGryoSerializerTest.java new file mode 100644 index 0000000..7e7e78e --- /dev/null +++ b/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/SparkGremlinGryoSerializerTest.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; + +import org.apache.tinkerpop.gremlin.GraphProviderClass; +import org.apache.tinkerpop.gremlin.hadoop.structure.HadoopGraph; +import org.apache.tinkerpop.gremlin.spark.process.computer.SparkHadoopGraphGryoSerializerProvider; +import org.junit.runner.RunWith; + +/** + * @author Marko A. Rodriguez (http://markorodriguez.com) + */ +@RunWith(SparkGremlinSuite.class) +@GraphProviderClass(provider = SparkHadoopGraphGryoSerializerProvider.class, graph = HadoopGraph.class) +public class SparkGremlinGryoSerializerTest { +} http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f851e86c/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/SparkGremlinIntegrateTest.java ---------------------------------------------------------------------- diff --git a/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/SparkGremlinIntegrateTest.java b/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/SparkGremlinIntegrateTest.java deleted file mode 100644 index f8075ee..0000000 --- a/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/SparkGremlinIntegrateTest.java +++ /dev/null @@ -1,33 +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; - -import org.apache.tinkerpop.gremlin.GraphProviderClass; -import org.apache.tinkerpop.gremlin.hadoop.structure.HadoopGraph; -import org.apache.tinkerpop.gremlin.spark.process.computer.SparkHadoopGraphProvider; -import org.junit.runner.RunWith; - -/** - * @author Marko A. Rodriguez (http://markorodriguez.com) - */ -@RunWith(SparkGremlinSuite.class) -@GraphProviderClass(provider = SparkHadoopGraphProvider.class, graph = HadoopGraph.class) -public class SparkGremlinIntegrateTest { -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f851e86c/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/SparkGremlinTest.java ---------------------------------------------------------------------- diff --git a/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/SparkGremlinTest.java b/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/SparkGremlinTest.java new file mode 100644 index 0000000..cce9784 --- /dev/null +++ b/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/SparkGremlinTest.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; + +import org.apache.tinkerpop.gremlin.GraphProviderClass; +import org.apache.tinkerpop.gremlin.hadoop.structure.HadoopGraph; +import org.apache.tinkerpop.gremlin.spark.process.computer.SparkHadoopGraphProvider; +import org.junit.runner.RunWith; + +/** + * @author Marko A. Rodriguez (http://markorodriguez.com) + */ +@RunWith(SparkGremlinSuite.class) +@GraphProviderClass(provider = SparkHadoopGraphProvider.class, graph = HadoopGraph.class) +public class SparkGremlinTest { +} \ No newline at end of file
