@Override
    public ScheduledFuture<?> scheduleAtFixedRate(
            ProcessingTimeCallback callback, long initialDelay, long period) {
        return scheduleRepeatedly(callback, initialDelay, period, false);
    }
@Timeout(value = 10000, unit = TimeUnit.MILLISECONDS)
    @Test
    void testScheduleAtFixedRate() throws Exception {
        final AtomicReference<Throwable> errorRef = new AtomicReference<>();
        final long period = 10L;
        final int countDown = 3;

        final SystemProcessingTimeService timer = createSystemProcessingTimeService(errorRef);

        final CountDownLatch countDownLatch = new CountDownLatch(countDown);

        try {
            timer.scheduleAtFixedRate(timestamp -> countDownLatch.countDown(), 0L, period);

            countDownLatch.await();

            assertThat(errorRef.get()).isNull();
        } finally {
            timer.shutdownService();
        }
    }