@Override public double getAverageExecutionDuration() { return statisticTracker.getAverageExecutionDuration(); }
@Override public double getAverageExecutionDuration(TaskPriority priority) { return statisticTracker.getAverageExecutionDuration(priority); }
@Override public double getAverageExecutionDuration() { return statisticTracker.getAverageExecutionDuration(); }
@Override public double getAverageExecutionDuration(TaskPriority priority) { return statisticTracker.getAverageExecutionDuration(priority); }
@Test public void getAverageExecutionDurationNoInputTest() { NoThreadSchedulerStatisticTracker scheduler = new NoThreadSchedulerStatisticTracker(); assertEquals(-1, scheduler.getAverageExecutionDuration(), 0); }
@Test public void getAverageExecutionDurationSimpleTest() { NoThreadSchedulerStatisticTracker scheduler = new NoThreadSchedulerStatisticTracker(); assertEquals(-1, scheduler.getAverageExecutionDuration(), 0); scheduler.execute(new ClockUpdateRunnable()); scheduler.tick(null); assertEquals(1, scheduler.getAverageExecutionDuration(), 1); scheduler.execute(new ClockUpdateRunnable(DELAY_TIME)); scheduler.tick(null); assertTrue(scheduler.getAverageExecutionDuration() >= DELAY_TIME / 2); }
@Test public void getWithPriorityAverageExecutionDurationTest() { int lowPriorityCount = TEST_QTY; int highPriorityCount = TEST_QTY * 2; NoThreadSchedulerStatisticTracker scheduler = new NoThreadSchedulerStatisticTracker(); for (int i = 0; i < lowPriorityCount; i++) { scheduler.execute(DoNothingRunnable.instance(), TaskPriority.Low); } for (int i = 0; i < highPriorityCount; i++) { scheduler.execute(DoNothingRunnable.instance(), TaskPriority.High); } // block till all are finished scheduler.tick(null); List<Long> runTimes = scheduler.getExecutionDurationSamples(TaskPriority.High); assertEquals(highPriorityCount, runTimes.size()); double totalRunTime = 0; Iterator<Long> it = runTimes.iterator(); while (it.hasNext()) { totalRunTime += it.next(); } double avgRunTime = totalRunTime / runTimes.size(); assertEquals(avgRunTime, scheduler.getAverageExecutionDuration(TaskPriority.High), 0); }
@Test public void getAverageExecutionDurationTest() { int lowPriorityCount = TEST_QTY; int highPriorityCount = TEST_QTY * 2; NoThreadSchedulerStatisticTracker scheduler = new NoThreadSchedulerStatisticTracker(); for (int i = 0; i < lowPriorityCount; i++) { scheduler.execute(DoNothingRunnable.instance(), TaskPriority.Low); } for (int i = 0; i < highPriorityCount; i++) { scheduler.execute(DoNothingRunnable.instance(), TaskPriority.High); } // block till all are finished scheduler.tick(null); List<Long> runTimes = scheduler.getExecutionDurationSamples(); assertEquals(lowPriorityCount + highPriorityCount, runTimes.size()); double totalRunTime = 0; Iterator<Long> it = runTimes.iterator(); while (it.hasNext()) { totalRunTime += it.next(); } double avgRunTime = totalRunTime / runTimes.size(); assertEquals(avgRunTime, scheduler.getAverageExecutionDuration(), 0); }
@Test public void getWithPriorityAverageExecutionDurationNoInputTest() { NoThreadSchedulerStatisticTracker scheduler = new NoThreadSchedulerStatisticTracker(); scheduler.execute(DoNothingRunnable.instance(), TaskPriority.Low); scheduler.tick(null); assertEquals(-1, scheduler.getAverageExecutionDuration(TaskPriority.High), 0); }
@Test public void resetCollectedStatsTest() { NoThreadSchedulerStatisticTracker scheduler = new NoThreadSchedulerStatisticTracker(); TestRunnable lastRunnable = null; boolean flip = false; for (int i = 0; i < TEST_QTY; i++) { lastRunnable = new TestRunnable(1); if (flip) { scheduler.execute(lastRunnable, TaskPriority.High); flip = false; } else { scheduler.execute(lastRunnable, TaskPriority.Low); flip = true; } } scheduler.tick(null); // reset stats scheduler.resetCollectedStats(); assertEquals(-1, scheduler.getAverageExecutionDuration(), 0); for (TaskPriority p : TaskPriority.values()) { assertEquals(-1, scheduler.getAverageExecutionDelay(p), 0); } }