{"action":"created","issue":{"url":"https://api.github.com/repos/clojurewerkz/ogre/issues/27","labels_url":"https://api.github.com/repos/clojurewerkz/ogre/issues/27/labels{/name}","comments_url":"https://api.github.com/repos/clojurewerkz/ogre/issues/27/comments","events_url":"https://api.github.com/repos/clojurewerkz/ogre/issues/27/events","html_url":"https://github.com/clojurewerkz/ogre/issues/27","id":46897396,"number":27,"title":"Consider Support for the TP3 Test Suite","user":{"login":"spmallette","id":384249,"avatar_url":"https://avatars.githubusercontent.com/u/384249?v=3","gravatar_id":"","url":"https://api.github.com/users/spmallette","html_url":"https://github.com/spmallette","followers_url":"https://api.github.com/users/spmallette/followers","following_url":"https://api.github.com/users/spmallette/following{/other_user}","gists_url":"https://api.github.com/users/spmallette/gists{/gist_id}","starred_url":"https://api.github.com/users/spmallette/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/spmallette/subscriptions","organizations_url":"https://api.github.com/users/spmallette/orgs","repos_url":"https://api.github.com/users/spmallette/repos","events_url":"https://api.github.com/users/spmallette/events{/privacy}","received_events_url":"https://api.github.com/users/spmallette/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":3,"created_at":"2014-10-27T12:04:04Z","updated_at":"2015-02-08T19:48:20Z","closed_at":null,"body":"The testing pattern for Ogre for TP2 seems to have been to re-implement the tests from gremlin-groovy.  While this may ultimately be the pattern to follow for Ogre in TP3, JVM languages have the ability to take advantage of the `gremlin-test` suite which provides access to hundreds of tests to clearly validate the \"gremlin flavor\" against its specification.  In this way, there is a consistent way to test Gremlin from a traversal perspective.  From Ogre's perspective, the benefit to using this suite is that it gets a complete battery of tests without having the test code to maintain.  Implementations simply provide a `Traversal` object to the `gremlin-test` suite in order to have its results validated.\r\n\r\nIt is worth keeping in mind that these tests will only cover the Gremlin \"Process\" features (i.e. traversals).  Ogre will need to maintain tests for other aspects of the language (e.g. transactions, graph strategies, etc.)\r\n\r\nIn addition to `gremlin-java` and `gremlin-groovy`, [gremlin-scala](https://github.com/mpollmeier/gremlin-scala) (a project external to TinkerPop) currently uses the test suite to its advantage.\r\n\r\nIt would be nice if there was a way for Ogre to use this test suite.  It does mean that Ogre would need to somehow leverage JUnit in its testing (as `gremlin-test` is based on that framework).  There's some other Java-interop issues as well related to Java annotations and other odds and ends that will need to be sorted to get this going.\r\n\r\nIn the end, perhaps this may not be possible for some technical reason....if so, Ogre will need to maintain its own set of tests."},"comment":{"url":"https://api.github.com/repos/clojurewerkz/ogre/issues/comments/73427881","html_url":"https://github.com/clojurewerkz/ogre/issues/27#issuecomment-73427881","issue_url":"https://api.github.com/repos/clojurewerkz/ogre/issues/27","id":73427881,"user":{"login":"Fitzoh","id":131809,"avatar_url":"https://avatars.githubusercontent.com/u/131809?v=3","gravatar_id":"","url":"https://api.github.com/users/Fitzoh","html_url":"https://github.com/Fitzoh","followers_url":"https://api.github.com/users/Fitzoh/followers","following_url":"https://api.github.com/users/Fitzoh/following{/other_user}","gists_url":"https://api.github.com/users/Fitzoh/gists{/gist_id}","starred_url":"https://api.github.com/users/Fitzoh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Fitzoh/subscriptions","organizations_url":"https://api.github.com/users/Fitzoh/orgs","repos_url":"https://api.github.com/users/Fitzoh/repos","events_url":"https://api.github.com/users/Fitzoh/events{/privacy}","received_events_url":"https://api.github.com/users/Fitzoh/received_events","type":"User","site_admin":false},"created_at":"2015-02-08T19:48:19Z","updated_at":"2015-02-08T19:48:19Z","body":"Just pushed some updates to my branch.\r\n\r\nFirst issue I ran into was `TinkerGraphGraphProvider` not being available (it's in src/test), so I just copy-pasted that for the time being.\r\n\r\nI'm now running into an issue with TinkerGraph not opting in to Ogre tests:\r\n$ lein junit\r\nTestsuite: org.clojurewerkz.ogre.OgreTinkerGraphProcessStandardTest\r\nTests run: 1, Failures: 0, Errors: 1, Time elapsed: 0.008 sec\r\n------------- Standard Error -----------------\r\nReview the testsToExecute given to the test suite as the following are missing: [class org.clojurewerkz.ogre.ThingTest]\r\n------------- ---------------- ---------------\r\nTestcase: initializationError(org.clojurewerkz.ogre.OgreTinkerGraphProcessStandardTest):\tCaused an ERROR\r\nThe suite will not run for this Graph until it is publicly acknowledged with the @OptIn annotation on the Graph instance itself\r\njava.lang.Exception: The suite will not run for this Graph until it is publicly acknowledged with the @OptIn annotation on the Graph instance itself\r\n\tat com.tinkerpop.gremlin.AbstractGremlinSuite.validateOptInToSuite(AbstractGremlinSuite.java:164)\r\n\tat com.tinkerpop.gremlin.AbstractGremlinSuite.<init>(AbstractGremlinSuite.java:100)\r\n\tat com.tinkerpop.gremlin.AbstractGremlinSuite.<init>(AbstractGremlinSuite.java:86)\r\n\tat org.clojurewerkz.ogre.OgreProcessStandardSuite.<init>(OgreProcessStandardSuite.java:57)\r\n\tat java.lang.reflect.Constructor.newInstance(Constructor.java:408)\r\n\tat java.lang.reflect.Constructor.newInstance(Constructor.java:408)\r\nTest org.clojurewerkz.ogre.OgreTinkerGraphProcessStandardTest FAILED\r\nTestsuite: org.clojurewerkz.ogre.ThingTest\r\nTests run: 3, Failures: 0, Errors: 3, Time elapsed: 0.016 sec\r\nTestcase: g_V_both_hasXlabel_softwareX_dedup_byXlangX_name(org.clojurewerkz.ogre.ThingTest$StandardTest):\tCaused an ERROR\r\nnull\r\njava.lang.NullPointerException\r\n\tat com.tinkerpop.gremlin.AbstractGremlinTest.setup(AbstractGremlinTest.java:57)\r\nTestcase: g_V_both_dedup_name(org.clojurewerkz.ogre.ThingTest$StandardTest):\tCaused an ERROR\r\nnull\r\njava.lang.NullPointerException\r\n\tat com.tinkerpop.gremlin.AbstractGremlinTest.setup(AbstractGremlinTest.java:57)\r\nTestcase: g_V_both_name_orderXa_bX_dedup(org.clojurewerkz.ogre.ThingTest$StandardTest):\tCaused an ERROR\r\nnull\r\njava.lang.NullPointerException\r\n\tat com.tinkerpop.gremlin.AbstractGremlinTest.setup(AbstractGremlinTest.java:57)\r\nTest org.clojurewerkz.ogre.ThingTest FAILED\r\nJUnit tests failed.\r\n"}}