IoPropertyTest had to be tweaked cause graphson v2 without embedded types was turning Neo4j ids to ints instead of longs. We really should get rid of graphson v2-noembedding (@spmallette). Finally, along with doing string comparison of the GraphSON from the bytecode of both Java and Python, I also convert to a Map<String,Object> and test the .equals() of the two. Done with this branch. What a whirl wind tour.
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/962e6cbf Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/962e6cbf Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/962e6cbf Branch: refs/heads/master Commit: 962e6cbff9f5bc03909c57db9ff3bc2f6b93d9cc Parents: 4705801 Author: Marko A. Rodriguez <[email protected]> Authored: Fri Nov 18 06:42:41 2016 -0700 Committer: Marko A. Rodriguez <[email protected]> Committed: Tue Nov 22 11:20:01 2016 -0700 ---------------------------------------------------------------------- .../python/jsr223/PythonGraphSONJavaTranslator.java | 13 +++++++++---- .../tinkerpop/gremlin/structure/io/IoPropertyTest.java | 10 +++++----- 2 files changed, 14 insertions(+), 9 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/962e6cbf/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/python/jsr223/PythonGraphSONJavaTranslator.java ---------------------------------------------------------------------- diff --git a/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/python/jsr223/PythonGraphSONJavaTranslator.java b/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/python/jsr223/PythonGraphSONJavaTranslator.java index 5144e31..9da5454 100644 --- a/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/python/jsr223/PythonGraphSONJavaTranslator.java +++ b/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/python/jsr223/PythonGraphSONJavaTranslator.java @@ -31,14 +31,17 @@ import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONVersion; import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONWriter; import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONXModuleV2d0; import org.apache.tinkerpop.gremlin.util.ScriptEngineCache; +import org.apache.tinkerpop.shaded.jackson.core.JsonFactory; +import org.apache.tinkerpop.shaded.jackson.databind.ObjectMapper; import javax.script.Bindings; import javax.script.ScriptContext; import javax.script.ScriptEngine; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; +import java.util.Map; -import static org.junit.Assert.fail; +import static org.junit.Assert.assertEquals; /** * @author Marko A. Rodriguez (http://markorodriguez.com) @@ -86,9 +89,11 @@ final class PythonGraphSONJavaTranslator<S extends TraversalSource, T extends Tr BytecodeHelper.detachElements(bytecode); // this is to get the minimal necessary representation this.writer.writeObject(output, bytecode); final String originalGraphSONBytecode = new String(output.toByteArray()); - // sometimes the Java Map and Python dict are sorted differently. (equals() is too strict -- only a few tests cases require this) - if (originalGraphSONBytecode.length() != translatedGraphSONBytecode.length()) - fail(originalGraphSONBytecode + "\n does not equal\n" + translatedGraphSONBytecode); + final ObjectMapper mapper = new ObjectMapper(new JsonFactory()); + final Map<String, Object> original = mapper.readValue(originalGraphSONBytecode, Map.class); + final Map<String, Object> translated = mapper.readValue(translatedGraphSONBytecode, Map.class); + assertEquals(originalGraphSONBytecode.length(), translatedGraphSONBytecode.length()); + assertEquals(original, translated); } return this.javaTranslator.translate(this.reader.readObject(new ByteArrayInputStream(translatedGraphSONBytecode.getBytes()), Bytecode.class)); http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/962e6cbf/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/IoPropertyTest.java ---------------------------------------------------------------------- diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/IoPropertyTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/IoPropertyTest.java index 13758f9..dec7230 100644 --- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/IoPropertyTest.java +++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/IoPropertyTest.java @@ -104,9 +104,9 @@ public class IoPropertyTest extends AbstractGremlinTest { assertEquals(IteratorUtils.count(p.properties()), IteratorUtils.count(propertyAttachable.get().properties())); assertEquals(p.property("startTime").value(), ((Property) propertyAttachable.get().properties("startTime").next()).value()); assertEquals(p.property("endTime").value(), ((Property) propertyAttachable.get().properties("endTime").next()).value()); - if (ioType.equals("graphson-v2-embedded") || ioType.equals("graphson-v2")) { // TODO: make this work with Gryo + if (ioType.equals("graphson-v2-embedded")) { // TODO: make this work with Gryo + assertEquals(p, propertyAttachable.get()); assertEquals(p.element(), propertyAttachable.get().element()); - assertEquals(p.element(), v); } called.set(true); return propertyAttachable.get(); @@ -133,9 +133,9 @@ public class IoPropertyTest extends AbstractGremlinTest { assertEquals(p.value(), propertyAttachable.get().value()); assertEquals(p.key(), propertyAttachable.get().key()); assertEquals(0, IteratorUtils.count(propertyAttachable.get().properties())); - if (ioType.equals("graphson-v2-embedded") || ioType.equals("graphson-v2")) { // TODO: make this work with Gryo + if (ioType.equals("graphson-v2-embedded")) { // TODO: make this work with Gryo + assertEquals(p, propertyAttachable.get()); assertEquals(p.element(), propertyAttachable.get().element()); - assertEquals(p.element(), v); } called.set(true); return propertyAttachable.get(); @@ -162,8 +162,8 @@ public class IoPropertyTest extends AbstractGremlinTest { assertEquals(p.value(), propertyAttachable.get().value()); assertEquals(p.key(), propertyAttachable.get().key()); if (ioType.equals("graphson-v2-embedded")) { // TODO: make this work with Gryo + assertEquals(p, propertyAttachable.get()); assertEquals(p.element(), propertyAttachable.get().element()); - assertEquals(p.element(), e); } called.set(true); return propertyAttachable.get();
