System.out.println("@ " + (TimeServices.nanoTime() - startTime) + " nsec after start:");
System.out.println("Estimated interval = " +
latencyStats.getIntervalEstimator().getEstimatedInterval(lastTime));
Histogram accumulatedHistogram = latencyStats.getAccumulatedHistogram();
Histogram intervalHistogram = latencyStats.getIntervalHistogram();
System.out.println("Accumulated Average latency for 5msec sleeps: " +
accumulatedHistogram.getMean() + ", count = " + accumulatedHistogram.getTotalCount());
System.out.println("Interval Average latency for 5msec sleeps: " +
intervalHistogram.getMean() + ", count = " + intervalHistogram.getTotalCount());
Assert.assertEquals("Accumulated total count should be 2000", 2000, accumulatedHistogram.getTotalCount());
System.out.println("Pausing detector threads for 5 seconds:");
pauseDetector.stallDetectorThreads(0x7, 5000 * MSEC);
TimeUnit.NANOSECONDS.sleep(1 * MSEC); // Make sure things have some time to propagate
// @ 15 sec from start
// Report without forcing interval measurement update:
System.out.println("@ " + (TimeServices.nanoTime() - startTime) + " nsec after start:");
System.out.println("Estimated interval = " +
latencyStats.getIntervalEstimator().getEstimatedInterval(TimeServices.nanoTime()));
accumulatedHistogram = latencyStats.getAccumulatedHistogram();
intervalHistogram = latencyStats.getIntervalHistogram();
System.out.println("Post-pause, pre-observation Accumulated Average latency for 5msec sleeps: " +
accumulatedHistogram.getMean() + ", count = " + accumulatedHistogram.getTotalCount());
System.out.println("Post-pause, pre-observation Interval Average latency for 5msec sleeps: " +
intervalHistogram.getMean() + ", count = " + intervalHistogram.getTotalCount());
Assert.assertEquals("Accumulated total count should be 2000", 2000, accumulatedHistogram.getTotalCount());
// Still @ 15 sec from start
System.out.println("\nForcing Interval Update:\n");
latencyStats.forceIntervalSample();
System.out.println("@ " + (TimeServices.nanoTime() - startTime) + " nsec after start:");
System.out.println("Estimated interval = " +
latencyStats.getIntervalEstimator().getEstimatedInterval(TimeServices.nanoTime()));
accumulatedHistogram = latencyStats.getAccumulatedHistogram();
intervalHistogram = latencyStats.getIntervalHistogram();
System.out.println("Post-pause, post-observation Accumulated Average latency for 5msec sleeps: " +
accumulatedHistogram.getMean() + ", count = " + accumulatedHistogram.getTotalCount());
System.out.println("Post-pause, post-observation Interval Average latency for 5msec sleeps: " +
intervalHistogram.getMean() + ", count = " + intervalHistogram.getTotalCount());
Assert.assertEquals("Accumulated total count should be 2000", 2998, accumulatedHistogram.getTotalCount());
pauseDetector.skipConsensusTimeTo(TimeServices.nanoTime() + (500 * MSEC));
TimeServices.moveTimeForwardMsec(500);
TimeUnit.NANOSECONDS.sleep(1 * MSEC); // Make sure things have some time to propagate
// @ 15.5 sec from start
System.out.println("\nForcing Interval Update:\n");
latencyStats.forceIntervalSample();
System.out.println("@ " + (TimeServices.nanoTime() - startTime) + " nsec after start:");
System.out.println("Estimated interval = " +
latencyStats.getIntervalEstimator().getEstimatedInterval(TimeServices.nanoTime()));
accumulatedHistogram = latencyStats.getAccumulatedHistogram();
intervalHistogram = latencyStats.getIntervalHistogram();
System.out.println("Post-pause Accumulated Average latency for 5msec sleeps: " +
accumulatedHistogram.getMean() + ", count = " + accumulatedHistogram.getTotalCount());
System.out.println("Post-pause Interval Average latency for 5msec sleeps: " +
intervalHistogram.getMean() + ", count = " + intervalHistogram.getTotalCount());
Assert.assertEquals("Accumulated total count should be 2000", 2998, accumulatedHistogram.getTotalCount());
pauseDetector.skipConsensusTimeTo(TimeServices.nanoTime() + (500 * MSEC));
TimeServices.moveTimeForwardMsec(500);
TimeUnit.NANOSECONDS.sleep(1 * MSEC); // Make sure things have some time to propagate
// @ 16 sec from start
System.out.println("\nForcing Interval Update:\n");
latencyStats.forceIntervalSample();
System.out.println("@ " + (TimeServices.nanoTime() - startTime) + " nsec after start:");
System.out.println("Estimated interval = " +
latencyStats.getIntervalEstimator().getEstimatedInterval(TimeServices.nanoTime()));
accumulatedHistogram = latencyStats.getAccumulatedHistogram();
intervalHistogram = latencyStats.getIntervalHistogram();
System.out.println("Post-pause Accumulated Average latency for 5msec sleeps: " +
accumulatedHistogram.getMean() + ", count = " + accumulatedHistogram.getTotalCount());
System.out.println("Post-pause Interval Average latency for 5msec sleeps: " +
intervalHistogram.getMean() + ", count = " + intervalHistogram.getTotalCount());
Assert.assertEquals("Accumulated total count should be 2999", 2998, accumulatedHistogram.getTotalCount());
pauseDetector.skipConsensusTimeTo(TimeServices.nanoTime() + (2000 * MSEC));
TimeServices.moveTimeForwardMsec(2000);
TimeUnit.NANOSECONDS.sleep(1 * MSEC); // Make sure things have some time to propagate
// @ 18 sec from start
System.out.println("\nForcing Interval Update:\n");
latencyStats.forceIntervalSample();
System.out.println("@ " + (TimeServices.nanoTime() - startTime) + " nsec after start:");
System.out.println("Estimated interval = " +
latencyStats.getIntervalEstimator().getEstimatedInterval(TimeServices.nanoTime()));
accumulatedHistogram = latencyStats.getAccumulatedHistogram();
intervalHistogram = latencyStats.getIntervalHistogram();
System.out.println("Post-pause Accumulated Average latency for 5msec sleeps: " +
accumulatedHistogram.getMean() + ", count = " + accumulatedHistogram.getTotalCount());
System.out.println("Post-pause Interval Average latency for 5msec sleeps: " +
intervalHistogram.getMean() + ", count = " + intervalHistogram.getTotalCount());
Assert.assertEquals("Accumulated total count should be 2999", 2998, accumulatedHistogram.getTotalCount());
for (int i = 0 ; i < 100; i++) {
pauseDetector.skipConsensusTimeTo(TimeServices.nanoTime() + (5 * MSEC));
TimeServices.moveTimeForwardMsec(5);
long now = TimeServices.nanoTime();
latencyStats.recordLatency(now - lastTime);
lastTime = now;
}
pauseDetector.skipConsensusTimeTo(TimeServices.nanoTime() + (500 * MSEC));
TimeServices.moveTimeForwardMsec(500);
TimeUnit.NANOSECONDS.sleep(1 * MSEC); // Make sure things have some time to propagate
// @ 19 sec from start
System.out.println("\nForcing Interval Update:\n");
latencyStats.forceIntervalSample();
System.out.println("@ " + (TimeServices.nanoTime() - startTime) + " nsec after start:");
System.out.println("Estimated interval = " +
latencyStats.getIntervalEstimator().getEstimatedInterval(TimeServices.nanoTime()));
accumulatedHistogram = latencyStats.getAccumulatedHistogram();
intervalHistogram = latencyStats.getIntervalHistogram();
System.out.println("Post-pause Accumulated Average latency for 5msec sleeps: " +
accumulatedHistogram.getMean() + ", count = " + accumulatedHistogram.getTotalCount());
System.out.println("Post-pause Interval Average latency for 5msec sleeps: " +
intervalHistogram.getMean() + ", count = " + intervalHistogram.getTotalCount());
pauseDetector.skipConsensusTimeTo(TimeServices.nanoTime() + (500 * MSEC));
TimeServices.moveTimeForwardMsec(500);
TimeUnit.NANOSECONDS.sleep(1 * MSEC); // Make sure things have some time to propagate
// @ 19.5 sec from start
System.out.println("\nForcing Interval Update:\n");
latencyStats.forceIntervalSample();
System.out.println("@ " + (TimeServices.nanoTime() - startTime) + " nsec after start:");
System.out.println("Estimated interval = " +
latencyStats.getIntervalEstimator().getEstimatedInterval(TimeServices.nanoTime()));
accumulatedHistogram = latencyStats.getAccumulatedHistogram();
intervalHistogram = latencyStats.getIntervalHistogram();
System.out.println("Post-pause Accumulated Average latency for 5msec sleeps: " +
accumulatedHistogram.getMean() + ", count = " + accumulatedHistogram.getTotalCount());
System.out.println("Post-pause Interval Average latency for 5msec sleeps: " +
intervalHistogram.getMean() + ", count = " + intervalHistogram.getTotalCount());
Assert.assertEquals("Accumulated total count should be 2000", 3098, accumulatedHistogram.getTotalCount());
} catch (InterruptedException ex) {
}