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

[15/17] incubator-tinkerpop git commit: stoked! much implementation for GremlinProcessRunner

stoked! much implementation for GremlinProcessRunner


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

Branch: refs/heads/master
Commit: ae5022e08c90e7d5095367f6f0df446686c85e95
Parents: 3c6eb61
Author: Daniel Kuppitz <da...@hotmail.com>
Authored: Tue May 12 04:12:23 2015 +0200
Committer: Daniel Kuppitz <da...@hotmail.com>
Committed: Tue May 12 04:12:23 2015 +0200

----------------------------------------------------------------------
 .../gremlin/process/computer/VertexProgram.java |  3 -
 .../traversal/util/TraversalScriptHelper.java   |  5 +-
 .../gremlin/process/GremlinProcessRunner.java   | 71 +++++++++-----------
 3 files changed, 34 insertions(+), 45 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/ae5022e0/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/VertexProgram.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/VertexProgram.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/VertexProgram.java
index 86a05fc..4fd9e82 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/VertexProgram.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/VertexProgram.java
@@ -20,7 +20,6 @@
 package org.apache.tinkerpop.gremlin.process.computer;
 
 import org.apache.commons.configuration.Configuration;
-import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.ComputerVerificationException;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 
@@ -217,8 +216,6 @@ public interface VertexProgram<M> extends Cloneable {
             final V vertexProgram = constructor.newInstance();
             vertexProgram.loadState(graph, configuration);
             return vertexProgram;
-        } catch (final ComputerVerificationException e) {
-            throw e;
         } catch (final Exception e) {
             throw new IllegalStateException(e.getMessage(), e);
         }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/ae5022e0/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalScriptHelper.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalScriptHelper.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalScriptHelper.java
index cd3355b..ac49650 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalScriptHelper.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalScriptHelper.java
@@ -23,7 +23,6 @@ import org.apache.tinkerpop.gremlin.process.computer.traversal.TraversalVertexPr
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalSource;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
-import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.ComputerVerificationException;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 
 /**
@@ -49,10 +48,8 @@ public final class TraversalScriptHelper {
             } else {
                 return new TraversalScriptFunction<S, E>(builder, scriptEngineName, traversalScript, bindings).apply(graph);
             }
-        } catch (final ComputerVerificationException e) {
-            throw e;
         } catch (final Exception e) {
-            throw new IllegalArgumentException(e.getMessage());
+            throw new IllegalArgumentException(e.getMessage(), e);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/ae5022e0/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/GremlinProcessRunner.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/GremlinProcessRunner.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/GremlinProcessRunner.java
index 1d10114..6c3f9ea 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/GremlinProcessRunner.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/GremlinProcessRunner.java
@@ -18,12 +18,14 @@
  */
 package org.apache.tinkerpop.gremlin.process;
 
-import org.apache.tinkerpop.gremlin.AbstractGremlinTest;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.ComputerVerificationException;
+import org.junit.internal.AssumptionViolatedException;
+import org.junit.internal.runners.model.EachTestNotifier;
+import org.junit.runner.Description;
+import org.junit.runner.notification.RunNotifier;
 import org.junit.runners.BlockJUnit4ClassRunner;
 import org.junit.runners.model.FrameworkMethod;
 import org.junit.runners.model.InitializationError;
-import org.junit.runners.model.Statement;
 
 /**
  * @author Daniel Kuppitz (http://gremlin.guru)
@@ -35,45 +37,38 @@ public class GremlinProcessRunner extends BlockJUnit4ClassRunner {
     }
 
     @Override
-    protected Statement possiblyExpectingExceptions(final FrameworkMethod method, final Object test, final Statement next) {
-        org.junit.Test annotation = method.getAnnotation(org.junit.Test.class);
-        return new ExpectComputerVerificationException(next, (AbstractGremlinTest) test,
-                annotation != null ? annotation.expected() : org.junit.Test.None.class);
-    }
-
-    class ExpectComputerVerificationException extends Statement {
-
-        private Statement next;
-        private AbstractGremlinTest test;
-        private final Class<? extends Throwable> expected;
-
-        public ExpectComputerVerificationException(final Statement next, final AbstractGremlinTest test,
-                                                   final Class<? extends Throwable> expected) {
-            this.next = next;
-            this.test = test;
-            this.expected = expected;
-        }
-
-        @Override
-        public void evaluate() throws Throwable {
-            boolean complete = false;
+    public void runChild(final FrameworkMethod method, final RunNotifier notifier) {
+        final Description description = describeChild(method);
+        if (this.isIgnored(method)) {
+            notifier.fireTestIgnored(description);
+        } else {
+            EachTestNotifier eachNotifier = new EachTestNotifier(notifier, description);
+            eachNotifier.fireTestStarted();
+            boolean ignored = false;
             try {
-                next.evaluate();
-                complete = true;
-            } catch (ComputerVerificationException e) {
-                if (!test.isComputerTest()) throw e;
-                final boolean muted = Boolean.parseBoolean(System.getProperty("muteTestLogs", "false"));
-                if (!muted) System.out.println(String.format(
-                        "The following traversal is not valid for computer execution: %s",
-                        e.getTraversal()));
+                this.methodBlock(method).evaluate();
+            } catch (AssumptionViolatedException ave) {
+                eachNotifier.addFailedAssumption(ave);
             } catch (Throwable e) {
-                if (!expected.isAssignableFrom(e.getClass())) {
-                    throw e;
-                }
-            }
-            if (complete && !expected.equals(org.junit.Test.None.class)) {
-                throw new AssertionError("Expected exception: " + expected.getName());
+                if (isComputerVerificationException(e)) {
+                    eachNotifier.fireTestIgnored();
+                    ignored = true;
+                } else
+                    eachNotifier.addFailure(e);
+            } finally {
+                if (!ignored)
+                    eachNotifier.fireTestFinished();
             }
         }
     }
+
+    private static boolean isComputerVerificationException(final Throwable e) {
+        Throwable ex = e;
+        while (ex != null) {
+            if (ex instanceof ComputerVerificationException)
+                return true;
+            ex = ex.getCause();
+        }
+        return false;
+    }
 }