public CriticalMeasure() { //prefer this approach instead of using some fixed value because System::nanoTime could change sign //with long running processes enterCritical(); leaveCritical(); }
@Override public void leaveCritical(int path) { if (analyzer.isMeasuring()) { measures[path].leaveCritical(); } }
@Override public void leaveCritical(int path) { if (analyzer.isMeasuring()) { measures[path].leaveCritical(); } }
@Override public void leaveCritical(int path) { if (analyzer.isMeasuring()) { measures[path].leaveCritical(); } }
@Override public void leaveCritical(int path) { if (analyzer.isMeasuring()) { measures[path].leaveCritical(); } }
@Override public void leaveCritical(int path) { if (analyzer.isMeasuring()) { measures[path].leaveCritical(); } }
@Override public void leaveCritical(int path) { if (analyzer.isMeasuring()) { measures[path].leaveCritical(); } }
@Override public void leaveCritical(int path) { if (analyzer.isMeasuring()) { measures[path].leaveCritical(); } }
public CriticalMeasure() { //prefer this approach instead of using some fixed value because System::nanoTime could change sign //with long running processes enterCritical(); leaveCritical(); }
@Test public void testCriticalMeasureTakingLongButSucceeding() throws Exception { CriticalAnalyzer analyzer = new CriticalAnalyzerImpl(); CriticalComponent component = new CriticalComponentImpl(analyzer, 5); CriticalMeasure measure = new CriticalMeasure(component, 1); long time = System.nanoTime(); CriticalMeasure.TIME_ENTER_UPDATER.set(measure, time - TimeUnit.MINUTES.toNanos(5)); measure.leaveCritical(); Assert.assertFalse(measure.isExpired(TimeUnit.SECONDS.toNanos(30))); }
@Test public void testCriticalFailure() throws Exception { CriticalAnalyzer analyzer = new CriticalAnalyzerImpl(); CriticalComponent component = new CriticalComponentImpl(analyzer, 5); CriticalMeasure measure = new CriticalMeasure(component, 1); long time = System.nanoTime(); measure.enterCritical(); CriticalMeasure.TIME_ENTER_UPDATER.set(measure, time - TimeUnit.MINUTES.toNanos(5)); CriticalMeasure.TIME_LEFT_UPDATER.set(measure, time - TimeUnit.MINUTES.toNanos(10)); Assert.assertTrue(measure.isExpired(TimeUnit.SECONDS.toNanos(30))); measure.leaveCritical(); } }