Repository: tinkerpop
Updated Branches:
  refs/heads/TINKERPOP-1278 fde51ac58 -> 9a16f766d


added a gremlin process test to ensure that parallel translators don't 
interfere with one another.


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

Branch: refs/heads/TINKERPOP-1278
Commit: 9a16f766d0a45bffe7104101519dfd330fe97dca
Parents: fde51ac
Author: Marko A. Rodriguez <[email protected]>
Authored: Tue Jun 14 13:27:54 2016 -0600
Committer: Marko A. Rodriguez <[email protected]>
Committed: Tue Jun 14 13:27:54 2016 -0600

----------------------------------------------------------------------
 .../process/traversal/TraversalStrategies.java  |  5 ++
 .../gremlin/process/ProcessComputerSuite.java   |  4 ++
 .../gremlin/process/ProcessStandardSuite.java   |  8 ++-
 .../TranslationStrategyProcessTest.java         | 67 ++++++++++++++++++++
 4 files changed, 82 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/9a16f766/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 8eccc04..92e0f96 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
@@ -45,6 +45,7 @@ import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Optional;
 import java.util.Set;
 import java.util.stream.Collectors;
 
@@ -75,6 +76,10 @@ public interface TraversalStrategies extends Serializable, 
Cloneable {
         return (List<T>) toList().stream().filter(s -> 
traversalStrategyClass.isAssignableFrom(s.getClass())).collect(Collectors.toList());
     }
 
+    public default <T extends TraversalStrategy> Optional<T> getStrategy(final 
Class<T> traversalStrategyClass) {
+        return (Optional) toList().stream().filter(s -> 
traversalStrategyClass.isAssignableFrom(s.getClass())).findAny();
+    }
+
     /**
      * Apply all the {@link TraversalStrategy} optimizers to the {@link 
Traversal} for the stated {@link TraversalEngine}.
      * This method must ensure that the strategies are sorted prior to 
application.

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/9a16f766/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessComputerSuite.java
----------------------------------------------------------------------
diff --git 
a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessComputerSuite.java
 
b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessComputerSuite.java
index d8021eb..2c404b3 100644
--- 
a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessComputerSuite.java
+++ 
b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessComputerSuite.java
@@ -86,6 +86,7 @@ import 
org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.SideEffect
 import 
org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.StoreTest;
 import 
org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.SubgraphTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.TreeTest;
+import 
org.apache.tinkerpop.gremlin.process.traversal.strategy.creation.TranslationStrategyProcessTest;
 import 
org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategyProcessTest;
 import 
org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.ReadOnlyStrategyProcessTest;
 import org.apache.tinkerpop.gremlin.structure.Graph;
@@ -192,6 +193,9 @@ public class ProcessComputerSuite extends 
AbstractGremlinSuite {
             BulkLoaderVertexProgramTest.class,
             BulkDumperVertexProgramTest.class,
 
+            // creations
+            TranslationStrategyProcessTest.class,
+
             // decorations
             ReadOnlyStrategyProcessTest.class,
             SubgraphStrategyProcessTest.class

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/9a16f766/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessStandardSuite.java
----------------------------------------------------------------------
diff --git 
a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessStandardSuite.java
 
b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessStandardSuite.java
index ccfb1ef..e21a1ca 100644
--- 
a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessStandardSuite.java
+++ 
b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessStandardSuite.java
@@ -80,6 +80,7 @@ import 
org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.SideEffect
 import 
org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.StoreTest;
 import 
org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.SubgraphTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.TreeTest;
+import 
org.apache.tinkerpop.gremlin.process.traversal.strategy.creation.TranslationStrategyProcessTest;
 import 
org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.ElementIdStrategyProcessTest;
 import 
org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.EventStrategyProcessTest;
 import 
org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.PartitionStrategyProcessTest;
@@ -106,7 +107,7 @@ public class ProcessStandardSuite extends 
AbstractGremlinSuite {
      */
     private static final Class<?>[] allTests = new Class<?>[]{
             // branch
-            BranchTest.Traversals.class,
+            /*BranchTest.Traversals.class,
             ChooseTest.Traversals.class,
             OptionalTest.Traversals.class,
             LocalTest.Traversals.class,
@@ -174,7 +175,10 @@ public class ProcessStandardSuite extends 
AbstractGremlinSuite {
 
             // compliance
             CoreTraversalTest.class,
-            TraversalInterruptionTest.class,
+            TraversalInterruptionTest.class,*/
+
+            // creations
+            TranslationStrategyProcessTest.class,
 
             // decorations
             ElementIdStrategyProcessTest.class,

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/9a16f766/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/creation/TranslationStrategyProcessTest.java
----------------------------------------------------------------------
diff --git 
a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/creation/TranslationStrategyProcessTest.java
 
b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/creation/TranslationStrategyProcessTest.java
new file mode 100644
index 0000000..3234833
--- /dev/null
+++ 
b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/creation/TranslationStrategyProcessTest.java
@@ -0,0 +1,67 @@
+/*
+ *  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.strategy.creation;
+
+import org.apache.tinkerpop.gremlin.LoadGraphWith;
+import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
+import 
org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
+import static org.junit.Assert.assertEquals;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public class TranslationStrategyProcessTest extends AbstractGremlinProcessTest 
{
+    private static final Logger logger = 
LoggerFactory.getLogger(TranslationStrategyProcessTest.class);
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void shouldNotHaveAnonymousTraversalMixups() throws Exception {
+        if 
(!g.getStrategies().getStrategy(TranslationStrategy.class).isPresent()) {
+            logger.debug("No " + TranslationStrategy.class.getSimpleName() + " 
is registered and thus, skipping test.");
+            return;
+        }
+
+        final GraphTraversalSource a = g;
+        final GraphTraversalSource b = 
g.withoutStrategies(TranslationStrategy.class);
+
+        assert 
a.getStrategies().getStrategy(TranslationStrategy.class).isPresent();
+        assert 
!b.getStrategies().getStrategy(TranslationStrategy.class).isPresent();
+
+        assertEquals(6l, a.V().out().count().next().longValue());
+        assertEquals(6l, b.V().out().count().next().longValue());
+
+        assert 
a.getStrategies().getStrategy(TranslationStrategy.class).isPresent();
+        assert 
!b.getStrategies().getStrategy(TranslationStrategy.class).isPresent();
+
+        assertEquals(2l, 
a.V().repeat(__.out()).times(2).count().next().longValue());
+        assertEquals(2l, 
b.V().repeat(__.out()).times(2).count().next().longValue());
+
+        assert 
a.getStrategies().getStrategy(TranslationStrategy.class).isPresent();
+        assert 
!b.getStrategies().getStrategy(TranslationStrategy.class).isPresent();
+
+    }
+
+}

Reply via email to