@Test(timeout = 60000) @SetupRpcConnection(setupRpcServer = false, setupRpcClient = false) public void testClientRetryOnStartup() throws Exception { retries = 10; ServerSocket serverSocket = new ServerSocket(0); final InetSocketAddress address = new InetSocketAddress("127.0.0.1", serverSocket.getLocalPort()); serverSocket.close(); EchoMessage message = EchoMessage.newBuilder().setMessage(MESSAGE).build(); // lazy startup Thread serverThread = new Thread( new Runnable() { @Override public void run() { try { Thread.sleep(1000); server = new BlockingRpcServer( DummyProtocol.class, new DummyProtocolBlockingImpl(), address, 2); } catch (Exception e) { fail(e.getMessage()); } server.start(); } }); serverThread.start(); RpcConnectionKey rpcConnectionKey = new RpcConnectionKey(address, DummyProtocol.class, false); Properties connParams = new Properties(); connParams.setProperty(RpcConstants.CLIENT_RETRY_NUM, retries + ""); BlockingRpcClient client = manager.newClient(rpcConnectionKey, connParams); assertTrue(client.isConnected()); BlockingInterface stub = client.getStub(); EchoMessage response = stub.echo(null, message); assertEquals(MESSAGE, response.getMessage()); client.close(); server.shutdown(); }
public void tearDownRpcServer() throws Exception { if (server != null) { server.shutdown(); server = null; } }