@Test(timeout = 2000)
public void testRMContainerAllocatorExceptionIsHandled() throws Exception {

  ClientService mockClientService = mock(ClientService.class);
  AppContext mockContext = mock(AppContext.class);
  MockRMCommunicator mockRMCommunicator =
      new MockRMCommunicator(mockClientService, mockContext);
  RMCommunicator communicator = spy(mockRMCommunicator);
  Clock mockClock = mock(Clock.class);
  when(mockContext.getClock()).thenReturn(mockClock);
  doThrow(new RMContainerAllocationException("Test")).doNothing()
      .when(communicator).heartbeat();
  when(mockClock.getTime()).thenReturn(1L).thenThrow(new AssertionError(
      "GetClock called second time, when it should not have since the " +
      "thread should have quit"));
  AllocatorRunnable testRunnable = communicator.new AllocatorRunnable();
  testRunnable.run();
}