@Test
public void testRpcInvocation() throws Exception {

  // For a proxy method should return true
  final UnreliableInterface unreliable = (UnreliableInterface)
    RetryProxy.create(UnreliableInterface.class, unreliableImpl, RETRY_FOREVER);
  assertTrue(RetryInvocationHandler.isRpcInvocation(unreliable));
  
  // Embed the proxy in ProtocolTranslator
  ProtocolTranslator xlator = new ProtocolTranslator() {
    int count = 0;
    @Override
    public Object getUnderlyingProxyObject() {
      count++;
      return unreliable;
    }
    @Override
    public String toString() {
      return "" + count;
    }
  };
  
  // For a proxy wrapped in ProtocolTranslator method should return true
  assertTrue(RetryInvocationHandler.isRpcInvocation(xlator));
  // Ensure underlying proxy was looked at
  assertEquals(xlator.toString(), "1");
  
  // For non-proxy the method must return false
  assertFalse(RetryInvocationHandler.isRpcInvocation(new Object()));
}