Assert.assertNotNull(entry1);
Assert.assertTrue(future2.isDone());
LocalPoolEntry entry2 = future2.get();
Assert.assertNotNull(entry2);
PoolStats totals = pool.getTotalStats();
Assert.assertEquals(0, totals.getAvailable());
Assert.assertEquals(2, totals.getLeased());
Assert.assertEquals(0, totals.getPending());
entry1.setState("some-stuff");
pool.release(entry1, true);
entry2.setState("some-stuff");
pool.release(entry2, true);
Future<LocalPoolEntry> future3 = pool.lease("somehost", "some-stuff");
Future<LocalPoolEntry> future4 = pool.lease("somehost", "some-stuff");
Assert.assertTrue(future1.isDone());
LocalPoolEntry entry3 = future3.get();
Assert.assertNotNull(entry3);
Assert.assertTrue(future4.isDone());
LocalPoolEntry entry4 = future4.get();
Assert.assertNotNull(entry4);
Mockito.verify(ioreactor, Mockito.times(2)).connect(
Mockito.eq(InetSocketAddress.createUnresolved("somehost", 80)),
Mockito.any(SocketAddress.class),
Mockito.any(), Mockito.any(SessionRequestCallback.class));
pool.release(entry3, true);
pool.release(entry4, true);
totals = pool.getTotalStats();
Assert.assertEquals(2, totals.getAvailable());
Assert.assertEquals(0, totals.getLeased());
Assert.assertEquals(0, totals.getPending());
Future<LocalPoolEntry> future5 = pool.lease("somehost", "some-other-stuff");
Assert.assertFalse(future5.isDone());
Mockito.verify(ioreactor, Mockito.times(3)).connect(
Mockito.eq(InetSocketAddress.createUnresolved("somehost", 80)),
Mockito.any(SocketAddress.class),
Mockito.any(), Mockito.any(SessionRequestCallback.class));
Mockito.verify(iosession1).close();
Mockito.verify(iosession2, Mockito.never()).close();
totals = pool.getTotalStats();
Assert.assertEquals(1, totals.getAvailable());
Assert.assertEquals(0, totals.getLeased());
Assert.assertEquals(1, totals.getPending());
}