@Test public void testConnectFailure() { FakeConnectionProvider connector = new FakeConnectionProvider(); FakeConnectionManager mgr = new FakeConnectionManager(3, 4, connector); AtomicReference<Boolean> holdsLock = new AtomicReference<>(); FakeWaiter waiter = new FakeWaiter() { @Override public synchronized void handleFailure(Throwable failure) { assertNull(Vertx.currentContext()); Pool<FakeConnection> pool = mgr.pool(); holdsLock.set(Thread.holdsLock(pool)); super.handleFailure(failure); } }; mgr.getConnection(waiter); FakeConnection conn = connector.assertRequest(); Throwable failure = new Throwable(); conn.fail(failure); assertWaitUntil(waiter::isComplete); assertEquals(Boolean.FALSE, holdsLock.get()); waiter.assertFailure(failure); }
@Test public void testSynchronousConnectionFailure() { Throwable cause = new Throwable(); ConnectionProvider<FakeConnection> connector = new FakeConnectionProviderBase() { @Override public void connect(ConnectionListener<FakeConnection> listener, ContextInternal context, Handler<AsyncResult<ConnectResult<FakeConnection>>> handler) { handler.handle(Future.failedFuture(cause)); } }; FakeConnectionManager mgr = new FakeConnectionManager(3, 3, connector); for (int i = 0;i < 4;i++) { FakeWaiter waiter = new FakeWaiter(); mgr.getConnection(waiter); waitUntil(waiter::isFailure); waiter.assertFailure(cause); assertEquals(0, mgr.pool().weight()); } assertTrue(mgr.closed()); }
@Test public void testConnectionFailure() { FakeConnectionProvider connector = new FakeConnectionProvider(); FakeConnectionManager mgr = new FakeConnectionManager(3, 3, connector); FakeWaiter waiter = new FakeWaiter(); mgr.getConnection(waiter); FakeConnection conn = connector.assertRequest(); Exception expected = new Exception(); conn.fail(expected); assertWaitUntil(waiter::isComplete); waiter.assertFailure(expected); assertTrue(waiter.isFailure()); assertWaitUntil(mgr::closed); }
@Test public void testConnectFailure() { FakeConnectionProvider connector = new FakeConnectionProvider(); FakeConnectionManager mgr = new FakeConnectionManager(3, 4, connector); AtomicReference<Boolean> holdsLock = new AtomicReference<>(); FakeWaiter waiter = new FakeWaiter() { @Override public synchronized void handleFailure(Throwable failure) { assertNull(Vertx.currentContext()); Pool<FakeConnection> pool = mgr.pool(); holdsLock.set(Thread.holdsLock(pool)); super.handleFailure(failure); } }; mgr.getConnection(waiter); FakeConnection conn = connector.assertRequest(); Throwable failure = new Throwable(); conn.fail(failure); assertWaitUntil(waiter::isComplete); assertEquals(Boolean.FALSE, holdsLock.get()); waiter.assertFailure(failure); }
@Test public void testSynchronousConnectionFailure() { Throwable cause = new Throwable(); ConnectionProvider<FakeConnection> connector = new FakeConnectionProviderBase() { @Override public void connect(ConnectionListener<FakeConnection> listener, ContextInternal context, Handler<AsyncResult<ConnectResult<FakeConnection>>> handler) { handler.handle(Future.failedFuture(cause)); } }; FakeConnectionManager mgr = new FakeConnectionManager(3, 3, connector); for (int i = 0;i < 4;i++) { FakeWaiter waiter = new FakeWaiter(); mgr.getConnection(waiter); waitUntil(waiter::isFailure); waiter.assertFailure(cause); assertEquals(0, mgr.pool().weight()); } assertTrue(mgr.closed()); }
@Test public void testConnectionFailure() { FakeConnectionProvider connector = new FakeConnectionProvider(); FakeConnectionManager mgr = new FakeConnectionManager(3, 3, connector); FakeWaiter waiter = new FakeWaiter(); mgr.getConnection(waiter); FakeConnection conn = connector.assertRequest(); Exception expected = new Exception(); conn.fail(expected); assertWaitUntil(waiter::isComplete); waiter.assertFailure(expected); assertTrue(waiter.isFailure()); assertWaitUntil(mgr::closed); }