TINKERPOP-1878 Test cleanup for sparql-gremlin
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/a94172fe Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/a94172fe Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/a94172fe Branch: refs/heads/TINKERPOP-1878 Commit: a94172fe99536af30413934e60c01ce1434fa70c Parents: 199a963 Author: Stephen Mallette <sp...@genoprime.com> Authored: Fri Jan 26 08:10:48 2018 -0500 Committer: Stephen Mallette <sp...@genoprime.com> Committed: Mon Apr 23 14:21:04 2018 -0400 ---------------------------------------------------------------------- sparql-gremlin/pom.xml | 10 +- .../dsl/sparql/SparqlTraversalSource.java | 4 +- .../gremlin/sparql/ResourceHelper.java | 37 --- .../sparql/SparqlToGremlinCompilerTest.java | 223 ------------------- .../dsl/sparql/SparqlTraversalSourceTest.java | 31 ++- 5 files changed, 36 insertions(+), 269 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a94172fe/sparql-gremlin/pom.xml ---------------------------------------------------------------------- diff --git a/sparql-gremlin/pom.xml b/sparql-gremlin/pom.xml index 0e3da38..731b822 100644 --- a/sparql-gremlin/pom.xml +++ b/sparql-gremlin/pom.xml @@ -41,9 +41,13 @@ <scope>test</scope> </dependency> <dependency> - <groupId>org.apache.tinkerpop</groupId> - <artifactId>gremlin-test</artifactId> - <version>${project.version}</version> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.hamcrest</groupId> + <artifactId>hamcrest-all</artifactId> <scope>test</scope> </dependency> </dependencies> http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a94172fe/sparql-gremlin/src/main/java/org/apache/tinkerpop/gremlin/sparql/process/traversal/dsl/sparql/SparqlTraversalSource.java ---------------------------------------------------------------------- diff --git a/sparql-gremlin/src/main/java/org/apache/tinkerpop/gremlin/sparql/process/traversal/dsl/sparql/SparqlTraversalSource.java b/sparql-gremlin/src/main/java/org/apache/tinkerpop/gremlin/sparql/process/traversal/dsl/sparql/SparqlTraversalSource.java index deb16f7..cc54aa5 100644 --- a/sparql-gremlin/src/main/java/org/apache/tinkerpop/gremlin/sparql/process/traversal/dsl/sparql/SparqlTraversalSource.java +++ b/sparql-gremlin/src/main/java/org/apache/tinkerpop/gremlin/sparql/process/traversal/dsl/sparql/SparqlTraversalSource.java @@ -28,6 +28,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy; import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal; import org.apache.tinkerpop.gremlin.process.traversal.step.map.ConstantStep; import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.InjectStep; +import org.apache.tinkerpop.gremlin.sparql.process.traversal.strategy.SparqlStrategy; import org.apache.tinkerpop.gremlin.structure.Graph; import org.apache.tinkerpop.gremlin.structure.Transaction; import org.apache.tinkerpop.gremlin.structure.util.StringFactory; @@ -46,6 +47,7 @@ public class SparqlTraversalSource implements TraversalSource { public SparqlTraversalSource(final Graph graph, final TraversalStrategies traversalStrategies) { this.graph = graph; this.strategies = traversalStrategies; + this.strategies.addStrategies(SparqlStrategy.instance()); } public SparqlTraversalSource(final Graph graph) { @@ -122,7 +124,7 @@ public class SparqlTraversalSource implements TraversalSource { /** * The start step for a SPARQL based traversal that accepts a string representation of the query to execute. */ - public <S> SparqlTraversal<S,String> sparql(final String query) { + public <S> SparqlTraversal<S,?> sparql(final String query) { final SparqlTraversalSource clone = this.clone(); // this is a bit of a hack to get remote traversals to work cleanly. on the remote side, we'd expect a http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a94172fe/sparql-gremlin/src/test/java/org/apache/tinkerpop/gremlin/sparql/ResourceHelper.java ---------------------------------------------------------------------- diff --git a/sparql-gremlin/src/test/java/org/apache/tinkerpop/gremlin/sparql/ResourceHelper.java b/sparql-gremlin/src/test/java/org/apache/tinkerpop/gremlin/sparql/ResourceHelper.java deleted file mode 100644 index 4f58e61..0000000 --- a/sparql-gremlin/src/test/java/org/apache/tinkerpop/gremlin/sparql/ResourceHelper.java +++ /dev/null @@ -1,37 +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.sparql; - -import org.apache.commons.io.IOUtils; - -import java.io.IOException; -import java.io.InputStream; - -/** - * @author Daniel Kuppitz (http://gremlin.guru) - */ -public class ResourceHelper { - - public static String loadQuery(final String prefix, final int number) throws IOException { - final String path = "/queries/" + prefix + number + ".sparql"; - final InputStream stream = ResourceHelper.class.getResourceAsStream(path); - return IOUtils.toString(stream, "UTF-8"); - } -} http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a94172fe/sparql-gremlin/src/test/java/org/apache/tinkerpop/gremlin/sparql/SparqlToGremlinCompilerTest.java ---------------------------------------------------------------------- diff --git a/sparql-gremlin/src/test/java/org/apache/tinkerpop/gremlin/sparql/SparqlToGremlinCompilerTest.java b/sparql-gremlin/src/test/java/org/apache/tinkerpop/gremlin/sparql/SparqlToGremlinCompilerTest.java deleted file mode 100644 index 3fb49e8..0000000 --- a/sparql-gremlin/src/test/java/org/apache/tinkerpop/gremlin/sparql/SparqlToGremlinCompilerTest.java +++ /dev/null @@ -1,223 +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.sparql; - -import org.apache.tinkerpop.gremlin.process.traversal.Traversal; -import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal; -import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource; -import org.apache.tinkerpop.gremlin.structure.Graph; -import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerFactory; -import org.junit.Before; -import org.junit.Ignore; -import org.junit.Test; -import org.apache.tinkerpop.gremlin.process.computer.Computer; -import org.apache.tinkerpop.gremlin.structure.Vertex; -import static org.apache.tinkerpop.gremlin.sparql.SparqlToGremlinCompiler.convertToGremlinTraversal; -import static org.junit.Assert.assertEquals; - - -import java.io.IOException; - -import static org.apache.tinkerpop.gremlin.sparql.ResourceHelper.loadQuery; - - -public class SparqlToGremlinCompilerTest { - - private Graph modern, crew; - private GraphTraversalSource mg, cg; - private GraphTraversalSource mc, cc; -/* - @Before - public void setUp() throws Exception { - modern = TinkerFactory.createModern(); - mg = modern.traversal(); - mc = modern.traversal(computer()); - crew = TinkerFactory.createTheCrew(); - cg = modern.traversal(); - cc = modern.traversal(computer()); - } - - @Ignore - @Test - public void play() throws IOException { - final String query = loadQuery("modern", 11); - final Traversal traversal = convertToGremlinTraversal(modern, query); - System.out.println(traversal); - System.out.println(traversal.toList()); - System.out.println(traversal); - } - - /* Modern */ - - /* @Test - public void testModern1() throws Exception { - final GraphTraversal expected = mg.V().match( - as("a").hasLabel("person"), - as("a").out("knows").as("b"), - as("a").out("created").as("c"), - as("b").out("created").as("c"), - as("a").values("age").as("d")).where(as("d").is(lt(30))). - select("a", "b", "c"); - assertEquals(expected, convertToGremlinTraversal(modern, loadQuery("modern", 1))); - } - - @Test - public void testModern2() throws Exception { - final GraphTraversal expected = mg.V().match( - as("a").hasLabel("person"), - as("a").out("knows").as("b"), - as("a").out("created").as("c"), - as("b").out("created").as("c"), - as("a").values("age").as("d")).where(as("d").is(lt(30))); - assertEquals(expected, convertToGremlinTraversal(modern, loadQuery("modern", 2))); - } - - @Test - public void testModern3() throws Exception { - final GraphTraversal expected = mg.V().match( - as("person").values("name").as("name"), - as("person").values("age").as("age")).select("name", "age"); - assertEquals(expected, convertToGremlinTraversal(modern, loadQuery("modern", 3))); - } - - @Test - public void testModern4() throws Exception { - final GraphTraversal expected = mg.V().match( - as("person").values("name").as("name"), - as("person").values("age").as("age"), - as("person").out("created").as("project"), - as("project").values("name").is("lop")).select("name", "age"); - assertEquals(expected, convertToGremlinTraversal(modern, loadQuery("modern", 4))); - } - - @Test - public void testModern5() throws Exception { - final GraphTraversal expected = mg.V().match( - as("person").values("name").as("name"), - as("person").values("age").is(29)).select("name"); - assertEquals(expected, convertToGremlinTraversal(modern, loadQuery("modern", 5))); - } - - @Test - public void testModern6() throws Exception { - final GraphTraversal expected = mg.V().match( - as("person").values("name").as("name"), - as("person").values("age").as("age")).where(and(as("age").is(gt(30)), as("age").is(lt(40)))). - select("name", "age"); - assertEquals(expected, convertToGremlinTraversal(modern, loadQuery("modern", 6))); - } - - @Test - public void testModern7() throws Exception { - final GraphTraversal expected = mg.V().match( - as("person").values("name").as("name"), - as("person").values("age").as("age")).where(or(as("age").is(lt(30)), as("age").is(gt(40)))). - select("name", "age"); - assertEquals(expected, convertToGremlinTraversal(modern, loadQuery("modern", 7))); - } - - @Test - public void testModern8() throws Exception { - final GraphTraversal expected = mg.V().match( - as("person").values("name").as("name"), - as("person").values("age").as("age")).where( - or(and(as("age").is(gt(30)), as("age").is(lt(40))), as("name").is("marko"))). - select("name", "age"); - assertEquals(expected, convertToGremlinTraversal(modern, loadQuery("modern", 8))); - } - - @Test - public void testModern9() throws Exception { - final GraphTraversal expected = mg.V().match( - as("a").values("name").as("name")).where(as("a").values("age")). - select("name"); - assertEquals(expected, convertToGremlinTraversal(modern, loadQuery("modern", 9))); - } - - @Test - public void testModern10() throws Exception { - final GraphTraversal expected = mg.V().match( - as("a").values("name").as("name")).where(__.not(as("a").values("age"))). - select("name"); - assertEquals(expected, convertToGremlinTraversal(modern, loadQuery("modern", 10))); - } - - @Test - public void testModern11() throws Exception { - final GraphTraversal expected = mg.V().match( - as("a").out("created").as("b"), - as("a").values("name").as("name")).dedup("name").select("name"); - assertEquals(expected, convertToGremlinTraversal(modern, loadQuery("modern", 11))); - } - - @Test - public void testModern12() throws Exception { - final GraphTraversal expected = mg.V().match( - as("a").out("created").as("b"), - as("b").values("name").as("name")).dedup(); - assertEquals(expected, convertToGremlinTraversal(modern, loadQuery("modern", 12))); - } - - @Test - public void testModern13() throws Exception { - final GraphTraversal expected = mg.V().match( - as("a").out("created").as("b"), - as("a").values("name").as("c")).dedup("a", "b", "c").select("a", "b", "c"); - assertEquals(expected, convertToGremlinTraversal(modern, loadQuery("modern", 13))); - } - - /* The Crew */ - - /* @Test - public void testCrew1() throws Exception { - final GraphTraversal expected = cg.V().match( - as("a").values("name").is("daniel"), - as("a").properties("location").as("b"), - as("b").value().as("c"), - as("b").values("startTime").as("d")). - select("c", "d"); - assertEquals(expected, convertToGremlinTraversal(crew, loadQuery("crew", 1))); - } - - /* Computer Mode */ - - /* @Test - public void testModernInComputerMode() throws Exception { - final GraphTraversal expected = mc.V().match( - as("a").hasLabel("person"), - as("a").out("knows").as("b"), - as("a").out("created").as("c"), - as("b").out("created").as("c"), - as("a").values("age").as("d")).where(as("d").is(lt(30))). - select("a", "b", "c"); - assertEquals(expected, convertToGremlinTraversal(mc, loadQuery("modern", 1))); - } - - @Test - public void testCrewInComputerMode() throws Exception { - final GraphTraversal expected = cc.V().match( - as("a").values("name").is("daniel"), - as("a").properties("location").as("b"), - as("b").value().as("c"), - as("b").values("startTime").as("d")). - select("c", "d"); - assertEquals(expected, convertToGremlinTraversal(crew, loadQuery("crew", 1))); - } */ -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a94172fe/sparql-gremlin/src/test/java/org/apache/tinkerpop/gremlin/sparql/process/traversal/dsl/sparql/SparqlTraversalSourceTest.java ---------------------------------------------------------------------- diff --git a/sparql-gremlin/src/test/java/org/apache/tinkerpop/gremlin/sparql/process/traversal/dsl/sparql/SparqlTraversalSourceTest.java b/sparql-gremlin/src/test/java/org/apache/tinkerpop/gremlin/sparql/process/traversal/dsl/sparql/SparqlTraversalSourceTest.java index 9e5ffc0..9bb6025 100644 --- a/sparql-gremlin/src/test/java/org/apache/tinkerpop/gremlin/sparql/process/traversal/dsl/sparql/SparqlTraversalSourceTest.java +++ b/sparql-gremlin/src/test/java/org/apache/tinkerpop/gremlin/sparql/process/traversal/dsl/sparql/SparqlTraversalSourceTest.java @@ -18,11 +18,16 @@ */ package org.apache.tinkerpop.gremlin.sparql.process.traversal.dsl.sparql; -import org.apache.tinkerpop.gremlin.sparql.process.traversal.strategy.SparqlStrategy; import org.apache.tinkerpop.gremlin.structure.Graph; import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerFactory; import org.junit.Test; +import java.util.HashMap; +import java.util.List; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.collection.IsIterableContainingInAnyOrder.containsInAnyOrder; + /** * @author Stephen Mallette (http://stephen.genoprime.com) */ @@ -31,9 +36,25 @@ public class SparqlTraversalSourceTest { @Test public void shouldDoStuff() { final Graph graph = TinkerFactory.createModern(); - final SparqlTraversalSource g = graph.traversal(SparqlTraversalSource.class). - withStrategies(SparqlStrategy.instance()); - final Object x = g.sparql("SELECT ?name ?age WHERE { ?person v:name ?name . ?person v:age ?age }").toList(); - System.out.println(x); + final SparqlTraversalSource g = graph.traversal(SparqlTraversalSource.class); + final List<?> x = g.sparql("SELECT ?name ?age WHERE { ?person v:name ?name . ?person v:age ?age }").toList(); + assertThat(x, containsInAnyOrder( + new HashMap<String,Object>(){{ + put("name", "marko"); + put("age", 29); + }}, + new HashMap<String,Object>(){{ + put("name", "vadas"); + put("age", 27); + }}, + new HashMap<String,Object>(){{ + put("name", "josh"); + put("age", 32); + }}, + new HashMap<String,Object>(){{ + put("name", "peter"); + put("age", 35); + }} + )); } }