private void runRepeatedScheduling(String testName, boolean fixedRate) throws InterruptedException {
SignallingRunnable runner = new SignallingRunnable(testName);
ScheduledExecutorService executor = createScheduledThreadPoolExecutor();
ScheduledFuture<?> future = fixedRate
? executor.scheduleAtFixedRate(runner, 25L, 135L, TimeUnit.MILLISECONDS)
: executor.scheduleWithFixedDelay(runner, 25L, 135L, TimeUnit.MILLISECONDS);
Thread thread = iterateRunner(runner);
future.cancel(true);
assertCurrentThreadExecution();
assertLastExecutionOperation(thread);
}