@Before
 public void setUp() throws Exception {
   listener = spy(new CommandRequestListener());
   when(payload.getMessage(CommandRequest.class)).thenReturn(commandRequest);
   when(peerManager.getPeer(any(String.class))).thenReturn(sourcePeer);
   when(localPeer.bindHost(any(String.class))).thenReturn(host);
   doReturn(peerManager).when(listener).getPeerManager();
   doReturn(localPeer).when(peerManager).getLocalPeer();
 }
  @Test
  public void testOnRequest() throws Exception {
    listener.onRequest(payload);

    verify(localPeer).executeAsync(any(RequestBuilder.class), eq(host), any(CommandCallback.class));

    doThrow(exception)
        .when(localPeer)
        .executeAsync(any(RequestBuilder.class), eq(host), any(CommandCallback.class));

    listener.onRequest(payload);

    verify(exception).printStackTrace(any(PrintStream.class));

    when(payload.getMessage(CommandRequest.class)).thenReturn(null);

    listener.onRequest(payload);

    verify(peerManager, times(2)).getPeer(any(String.class));
  }