You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by ok...@apache.org on 2015/06/18 17:39:14 UTC
incubator-tinkerpop git commit: Just realized that GroovyMatchTest
did not use TraversalScriptHelper. Fixed. Added an AND/OR nested traversal to
MatchTest. MatchAlgorithm needed to implement Serialzable to execute on
Giraph and Spark. Tested on Spark and
Repository: incubator-tinkerpop
Updated Branches:
refs/heads/master 2f8026341 -> e00721d86
Just realized that GroovyMatchTest did not use TraversalScriptHelper. Fixed. Added an AND/OR nested traversal to MatchTest. MatchAlgorithm needed to implement Serialzable to execute on Giraph and Spark. Tested on Spark and Giraph -- all golden.
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/e00721d8
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/e00721d8
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/e00721d8
Branch: refs/heads/master
Commit: e00721d86bdb5057ca126a0b9ee1c57544f69dec
Parents: 2f80263
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Thu Jun 18 09:39:10 2015 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Thu Jun 18 09:39:10 2015 -0600
----------------------------------------------------------------------
.../process/traversal/step/map/MatchStep.java | 3 +-
.../traversal/util/TraversalScriptHelper.java | 2 +-
.../traversal/step/filter/GroovyHasTest.groovy | 2 +-
.../traversal/step/map/GroovyMatchTest.groovy | 111 ++++++++++++++-----
.../process/traversal/step/map/MatchTest.java | 42 +++++--
.../gremlin/hadoop/structure/HadoopGraph.java | 12 ++
6 files changed, 134 insertions(+), 38 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/e00721d8/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchStep.java
index 69f30a6..691fe8b 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchStep.java
@@ -44,6 +44,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
+import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
@@ -399,7 +400,7 @@ public final class MatchStep<S, E> extends ComputerAwareStep<S, Map<String, E>>
//////////////////////////////
- public interface MatchAlgorithm extends Function<Traverser.Admin<Object>, Traversal.Admin<Object, Object>> {
+ public interface MatchAlgorithm extends Function<Traverser.Admin<Object>, Traversal.Admin<Object, Object>>, Serializable {
public static Set<String> getRequiredLabels(final Traversal.Admin<Object, Object> traversal) {
final Step<?, ?> startStep = traversal.getStartStep();
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/e00721d8/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 ac49650..1998512 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
@@ -49,7 +49,7 @@ public final class TraversalScriptHelper {
return new TraversalScriptFunction<S, E>(builder, scriptEngineName, traversalScript, bindings).apply(graph);
}
} catch (final Exception e) {
- throw new IllegalArgumentException(e.getMessage(), e);
+ throw new IllegalStateException(e.getMessage(), e);
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/e00721d8/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyHasTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyHasTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyHasTest.groovy
index dc21a98..3d71644 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyHasTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyHasTest.groovy
@@ -56,7 +56,7 @@ public abstract class GroovyHasTest {
@Override
public Traversal<Vertex, Vertex> get_g_V_hasXname_blahX() {
- TraversalScriptHelper.compute(" g.V.has('name', 'blah')", g);
+ TraversalScriptHelper.compute("g.V.has('name', 'blah')", g);
}
@Override
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/e00721d8/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMatchTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMatchTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMatchTest.groovy
index f365c18..2cc1879 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMatchTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMatchTest.groovy
@@ -18,12 +18,16 @@
*/
package org.apache.tinkerpop.gremlin.process.traversal.step.map
+import org.apache.tinkerpop.gremlin.process.traversal.P
import org.apache.tinkerpop.gremlin.process.traversal.Traversal
import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
import org.apache.tinkerpop.gremlin.structure.T
import org.apache.tinkerpop.gremlin.structure.Vertex
-import static org.apache.tinkerpop.gremlin.process.traversal.P.neq;
+import static org.apache.tinkerpop.gremlin.process.traversal.P.neq
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.or
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.where;
/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -34,151 +38,202 @@ public abstract class GroovyMatchTest {
@Override
public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa_out_bX() {
- g.V().match('a', __.as('a').out().as('b'));
+ TraversalScriptHelper.compute("g.V.match('a', __.as('a').out.as('b'))", g)
}
@Override
public Traversal<Vertex, Object> get_g_V_matchXa_out_bX_selectXb_idX() {
- g.V().match('a', __.as('a').out().as('b')).select('b').by(T.id)
+ TraversalScriptHelper.compute("g.V.match('a', __.as('a').out.as('b')).select('b').by(id)", g)
}
@Override
public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa_knows_b__b_created_cX() {
- g.V().match('a',
+ TraversalScriptHelper.compute("""
+ g.V.match('a',
__.as('a').out('knows').as('b'),
__.as('b').out('created').as('c'))
+ """, g)
}
@Override
public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa_knows_b__a_created_cX() {
- return g.V().match('a',
+ TraversalScriptHelper.compute("""
+ g.V.match('a',
__.as('a').out('knows').as('b'),
- __.as('a').out('created').as('c'));
+ __.as('a').out('created').as('c'))
+ """, g)
}
@Override
public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXd_0knows_a__d_hasXname_vadasX__a_knows_b__b_created_cX() {
- return g.V().match('d',
+ TraversalScriptHelper.compute("""
+ g.V.match('d',
__.as('d').in('knows').as('a'),
__.as('d').has('name', 'vadas'),
__.as('a').out('knows').as('b'),
- __.as('b').out('created').as('c'));
+ __.as('b').out('created').as('c'))
+ """, g)
}
@Override
public Traversal<Vertex, Map<String, String>> get_g_V_matchXa_created_b__a_repeatXoutX_timesX2XX_selectXab_nameX() {
- g.V().match('a',
+ TraversalScriptHelper.compute("""
+ g.V.match('a',
__.as('a').out('created').as('b'),
__.as('a').repeat(__.out).times(2).as('b')).select('a', 'b').by('name')
+ """, g)
}
@Override
public Traversal<Vertex, Map<String, String>> get_g_V_matchXa_created_lop_b__b_0created_29_c__c_repeatXoutX_timesX2XX_selectXnameX() {
- g.V().match('a',
+ TraversalScriptHelper.compute("""
+ g.V.match('a',
__.as('a').out('created').has('name', 'lop').as('b'),
__.as('b').in('created').has('age', 29).as('c'),
__.as('c').repeat(__.out).times(2)).select.by('name')
+ """, g)
}
@Override
public Traversal<Vertex, String> get_g_V_out_out_matchXa_0created_b__b_0knows_cX_selectXcX_outXcreatedX_name() {
- g.V().out().out().match('a',
+ TraversalScriptHelper.compute("""
+ g.V.out.out.match('a',
__.as('a').in('created').as('b'),
__.as('b').in('knows').as('c')).select('c').out('created').name
+ """, g)
}
@Override
public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa_created_b__b_0created_aX() {
- g.V().match('a',
+ TraversalScriptHelper.compute("""
+ g.V.match('a',
__.as('a').out('created').as('b'),
__.as('b').in('created').as('a'))
+ """, g)
}
@Override
public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa_knows_b__c_knows_bX() {
- return g.V().match('a', __.as('a').out('knows').as('b'),
- __.as('c').out('knows').as('b'));
+ TraversalScriptHelper.compute("""
+ g.V().match('a',
+ __.as('a').out('knows').as('b'),
+ __.as('c').out('knows').as('b'))
+ """, g)
}
@Override
public Traversal<Vertex, Map<String, String>> get_g_V_matchXa_knows_b__b_created_lop__b_matchXa1_created_b1__b1_0created_c1X_selectXc1X_cX_selectXnameX() {
- g.V().match('a',
+ TraversalScriptHelper.compute("""
+ g.V.match('a',
__.as('a').out('knows').as('b'),
__.as('b').out('created').has('name', 'lop'),
__.as('b').match('a1',
__.as('a1').out('created').as('b1'),
__.as('b1').in('created').as('c1')).select('c1').as('c')).select.by('name')
+ """, g)
}
@Override
public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa_hasXname_GarciaX__a_0writtenBy_b__a_0sungBy_bX() {
- g.V().match('a',
+ TraversalScriptHelper.compute("""
+ g.V.match('a',
__.as('a').has('name', 'Garcia'),
__.as('a').in('writtenBy').as('b'),
__.as('a').in('sungBy').as('b'));
+ """, g)
}
@Override
public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa_0sungBy_b__a_0sungBy_c__b_writtenBy_d__c_writtenBy_e__d_hasXname_George_HarisonX__e_hasXname_Bob_MarleyXX() {
- g.V().match('a',
+ TraversalScriptHelper.compute("""
+ g.V.match('a',
__.as('a').in('sungBy').as('b'),
__.as('a').in('sungBy').as('c'),
__.as('b').out('writtenBy').as('d'),
__.as('c').out('writtenBy').as('e'),
__.as('d').has('name', 'George_Harrison'),
- __.as('e').has('name', 'Bob_Marley'));
+ __.as('e').has('name', 'Bob_Marley'))
+ """, g)
}
@Override
public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa_0sungBy_b__a_0writtenBy_c__b_writtenBy_d__c_sungBy_d__d_hasXname_GarciaXX() {
- g.V().match('a',
+ TraversalScriptHelper.compute("""
+ g.V.match('a',
__.as('a').in('sungBy').as('b'),
__.as('a').in('writtenBy').as('c'),
__.as('b').out('writtenBy').as('d'),
__.as('c').out('sungBy').as('d'),
- __.as('d').has('name', 'Garcia'));
+ __.as('d').has('name', 'Garcia'))
+ """, g)
}
@Override
public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa_0sungBy_b__a_0writtenBy_c__b_writtenBy_dX_whereXc_sungBy_dX_whereXd_hasXname_GarciaXX() {
- return g.V().match('a',
+ TraversalScriptHelper.compute("""
+ g.V.match('a',
__.as('a').in('sungBy').as('b'),
__.as('a').in('writtenBy').as('c'),
__.as('b').out('writtenBy').as('d'))
.where(__.as('c').out('sungBy').as('d'))
.where(__.as('d').has('name', 'Garcia'));
+ """, g)
}
@Override
public Traversal<Vertex, Map<String, String>> get_g_V_matchXa_created_lop_b__b_0created_29_cX_whereXc_repeatXoutX_timesX2XX_selectXnameX() {
- g.V().match("a",
+ TraversalScriptHelper.compute("""
+ g.V.match("a",
__.as("a").out("created").has("name", "lop").as("b"),
__.as("b").in("created").has("age", 29).as("c"))
- .where(__.as("c").repeat(__.out()).times(2))
- .select().by('name')
+ .where(__.as("c").repeat(__.out).times(2))
+ .select.by('name')
+ """,g)
}
@Override
public Traversal<Vertex, Map<String, String>> get_g_V_matchXa_created_b__b_0created_cX_whereXa_neq_cX_selectXa_c_nameX() {
- g.V().match('a',
+ TraversalScriptHelper.compute("""
+ g.V.match('a',
__.as('a').out('created').as('b'),
__.as('b').in('created').as('c'))
.where('a', neq('c'))
.select('a', 'c').by('name')
+ """,g)
}
@Override
public Traversal<Vertex, Map<String, String>> get_g_V_matchXa_created_b__c_created_bX_select_byXnameX() {
- g.V.match('a',
+ TraversalScriptHelper.compute("""
+ g.V.match('a',
__.as('a').out('created').as('b'),
- __.as('c').out('created').as('b')).select { it.value('name') }
+ __.as('c').out('created').as('b')).select().by('name')
+ """,g)
}
@Override
public Traversal<Vertex, String> get_g_V_out_out_hasXname_rippleX_matchXb_created_a__c_knows_bX_selectXcX_outXknowsX_name() {
- g.V.out.out.match('a',
+ TraversalScriptHelper.compute("""
+ g.V.out.out.match('a',
__.as('b').out('created').as('a'),
__.as('c').out('knows').as('b')).select('c').out('knows').name
+ """,g)
+ }
+
+ @Override
+ public Traversal<Vertex, Map<String, Object>> get_g_V_matchXa_whereXa_neqXcXX__a_created_b__orXa_knows_vadas__a_0knows_and_a_hasXlabel_personXX__b_0created_c__b_0created_count_isXgtX1XXX_select_byXidX() {
+ TraversalScriptHelper.compute("""
+ g.V().match('a',
+ where('a', neq('c')),
+ __.as('a').out('created').as('b'),
+ or(
+ __.as('a').out('knows').has('name', 'vadas'),
+ __.as('a').in('knows').and.as('a').has(label, 'person')
+ ),
+ __.as('b').in('created').as('c'),
+ __.as('b').in('created').count.is(gt(1)))
+ .select.by(id);
+ """,g)
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/e00721d8/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchTest.java
index d1c2945..05d5ae0 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchTest.java
@@ -21,13 +21,13 @@ package org.apache.tinkerpop.gremlin.process.traversal.step.map;
import org.apache.tinkerpop.gremlin.LoadGraphWith;
import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
import org.apache.tinkerpop.gremlin.process.GremlinProcessRunner;
-import org.apache.tinkerpop.gremlin.process.IgnoreEngine;
+import org.apache.tinkerpop.gremlin.process.traversal.P;
import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
import org.apache.tinkerpop.gremlin.process.traversal.step.util.MapHelper;
import org.apache.tinkerpop.gremlin.structure.T;
import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -39,8 +39,7 @@ import java.util.Map;
import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.GRATEFUL;
import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
import static org.apache.tinkerpop.gremlin.process.traversal.P.neq;
-import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.as;
-import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.out;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.*;
import static org.junit.Assert.*;
/**
@@ -103,6 +102,9 @@ public abstract class MatchTest extends AbstractGremlinProcessTest {
//TODO: with Traversal.reverse()
public abstract Traversal<Vertex, String> get_g_V_out_out_hasXname_rippleX_matchXb_created_a__c_knows_bX_selectXcX_outXknowsX_name();
+ // nested or/and with patterns in order that won't execute serially
+ public abstract Traversal<Vertex,Map<String,Object>> get_g_V_matchXa_whereXa_neqXcXX__a_created_b__orXa_knows_vadas__a_0knows_and_a_hasXlabel_personXX__b_0created_c__b_0created_count_isXgtX1XXX_select_byXidX();
+
@Test
@LoadGraphWith(MODERN)
public void g_V_matchXa_out_bX() throws Exception {
@@ -187,7 +189,7 @@ public abstract class MatchTest extends AbstractGremlinProcessTest {
public void g_V_matchXa_created_lop_b__b_0created_29_cX_whereXc_repeatXoutX_timesX2XX_selectXnameX() throws Exception {
final List<Traversal<Vertex, Map<String, String>>> traversals = Arrays.asList(
get_g_V_matchXa_created_lop_b__b_0created_29_c__c_repeatXoutX_timesX2XX_selectXnameX());
- //get_g_V_matchXa_created_lop_b__b_0created_29_cX_whereXc_repeatXoutX_timesX2XX_selectXnameX()); // todo: predicate traversals are local traversals?
+ //get_g_V_matchXa_created_lop_b__b_0created_29_cX_whereXc_repeatXoutX_timesX2XX_selectXnameX()); // todo: predicate traversals are local traversals?
traversals.forEach(traversal -> {
printTraversalForm(traversal);
checkResults(makeMapList(3,
@@ -228,7 +230,7 @@ public abstract class MatchTest extends AbstractGremlinProcessTest {
@Test(expected = IllegalStateException.class)
@LoadGraphWith(MODERN)
public void g_V_matchXa_knows_b__c_knows_bX() {
- final Traversal<Vertex, Map<String, Vertex>> traversal = get_g_V_matchXa_knows_b__c_knows_bX();
+ final Traversal<Vertex, Map<String, Vertex>> traversal = get_g_V_matchXa_knows_b__c_knows_bX();
printTraversalForm(traversal);
traversal.iterate();
}
@@ -305,7 +307,7 @@ public abstract class MatchTest extends AbstractGremlinProcessTest {
public void g_V_matchXa_0sungBy_b__a_0writtenBy_c__b_writtenBy_d__c_sungBy_d__d_hasXname_GarciaXX() throws Exception {
final List<Traversal<Vertex, Map<String, Vertex>>> traversals = Arrays.asList(
get_g_V_matchXa_0sungBy_b__a_0writtenBy_c__b_writtenBy_d__c_sungBy_d__d_hasXname_GarciaXX());
- //get_g_V_matchXa_0sungBy_b__a_0writtenBy_c__b_writtenBy_dX_whereXc_sungBy_dX_whereXd_hasXname_GarciaXX()); // TODO: the where() is trying to get Garcia's name. Why is ComputerVerificationStrategy allowing this?
+ //get_g_V_matchXa_0sungBy_b__a_0writtenBy_c__b_writtenBy_dX_whereXc_sungBy_dX_whereXd_hasXname_GarciaXX()); // TODO: the where() is trying to get Garcia's name. Why is ComputerVerificationStrategy allowing this?
traversals.forEach(traversal -> {
printTraversalForm(traversal);
@@ -319,6 +321,18 @@ public abstract class MatchTest extends AbstractGremlinProcessTest {
});
}
+ @Test
+ @LoadGraphWith(MODERN)
+ public void g_V_matchXa_whereXa_neqXcXX__a_created_b__orXa_knows_vadas__a_0knows_and_a_hasXlabel_personXX__b_0created_c__b_0created_count_isXgtX1XXX_select_byXidX() {
+ final Traversal<Vertex,Map<String,Object>> traversal = get_g_V_matchXa_whereXa_neqXcXX__a_created_b__orXa_knows_vadas__a_0knows_and_a_hasXlabel_personXX__b_0created_c__b_0created_count_isXgtX1XXX_select_byXidX();
+ printTraversalForm(traversal);
+ checkResults(makeMapList(3,
+ "a", convertToVertexId("marko"), "b", convertToVertexId("lop"), "c", convertToVertexId("josh"),
+ "a", convertToVertexId("marko"), "b", convertToVertexId("lop"), "c", convertToVertexId("peter"),
+ "a", convertToVertexId("josh"), "b", convertToVertexId("lop"), "c", convertToVertexId("marko"),
+ "a", convertToVertexId("josh"), "b", convertToVertexId("lop"), "c", convertToVertexId("peter")),traversal);
+ }
+
public static class Traversals extends MatchTest {
@Override
public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa_out_bX() {
@@ -468,5 +482,19 @@ public abstract class MatchTest extends AbstractGremlinProcessTest {
as("c").out("knows").as("b")).select("c").out("knows").values("name");
}
+ @Override
+ public Traversal<Vertex,Map<String,Object>> get_g_V_matchXa_whereXa_neqXcXX__a_created_b__orXa_knows_vadas__a_0knows_and_a_hasXlabel_personXX__b_0created_c__b_0created_count_isXgtX1XXX_select_byXidX() {
+ return g.V().match("a",
+ where("a", P.neq("c")),
+ as("a").out("created").as("b"),
+ or(
+ as("a").out("knows").has("name", "vadas"),
+ as("a").in("knows").and().as("a").has(T.label,"person")
+ ),
+ as("b").in("created").as("c"),
+ as("b").in("created").count().is(P.gt(1)))
+ .select().by(T.id);
+ }
+
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/e00721d8/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/HadoopGraph.java
----------------------------------------------------------------------
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/HadoopGraph.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/HadoopGraph.java
index 469785f..25d11af 100644
--- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/HadoopGraph.java
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/HadoopGraph.java
@@ -70,6 +70,18 @@ import java.util.stream.Stream;
reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.")
@Graph.OptOut(
test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyMatchTest$Traversals",
+ method = "g_V_matchXa_knows_b__c_knows_bX",
+ reason = "Giraph does a hard kill on failure and stops threads which stops test cases. Exception handling semantics are correct though.")
+@Graph.OptOut(
+ test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyMatchTest$Traversals",
+ method = "g_V_matchXa_created_b__c_created_bX_selectXnameX",
+ reason = "Giraph does a hard kill on failure and stops threads which stops test cases. Exception handling semantics are correct though.")
+@Graph.OptOut(
+ test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyMatchTest$Traversals",
+ method = "g_V_out_out_hasXname_rippleX_matchXb_created_a__c_knows_bX_selectXcX_outXknowsX_name",
+ reason = "Giraph does a hard kill on failure and stops threads which stops test cases. Exception handling semantics are correct though.")
+@Graph.OptOut(
+ test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyMatchTest$Traversals",
method = "g_V_matchXa_0sungBy_b__a_0sungBy_c__b_writtenBy_d__c_writtenBy_e__d_hasXname_George_HarisonX__e_hasXname_Bob_MarleyXX",
reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.")
@Graph.OptOut(