@Override
  public void startScheduling() {
    executorService.scheduleWithFixedDelay(this::cleanCeQueue,
      ceConfiguration.getCleanTasksInitialDelay(),
      ceConfiguration.getCleanTasksDelay(),
      MINUTES);
  }
@Test
  public void startScheduling_calls_cleaning_methods_of_internalCeQueue_at_fixed_rate_with_value_from_CeConfiguration() {
    InternalCeQueue mockedInternalCeQueue = mock(InternalCeQueue.class);
    long wornOutInitialDelay = 10L;
    long wornOutDelay = 20L;
    long unknownWorkerInitialDelay = 11L;
    long unknownWorkerDelay = 21L;
    CeConfiguration mockedCeConfiguration = mockCeConfiguration(wornOutInitialDelay, wornOutDelay);
    CeCleaningAdapter executorService = new CeCleaningAdapter() {
      @Override
      public ScheduledFuture<?> scheduleWithFixedDelay(Runnable command, long initDelay, long period, TimeUnit unit) {
        schedulerCounter++;
        switch(schedulerCounter) {
          case 1:
            assertThat(initDelay).isEqualTo(wornOutInitialDelay);
            assertThat(period).isEqualTo(wornOutDelay);
            assertThat(unit).isEqualTo(TimeUnit.MINUTES);
            break;
          case 2:
            assertThat(initDelay).isEqualTo(unknownWorkerInitialDelay);
            assertThat(period).isEqualTo(unknownWorkerDelay);
            assertThat(unit).isEqualTo(TimeUnit.MINUTES);
            break;
          default:
            fail("Unknown call of scheduleWithFixedDelay");
        }
        // synchronously execute command
        command.run();
        return null;
      }
    };
    CeCleaningSchedulerImpl underTest = new CeCleaningSchedulerImpl(executorService, mockedCeConfiguration,
      mockedInternalCeQueue, mockCeDistributedInformation(jobLock));

    underTest.startScheduling();
    assertThat(executorService.schedulerCounter).isOne();
  }