From 02c1ef01519e63d905fdc79e9aa82bd66f950f59 Mon Sep 17 00:00:00 2001 From: lutovich Date: Tue, 31 May 2016 13:12:12 +0200 Subject: [PATCH] Improve tx tracking in checkpoint stress test Transaction is considered committed only after it is closed. Throughput is measured in 'tx/s' instead of 'tx/ms' because this produces a more pleasant number. All output goes to System.out so it is not mixed in the build log. --- .../TransactionThroughputChecker.java | 18 ++++++++++-------- .../checkpoint/workload/Worker.java | 3 ++- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/stresstests/src/test/java/org/neo4j/kernel/stresstests/transaction/checkpoint/TransactionThroughputChecker.java b/stresstests/src/test/java/org/neo4j/kernel/stresstests/transaction/checkpoint/TransactionThroughputChecker.java index e2ca664425f15..3770fde8774af 100644 --- a/stresstests/src/test/java/org/neo4j/kernel/stresstests/transaction/checkpoint/TransactionThroughputChecker.java +++ b/stresstests/src/test/java/org/neo4j/kernel/stresstests/transaction/checkpoint/TransactionThroughputChecker.java @@ -22,6 +22,7 @@ import java.io.PrintStream; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.TimeUnit; import org.neo4j.kernel.stresstests.transaction.checkpoint.workload.Workload; @@ -32,9 +33,10 @@ public class TransactionThroughputChecker implements Workload.TransactionThrough private final List reports = new ArrayList<>(); @Override - public void report( long transactions, long elapsedTime) + public void report( long transactions, long timeSlotMillis ) { - reports.add( ((double) transactions / (double) elapsedTime) ); + long elapsedSeconds = TimeUnit.MILLISECONDS.toSeconds( timeSlotMillis ); + reports.add( ((double) transactions / (double) elapsedSeconds) ); } public void assertThroughput( PrintStream out ) @@ -45,7 +47,7 @@ public void assertThroughput( PrintStream out ) return; } - out.println( "Throughput reports (tx/ms):" ); + out.println( "Throughput reports (tx/s):" ); double sum = 0; for ( double report : reports ) { @@ -55,7 +57,7 @@ public void assertThroughput( PrintStream out ) out.println(); double average = sum / (double) reports.size(); - out.println( "Average throughput (tx/ms): " + average ); + out.println( "Average throughput (tx/s): " + average ); double powerSum = 0.0; for ( double report : reports ) @@ -64,9 +66,9 @@ public void assertThroughput( PrintStream out ) } double stdDeviation = Math.sqrt( powerSum / (double) reports.size() ); - out.println( "Standard deviation (tx/ms): " + stdDeviation ); + out.println( "Standard deviation (tx/s): " + stdDeviation ); double twoStdDeviations = stdDeviation * 2.0; - out.println( "Two standard deviations (tx/ms): " + twoStdDeviations ); + out.println( "Two standard deviations (tx/s): " + twoStdDeviations ); int inOneStdDeviationRange = 0; int inTwoStdDeviationRange = 0; @@ -79,12 +81,12 @@ public void assertThroughput( PrintStream out ) } else if ( Math.abs( average - report ) <= twoStdDeviations ) { - System.err.println( "Outside _one_ std deviation range: " + report ); + out.println( "Outside _one_ std deviation range: " + report ); inTwoStdDeviationRange++; } else { - System.err.println( "Outside _two_ std deviation range: " + report ); + out.println( "Outside _two_ std deviation range: " + report ); } } diff --git a/stresstests/src/test/java/org/neo4j/kernel/stresstests/transaction/checkpoint/workload/Worker.java b/stresstests/src/test/java/org/neo4j/kernel/stresstests/transaction/checkpoint/workload/Worker.java index 419dacb1115ee..5b614fc7c093c 100644 --- a/stresstests/src/test/java/org/neo4j/kernel/stresstests/transaction/checkpoint/workload/Worker.java +++ b/stresstests/src/test/java/org/neo4j/kernel/stresstests/transaction/checkpoint/workload/Worker.java @@ -58,7 +58,6 @@ public void run() randomMutation.perform(); } tx.success(); - monitor.transactionCompleted(); } catch ( DeadlockDetectedException ignore ) { @@ -69,6 +68,8 @@ public void run() // ignore and go on e.printStackTrace(); } + + monitor.transactionCompleted(); } while ( !monitor.stop() );