package org.neo4j.jdbc;
import org.junit.Before;
import org.junit.Test;
import org.neo4j.graphdb.DynamicRelationshipType;
import org.neo4j.graphdb.GraphDatabaseService;
import org.neo4j.graphdb.Node;
import org.neo4j.graphdb.Transaction;
import org.neo4j.test.ImpermanentGraphDatabase;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
/**
* @author mh
* @since 14.06.12
*/
public class Neo4jJdbcPerformanceTestRunner {
private static final int RUNS = 10;
private static final int COUNT = 5000;
private ImpermanentGraphDatabase gdb;
public Neo4jJdbcPerformanceTestRunner(ImpermanentGraphDatabase gdb) {
this.gdb = gdb;
createData(gdb, COUNT);
}
private void createData(GraphDatabaseService gdb, int count) {
final DynamicRelationshipType type = DynamicRelationshipType.withName("RELATED_TO");
final Transaction tx = gdb.beginTx();
final Node node = gdb.getReferenceNode();
for (int i=0;i<count;i++) {
final Node n = gdb.createNode();
node.createRelationshipTo(n, type);
}
tx.success();tx.finish();
}
private long execute(final Connection con) throws SQLException {
long time=System.currentTimeMillis();
final ResultSet rs = con.createStatement().executeQuery("start n=node(*) match p=n-[r]->m return n,ID(n) as id, r,m,p");
int count=0;
while (rs.next()) {
rs.getInt("id");
count++;
}
return System.currentTimeMillis()-time;
}
public void executeMultiple(Connection con) throws SQLException {
long delta = 0;
execute(con);
System.out.println("START");
for (int i=0;i< RUNS;i++) {
delta += execute(con);
}
System.out.println("Query took " + delta/RUNS + " ms.");
}
}