@Test
  public void testRunNowRunnable() throws Exception {
    TestRunnable tr = new TestRunnable();

    ScheduledTask<Object> st = defaultScheduler.submit("default", tr);

    assertEquals(1, defaultScheduler.getActiveTasks().size());

    while (!st.getTaskState().isEndingState()) {
      Thread.sleep(300);
    }

    assertEquals(1, tr.getRunCount());

    assertEquals(TaskState.FINISHED, st.getTaskState());

    assertNull(st.getNextRun());

    assertEquals(0, defaultScheduler.getActiveTasks().size());
  }
  @Test
  public void testInitializeCronSchedule() throws Exception {
    final CScheduledTask cst = new CScheduledTask();
    cst.setId("foo-" + System.currentTimeMillis());
    cst.setEnabled(true);
    cst.setName("foo");
    cst.setType(TestNexusTask.class.getName());
    cst.setNextRun(
        new SimpleDateFormat("yyyy-MM-DD hh:mm:ss").parse("2099-01-01 20:00:00").getTime());

    // System.out.println( new Date( cst.getNextRun() ) );

    final CScheduleConfig csc = new CScheduleConfig();
    csc.setType(SCHEDULE_TYPE_ADVANCED);
    csc.setCronCommand("0 0 20 ? * TUE,THU,SAT");
    cst.setSchedule(csc);

    defaultManager.initializeTasks(defaultScheduler, Arrays.asList(cst));

    final ScheduledTask<?> task = defaultScheduler.getTaskById(cst.getId());
    assertThat(new Date(task.getNextRun().getTime()), is(new Date(cst.getNextRun())));
  }