@Test public void testValidateConnectionStale() throws Exception { final HttpConnection conn = Mockito.mock(HttpConnection.class); Mockito.when(conn.isOpen()).thenReturn(true); Mockito.when(conn.isStale()).thenReturn(false); final LocalConnFactory connFactory = Mockito.mock(LocalConnFactory.class); Mockito.when(connFactory.create(Mockito.eq("somehost"))).thenReturn(conn); final LocalConnPool pool = new LocalConnPool(connFactory, 2, 10); pool.setValidateAfterInactivity(5); final Future<LocalPoolEntry> future1 = pool.lease("somehost", null); final LocalPoolEntry entry1 = future1.get(1, TimeUnit.SECONDS); Assert.assertNotNull(entry1); pool.release(entry1, true); Thread.sleep(10); Mockito.verify(connFactory, Mockito.times(1)).create("somehost"); Mockito.when(conn.isStale()).thenReturn(true); final Future<LocalPoolEntry> future2 = pool.lease("somehost", null); final LocalPoolEntry entry2 = future2.get(1, TimeUnit.SECONDS); Assert.assertNotNull(entry2); Assert.assertNotSame(entry1, entry2); Mockito.verify(conn, Mockito.times(1)).isStale(); Mockito.verify(conn, Mockito.times(1)).close(); Mockito.verify(connFactory, Mockito.times(2)).create("somehost"); }