@Override public void connect(ConnectionListener<FakeConnection> listener, ContextInternal context, Handler<AsyncResult<ConnectResult<FakeConnection>>> handler) { int i = ThreadLocalRandom.current().nextInt(100); FakeConnection conn = new FakeConnection(context, listener, Future.<ConnectResult<FakeConnection>>future().setHandler(handler)); if (i < 10) { conn.fail(new Exception("Could not connect")); } else { conn.connect(); } } };
@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 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 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); }
@Override public void connect(ConnectionListener<FakeConnection> listener, ContextInternal context, Handler<AsyncResult<ConnectResult<FakeConnection>>> handler) { int i = ThreadLocalRandom.current().nextInt(100); FakeConnection conn = new FakeConnection(context, listener, Future.<ConnectResult<FakeConnection>>future().setHandler(handler)); if (i < 10) { conn.fail(new Exception("Could not connect")); } else { conn.connect(); } } };