use of org.neo4j.kernel.stresstests.transaction.checkpoint.workload.Workload in project neo4j by neo4j.
the class CheckPointingLogRotationStressTesting method shouldBehaveCorrectlyUnderStress.
@Test
public void shouldBehaveCorrectlyUnderStress() throws Throwable {
long durationInMinutes = parseLong(fromEnv("CHECK_POINT_LOG_ROTATION_STRESS_DURATION", DEFAULT_DURATION_IN_MINUTES));
File storeDir = new File(fromEnv("CHECK_POINT_LOG_ROTATION_STORE_DIRECTORY", DEFAULT_STORE_DIR));
long nodeCount = parseLong(fromEnv("CHECK_POINT_LOG_ROTATION_NODE_COUNT", DEFAULT_NODE_COUNT));
int threads = parseInt(fromEnv("CHECK_POINT_LOG_ROTATION_WORKER_THREADS", DEFAULT_WORKER_THREADS));
String pageCacheMemory = fromEnv("CHECK_POINT_LOG_ROTATION_PAGE_CACHE_MEMORY", DEFAULT_PAGE_CACHE_MEMORY);
System.out.println("1/6\tBuilding initial store...");
try (FileSystemAbstraction fileSystem = new DefaultFileSystemAbstraction()) {
new ParallelBatchImporter(ensureExistsAndEmpty(storeDir), fileSystem, DEFAULT, NullLogService.getInstance(), ExecutionMonitors.defaultVisible(), Config.defaults()).doImport(new NodeCountInputs(nodeCount));
}
System.out.println("2/6\tStarting database...");
GraphDatabaseBuilder builder = new TestGraphDatabaseFactory().newEmbeddedDatabaseBuilder(storeDir);
GraphDatabaseService db = builder.setConfig(GraphDatabaseSettings.pagecache_memory, pageCacheMemory).setConfig(GraphDatabaseSettings.keep_logical_logs, Settings.FALSE).setConfig(GraphDatabaseSettings.check_point_interval_time, CHECK_POINT_INTERVAL_MINUTES + "m").setConfig(GraphDatabaseFacadeFactory.Configuration.tracer, "timer").newGraphDatabase();
System.out.println("3/6\tWarm up db...");
try (Workload workload = new Workload(db, defaultRandomMutation(nodeCount, db), threads)) {
// make sure to run at least one checkpoint during warmup
long warmUpTimeMillis = TimeUnit.SECONDS.toMillis(CHECK_POINT_INTERVAL_MINUTES * 2);
workload.run(warmUpTimeMillis, Workload.TransactionThroughput.NONE);
}
System.out.println("4/6\tStarting workload...");
TransactionThroughputChecker throughput = new TransactionThroughputChecker();
try (Workload workload = new Workload(db, defaultRandomMutation(nodeCount, db), threads)) {
workload.run(TimeUnit.MINUTES.toMillis(durationInMinutes), throughput);
}
System.out.println("5/6\tShutting down...");
db.shutdown();
try {
System.out.println("6/6\tPrinting stats and recorded timings...");
TimerTransactionTracer.printStats(System.out);
throughput.assertThroughput(System.out);
} finally {
System.out.println("Done.");
}
// let's cleanup disk space when everything went well
FileUtils.deleteRecursively(storeDir);
}
Aggregations