use of org.neo4j.graphdb.GraphDatabaseService in project neo4j by neo4j.
the class AStarPerformanceIT method somePerformanceTesting.
@Test
public void somePerformanceTesting() throws Exception {
// GIVEN
int numberOfNodes = 200000;
GeoDataGenerator generator = new GeoDataGenerator(numberOfNodes, 5d, 1000, 1000);
generator.generate(directory);
// WHEN
long[][] points = new long[][] { new long[] { 9415, 158154 }, new long[] { 89237, 192863 }, new long[] { 68072, 150484 }, new long[] { 186309, 194495 }, new long[] { 152097, 99289 }, new long[] { 92150, 161182 }, new long[] { 188446, 115873 }, new long[] { 85033, 7772 }, new long[] { 291, 86707 }, new long[] { 188345, 158468 } };
GraphDatabaseService db = new TestGraphDatabaseFactory().newEmbeddedDatabase(directory.getAbsoluteFile());
PathFinder<WeightedPath> algo = aStar(allTypesAndDirections(), doubleCostEvaluator("weight", 0), GeoDataGenerator.estimateEvaluator());
for (int i = 0; i < 10; i++) {
System.out.println("----- " + i);
for (long[] p : points) {
try (Transaction tx = db.beginTx()) {
Node start = db.getNodeById(p[0]);
Node end = db.getNodeById(p[1]);
long time = currentTimeMillis();
WeightedPath path = algo.findSinglePath(start, end);
time = currentTimeMillis() - time;
System.out.println("time: " + time + ", len:" + path.length() + ", weight:" + path.weight());
tx.success();
}
}
}
// THEN
db.shutdown();
}
use of org.neo4j.graphdb.GraphDatabaseService in project neo4j by neo4j.
the class AllPaths method instantiateTraverser.
@Override
protected Traverser instantiateTraverser(Node start, Node end) {
// // Legacy single-directional traversal (for reference or something)
// return traversal().expand( expander ).depthFirst().uniqueness( uniqueness() )
// .evaluator( toDepth( maxDepth ) ).evaluator( Evaluators.includeWhereEndNodeIs( end ) )
// .traverse( start );
// Bidirectional traversal
GraphDatabaseService db = start.getGraphDatabase();
TraversalDescription base = db.traversalDescription().depthFirst().uniqueness(uniqueness());
return db.bidirectionalTraversalDescription().startSide(base.expand(expander).evaluator(toDepth(maxDepth / 2))).endSide(base.expand(expander.reverse()).evaluator(toDepth(maxDepth - maxDepth / 2))).traverse(start, end);
}
use of org.neo4j.graphdb.GraphDatabaseService in project neo4j by neo4j.
the class DijkstraBidirectional method traverser.
private Traverser traverser(Node start, final Node end, PathInterest interest) {
final MutableDouble shortestSoFar = new MutableDouble(Double.MAX_VALUE);
final MutableDouble startSideShortest = new MutableDouble(0);
final MutableDouble endSideShortest = new MutableDouble(0);
PathExpander dijkstraExpander = new DijkstraBidirectionalPathExpander(expander, shortestSoFar, true, startSideShortest, endSideShortest, epsilon);
GraphDatabaseService db = start.getGraphDatabase();
TraversalDescription side = db.traversalDescription().expand(dijkstraExpander, stateFactory).order(new DijkstraSelectorFactory(interest, costEvaluator)).evaluator(new DijkstraBidirectionalEvaluator(costEvaluator)).uniqueness(Uniqueness.NODE_PATH);
TraversalDescription startSide = side;
TraversalDescription endSide = side.reverse();
BidirectionalTraversalDescription traversal = db.bidirectionalTraversalDescription().startSide(startSide).endSide(endSide).collisionEvaluator(Evaluators.all()).collisionPolicy(new BranchCollisionPolicy() {
@Override
public BranchCollisionDetector create(Evaluator evaluator, Predicate<Path> pathPredicate) {
return new DijkstraBranchCollisionDetector(evaluator, costEvaluator, shortestSoFar, epsilon, pathPredicate);
}
});
lastTraverser = traversal.traverse(start, end);
return lastTraverser;
}
use of org.neo4j.graphdb.GraphDatabaseService in project neo4j by neo4j.
the class ExactDepthPathFinder method instantiateTraverser.
@Override
protected Traverser instantiateTraverser(Node start, Node end) {
GraphDatabaseService db = start.getGraphDatabase();
TraversalDescription side = db.traversalDescription().breadthFirst().uniqueness(uniqueness).order(new BranchOrderingPolicy() {
@Override
public BranchSelector create(TraversalBranch startSource, PathExpander expander) {
return new LiteDepthFirstSelector(startSource, startThreshold, expander);
}
});
return db.bidirectionalTraversalDescription().startSide(side.expand(expander).evaluator(toDepth(onDepth / 2))).endSide(side.expand(expander.reverse()).evaluator(toDepth(onDepth - onDepth / 2))).collisionEvaluator(atDepth(onDepth)).traverse(start, end);
}
use of org.neo4j.graphdb.GraphDatabaseService in project neo4j by neo4j.
the class KernelRecoveryTest method shouldHandleWritesProperlyAfterRecovery.
@Test
public void shouldHandleWritesProperlyAfterRecovery() throws Exception {
// Given
EphemeralFileSystemAbstraction fs = fsRule.get();
GraphDatabaseService db = newDB(fs);
long node1 = createNode(db);
// And given the power goes out
EphemeralFileSystemAbstraction crashedFs = fs.snapshot();
db.shutdown();
try {
db = newDB(crashedFs);
long node2 = createNode(db);
db.shutdown();
// Then the logical log should be in sync
File logFile = new File(storeDir, PhysicalLogFile.DEFAULT_NAME + PhysicalLogFile.DEFAULT_VERSION_SUFFIX + "0");
assertThat(logEntries(crashedFs, logFile), containsExactly(// Tx before recovery
startEntry(-1, -1), commandEntry(node1, NodeCommand.class), commandEntry(ReadOperations.ANY_LABEL, NodeCountsCommand.class), commitEntry(2), // Tx after recovery
startEntry(-1, -1), commandEntry(node2, NodeCommand.class), commandEntry(ReadOperations.ANY_LABEL, NodeCountsCommand.class), commitEntry(3), // checkpoint
checkPoint(new LogPosition(0, 250))));
} finally {
crashedFs.close();
}
}
Aggregations