@Test
 public void removePokesAfterJobTest() {
   MessageFactory factory = new MessageFactory();
   PriorityMessageQueue pmq = new PriorityMessageQueue(timer, factory);
   setRunning(pmq);
   SafeMessageQueue mq = spy(new SafeMessageQueue(timer, factory, "test"));
   setRunning(mq);
   timer.setNow(2001);
   Consumer consumer = new Consumer(pmq, mq, factory, timer);
   RunJobMessage rjm = factory.obtain(RunJobMessage.class);
   JobHolder mockHolder = mock(JobHolder.class);
   when(mockHolder.safeRun(0, new MockTimer())).thenReturn(JobHolder.RUN_RESULT_SUCCESS);
   rjm.setJobHolder(mockHolder);
   timer.setNow(3001);
   verify(mq, times(0)).cancelMessages(Consumer.pokeMessagePredicate);
   consumer.queueConsumer.handleMessage(rjm);
   verify(mq, times(1)).cancelMessages(Consumer.pokeMessagePredicate);
 }
  @Test
  public void runJobMessage() {
    MessageFactory factory = new MessageFactory();
    PriorityMessageQueue pmq = new PriorityMessageQueue(timer, factory);
    setRunning(pmq);
    SafeMessageQueue mq = new SafeMessageQueue(timer, factory, "test");
    setRunning(mq);
    timer.setNow(2001);
    Consumer consumer = new Consumer(pmq, mq, factory, timer);
    RunJobMessage rjm = factory.obtain(RunJobMessage.class);
    JobHolder mockHolder = mock(JobHolder.class);
    when(mockHolder.safeRun(0, timer)).thenReturn(JobHolder.RUN_RESULT_SUCCESS);
    rjm.setJobHolder(mockHolder);
    timer.setNow(3001);
    consumer.queueConsumer.handleMessage(rjm);

    Message message = pmq.next(dummyConsumer);
    assertThat(message, CoreMatchers.instanceOf(RunJobResultMessage.class));
    RunJobResultMessage result = (RunJobResultMessage) message;
    assertThat(result.getResult(), CoreMatchers.is(JobHolder.RUN_RESULT_SUCCESS));
    assertThat(result.getJobHolder(), CoreMatchers.is(mockHolder));
    assertThat(consumer.lastJobCompleted, CoreMatchers.is(3001L));
  }
 @Test
 public void idleMessage() {
   MessageFactory factory = new MessageFactory();
   PriorityMessageQueue pmq = new PriorityMessageQueue(timer, factory);
   SafeMessageQueue mq = new SafeMessageQueue(timer, factory, "test");
   setRunning(pmq);
   setRunning(mq);
   timer.setNow(2001);
   Consumer consumer = new Consumer(pmq, mq, factory, timer);
   consumer.queueConsumer.onIdle();
   Message message = pmq.next(dummyConsumer);
   assertThat(message, CoreMatchers.instanceOf(JobConsumerIdleMessage.class));
   assertThat(((JobConsumerIdleMessage) message).getLastJobCompleted(), CoreMatchers.is(2001L));
 }