@Category(IntegrationTest.class) @Test public void addressResolutionIsAlwaysDone() throws Exception { TCPEchoServer echoServer = new TCPEchoServer(); try { echoServer.start(); SocketAllocator socketAllocator = new SocketAllocator(echoServer.getLocalSocketAddress(), 100, UTF_8, new NeverFlush()); SocketPoolable socketPoolable = socketAllocator.allocate(mock(Slot.class)); try { InetSocketAddress remoteSocketAddress = (InetSocketAddress) socketPoolable.getSocket().getRemoteSocketAddress(); assertThat(remoteSocketAddress).isEqualTo(echoServer.getLocalSocketAddress()); // FIXME: the following test is not actually good. Not really sure how to validate that DNS // resolution is done. assertThat(remoteSocketAddress).isNotSameAs(echoServer.getLocalSocketAddress()); } finally { socketPoolable.getSocket().close(); } } finally { echoServer.stop(); } }
@Test public void socketAndWritersAreClosed() throws Exception { SocketAllocator socketAllocator = new SocketAllocator(new InetSocketAddress("localhost", 80), 100, UTF_8, new NeverFlush()); Socket socket = mock(Socket.class); Writer writer = mock(Writer.class); SocketPoolable socketPoolable = new SocketPoolable(null, socket, writer, new NeverFlush()); socketAllocator.deallocate(socketPoolable); verify(socket).close(); verify(writer).close(); }