package com.tinkerpop.blueprints.impls.neo4j2; import com.tinkerpop.blueprints.EdgeTestSuite; import com.tinkerpop.blueprints.Graph; import com.tinkerpop.blueprints.GraphQueryTestSuite; import com.tinkerpop.blueprints.GraphTestSuite; import com.tinkerpop.blueprints.IndexTestSuite; import com.tinkerpop.blueprints.IndexableGraphTestSuite; import com.tinkerpop.blueprints.KeyIndexableGraphTestSuite; import com.tinkerpop.blueprints.TestSuite; import com.tinkerpop.blueprints.TransactionalGraphTestSuite; import com.tinkerpop.blueprints.VertexQueryTestSuite; import com.tinkerpop.blueprints.VertexTestSuite; import com.tinkerpop.blueprints.impls.GraphTest; import com.tinkerpop.blueprints.util.io.gml.GMLReaderTestSuite; import com.tinkerpop.blueprints.util.io.graphml.GraphMLReaderTestSuite; import com.tinkerpop.blueprints.util.io.graphson.GraphSONReaderTestSuite; import java.io.File; import java.lang.reflect.Method; import java.util.LinkedHashMap; import java.util.Map; /** * @author Marko A. Rodriguez (http://markorodriguez.com) */ public class Neo4j2GraphTest extends GraphTest { /*public void testNeo4jBenchmarkTestSuite() throws Exception { this.stopWatch(); doTestSuite(new Neo4j2BenchmarkTestSuite(this)); printTestPerformance("Neo4j2BenchmarkTestSuite", this.stopWatch()); }*/ public void testVertexTestSuite() throws Exception { this.stopWatch(); doTestSuite(new VertexTestSuite(this)); printTestPerformance("VertexTestSuite", this.stopWatch()); } public void testEdgeTestSuite() throws Exception { this.stopWatch(); doTestSuite(new EdgeTestSuite(this)); printTestPerformance("EdgeTestSuite", this.stopWatch()); } public void testGraphTestSuite() throws Exception { this.stopWatch(); doTestSuite(new GraphTestSuite(this)); printTestPerformance("GraphTestSuite", this.stopWatch()); } public void testVertexQueryTestSuite() throws Exception { this.stopWatch(); doTestSuite(new VertexQueryTestSuite(this)); printTestPerformance("VertexQueryTestSuite", this.stopWatch()); } public void testGraphQueryTestSuite() throws Exception { this.stopWatch(); doTestSuite(new GraphQueryTestSuite(this)); printTestPerformance("GraphQueryTestSuite", this.stopWatch()); } public void testKeyIndexableGraphTestSuite() throws Exception { this.stopWatch(); doTestSuite(new KeyIndexableGraphTestSuite(this)); printTestPerformance("KeyIndexableGraphTestSuite", this.stopWatch()); } public void testIndexableGraphTestSuite() throws Exception { this.stopWatch(); doTestSuite(new IndexableGraphTestSuite(this)); printTestPerformance("IndexableGraphTestSuite", this.stopWatch()); } public void testIndexTestSuite() throws Exception { this.stopWatch(); doTestSuite(new IndexTestSuite(this)); printTestPerformance("IndexTestSuite", this.stopWatch()); } public void testTransactionalGraphTestSuite() throws Exception { this.stopWatch(); doTestSuite(new TransactionalGraphTestSuite(this)); printTestPerformance("TransactionalGraphTestSuite", this.stopWatch()); } public void testGraphMLReaderTestSuite() throws Exception { this.stopWatch(); doTestSuite(new GraphMLReaderTestSuite(this)); printTestPerformance("GraphMLReaderTestSuite", this.stopWatch()); } public void testGraphSONReaderTestSuite() throws Exception { this.stopWatch(); doTestSuite(new GraphSONReaderTestSuite(this)); printTestPerformance("GraphSONReaderTestSuite", this.stopWatch()); } public void testGMLReaderTestSuite() throws Exception { this.stopWatch(); doTestSuite(new GMLReaderTestSuite(this)); printTestPerformance("GMLReaderTestSuite", this.stopWatch()); } public void testNeo4jGraphSpecificTestSuite() throws Exception { this.stopWatch(); doTestSuite(new Neo4j2GraphSpecificTestSuite(this)); printTestPerformance("Neo4j2GraphSpecificTestSuite", this.stopWatch()); } public Graph generateGraph() { return generateGraph("graph"); } public Graph generateGraph(final String graphDirectoryName) { final String directory = getWorkingDirectory(); Neo4j2Graph graph = new Neo4j2Graph(directory + "/" + graphDirectoryName); // for clean shutdown later testGraph.set(graph); return graph; } private final static ThreadLocal<Graph> testGraph = new ThreadLocal<Graph>(); public void doTestSuite(final TestSuite testSuite) throws Exception { String directory = this.getWorkingDirectory(); deleteDirectory(new File(directory)); int total = 0; Map<Method, Exception> failures = new LinkedHashMap<Method, Exception>(); for (Method method : testSuite.getClass().getDeclaredMethods()) { if (method.getName().startsWith("test")) { System.out.println("Testing " + method.getName() + "..."); try { total++; method.invoke(testSuite); } catch (Exception e) { // report all errors not just the first failures.put(method, e); System.out.println("Error during " + method.getName() + " " + e.getMessage()); e.printStackTrace(); } finally { // clean shutdown w/o leaking resources even in case of AssertionErrors if (testGraph.get() != null) { testGraph.get().shutdown(); } deleteDirectory(new File(directory)); } } } // fail the suite if (!failures.isEmpty()) { throw new AssertionError(testSuite.getName() + " failed, total " + total + " failures: " + failures.size() + "\n" + failures.keySet()); } } private String getWorkingDirectory() { return this.computeTestDataRoot().getAbsolutePath(); } }