@Test public void testConnectPoolEmptyWaiterCancelledAfterConnectRequest() { FakeConnectionProvider connector = new FakeConnectionProvider(); FakeConnectionManager mgr = new FakeConnectionManager(3, 3, connector); FakeWaiter waiter = new FakeWaiter(); mgr.getConnection(waiter); FakeConnection conn = connector.assertRequest(); waiter.cancel(); conn.connect(); assertWaitUntil(waiter::isComplete); assertFalse(waiter.isSuccess()); assertFalse(waiter.isFailure()); assertFalse(mgr.contains(conn)); }
private void checkQueueMaxSize(int queueMaxSize, int poolMaxSize) { FakeConnectionProvider connector = new FakeConnectionProvider(); FakeConnectionManager mgr = new FakeConnectionManager(queueMaxSize, poolMaxSize, connector); FakeWaiter[] waiters = new FakeWaiter[poolMaxSize + queueMaxSize]; for (int i = 0;i < poolMaxSize + queueMaxSize;i++) { FakeWaiter waiter = new FakeWaiter(); waiters[i] = waiter; mgr.getConnection(waiter); } FakeWaiter waiter = new FakeWaiter(); mgr.getConnection(waiter); assertWaitUntil(waiter::isFailure); for (int i = 0;i < poolMaxSize + queueMaxSize;i++) { assertFalse("Was not expecting connection no=" + i + " to be failed", waiters[i].isFailure()); } }
@Test public void testDontCloseEndpointWithInflightRequest() { FakeConnectionProvider connector = new FakeConnectionProvider(); FakeConnectionManager mgr = new FakeConnectionManager(3, 2, connector); FakeWaiter waiter1 = new FakeWaiter(); mgr.getConnection(waiter1); FakeConnection conn = connector.assertRequest(); conn.connect(); assertWaitUntil(waiter1::isComplete); FakeWaiter waiter2 = new FakeWaiter(); mgr.getConnection(waiter2); conn.close(); assertWaitUntil(() -> !mgr.contains(conn)); assertFalse(mgr.closed()); }
@Test public void testRecycleDiscardedConnection() { FakeConnectionProvider connector = new FakeConnectionProvider(); FakeConnectionManager mgr = new FakeConnectionManager(3, 1, connector); FakeWaiter waiter1 = new FakeWaiter(); mgr.getConnection(waiter1); FakeConnection conn = connector.assertRequest(); conn.connect(); assertWaitUntil(waiter1::isComplete); FakeWaiter waiter2 = new FakeWaiter(); mgr.getConnection(waiter2); conn.close(); waiter1.recycle(); assertWaitUntil(() -> connector.requests() == 1); assertFalse(mgr.closed()); FakeConnection conn2 = connector.assertRequest(); conn2.connect(); assertWaitUntil(waiter2::isSuccess); }
@Test public void testConnectPoolEmptyWaiterCancelledAfterConnectRequest() { FakeConnectionProvider connector = new FakeConnectionProvider(); FakeConnectionManager mgr = new FakeConnectionManager(3, 3, connector); FakeWaiter waiter = new FakeWaiter(); mgr.getConnection(waiter); FakeConnection conn = connector.assertRequest(); waiter.cancel(); conn.connect(); assertWaitUntil(waiter::isComplete); assertFalse(waiter.isSuccess()); assertFalse(waiter.isFailure()); assertFalse(mgr.contains(conn)); }
private void checkQueueMaxSize(int queueMaxSize, int poolMaxSize) { FakeConnectionProvider connector = new FakeConnectionProvider(); FakeConnectionManager mgr = new FakeConnectionManager(queueMaxSize, poolMaxSize, connector); FakeWaiter[] waiters = new FakeWaiter[poolMaxSize + queueMaxSize]; for (int i = 0;i < poolMaxSize + queueMaxSize;i++) { FakeWaiter waiter = new FakeWaiter(); waiters[i] = waiter; mgr.getConnection(waiter); } FakeWaiter waiter = new FakeWaiter(); mgr.getConnection(waiter); assertWaitUntil(waiter::isFailure); for (int i = 0;i < poolMaxSize + queueMaxSize;i++) { assertFalse("Was not expecting connection no=" + i + " to be failed", waiters[i].isFailure()); } }
@Test public void testDontCloseEndpointWithInflightRequest() { FakeConnectionProvider connector = new FakeConnectionProvider(); FakeConnectionManager mgr = new FakeConnectionManager(3, 2, connector); FakeWaiter waiter1 = new FakeWaiter(); mgr.getConnection(waiter1); FakeConnection conn = connector.assertRequest(); conn.connect(); assertWaitUntil(waiter1::isComplete); FakeWaiter waiter2 = new FakeWaiter(); mgr.getConnection(waiter2); conn.close(); assertWaitUntil(() -> !mgr.contains(conn)); assertFalse(mgr.closed()); }
@Test public void testRecycleDiscardedConnection() { FakeConnectionProvider connector = new FakeConnectionProvider(); FakeConnectionManager mgr = new FakeConnectionManager(3, 1, connector); FakeWaiter waiter1 = new FakeWaiter(); mgr.getConnection(waiter1); FakeConnection conn = connector.assertRequest(); conn.connect(); assertWaitUntil(waiter1::isComplete); FakeWaiter waiter2 = new FakeWaiter(); mgr.getConnection(waiter2); conn.close(); waiter1.recycle(); assertWaitUntil(() -> connector.requests() == 1); assertFalse(mgr.closed()); FakeConnection conn2 = connector.assertRequest(); conn2.connect(); assertWaitUntil(waiter2::isSuccess); }