public void connect(SocketAddress remoteAddress, SocketAddress peerAddress, String serverName, Handler<AsyncResult<Channel>> channelHandler) { Handler<AsyncResult<Channel>> handler = res -> { if (Context.isOnEventLoopThread()) { channelHandler.handle(res); } else { // We are on the GlobalEventExecutor context.nettyEventLoop().execute(() -> channelHandler.handle(res)); } }; if (proxyOptions != null) { handleProxyConnect(remoteAddress, peerAddress, serverName, handler); } else { handleConnect(remoteAddress, peerAddress, serverName, handler); } }
@Override public void stop() throws Exception { assertTrue(Context.isOnVertxThread()); assertFalse(Context.isOnWorkerThread()); assertTrue(Context.isOnEventLoopThread()); } };
@Override public void start() throws Exception { assertTrue(Context.isOnVertxThread()); assertTrue(Context.isOnWorkerThread()); assertFalse(Context.isOnEventLoopThread()); }
@Override public void stop() throws Exception { assertTrue(Context.isOnVertxThread()); assertTrue(Context.isOnWorkerThread()); assertFalse(Context.isOnEventLoopThread()); } };
@Override public void start() throws Exception { assertTrue(Context.isOnVertxThread()); assertFalse(Context.isOnWorkerThread()); assertTrue(Context.isOnEventLoopThread()); }
@Override public void start() throws Exception { vertx.executeBlocking(fut -> { thread.set(Thread.currentThread()); assertTrue(Context.isOnVertxThread()); assertTrue(Context.isOnWorkerThread()); assertFalse(Context.isOnEventLoopThread()); assertTrue(Thread.currentThread().getName().startsWith(poolName + "-")); fut.complete(); }, onSuccess(v -> { vertx.undeploy(context.deploymentID()); })); } }, new DeploymentOptions().setWorkerPoolName(poolName), onSuccess(v -> {}));
@Override public void start() throws Exception { thread.set(Thread.currentThread()); assertTrue(Context.isOnVertxThread()); assertTrue(Context.isOnWorkerThread()); assertFalse(Context.isOnEventLoopThread()); assertTrue(Thread.currentThread().getName().startsWith(poolName + "-")); context.runOnContext(v -> { vertx.undeploy(context.deploymentID()); }); } }, new DeploymentOptions().setWorker(true).setWorkerPoolName(poolName), onSuccess(deployment::set));
@Test public void testThread() { String poolName = TestUtils.randomAlphaString(10); WorkerExecutor worker = vertx.createSharedWorkerExecutor(poolName); AtomicBoolean onVertxThread = new AtomicBoolean(); AtomicBoolean onWorkerThread = new AtomicBoolean(); AtomicBoolean onEventLoopThread = new AtomicBoolean(); AtomicReference<String> threadName = new AtomicReference<>(); worker.executeBlocking(fut -> { onVertxThread.set(Context.isOnVertxThread()); onWorkerThread.set(Context.isOnWorkerThread()); onEventLoopThread.set(Context.isOnEventLoopThread()); threadName.set(Thread.currentThread().getName()); fut.complete(null); }, ar -> { testComplete(); }); // Use regular assertions because the thread name does not start with "vert.x-" // and it confuses the VertxTestBase asserts assertWaitUntil(() -> threadName.get() != null); assertTrue(onVertxThread.get()); assertTrue(onWorkerThread.get()); assertFalse(onEventLoopThread.get()); assertTrue(threadName.get().startsWith(poolName + "-")); }
@Test public void testExecuteOrderedBlocking() throws Exception { Context context = vertx.getOrCreateContext(); context.executeBlocking(f -> { assertTrue(Context.isOnWorkerThread()); f.complete(1 + 2); }, r -> { assertTrue(Context.isOnEventLoopThread()); assertEquals(r.result(), 3); testComplete(); }); await(); }
@Test public void testExecuteUnorderedBlocking() throws Exception { Context context = vertx.getOrCreateContext(); context.executeBlocking(f -> { assertTrue(Context.isOnWorkerThread()); f.complete(1 + 2); }, false, r -> { assertTrue(Context.isOnEventLoopThread()); assertEquals(r.result(), 3); testComplete(); }); await(); }
assertTrue(Thread.currentThread().getName().startsWith("vert.x-worker-thread")); assertTrue(Context.isOnWorkerThread()); assertFalse(Context.isOnEventLoopThread()); try { Thread.sleep(pause); assertTrue(Thread.currentThread().getName().startsWith("vert.x-eventloop-thread")); assertFalse(Context.isOnWorkerThread()); assertTrue(Context.isOnEventLoopThread()); assertEquals("done!", res); latch.countDown();
assertTrue(Thread.currentThread().getName().startsWith("vert.x-worker-thread")); assertTrue(Context.isOnWorkerThread()); assertFalse(Context.isOnEventLoopThread()); try { Thread.sleep(1000); assertTrue(Thread.currentThread().getName().startsWith("vert.x-eventloop-thread")); assertFalse(Context.isOnWorkerThread()); assertTrue(Context.isOnEventLoopThread()); future.complete("done!"); }); assertTrue(Thread.currentThread().getName().startsWith("vert.x-eventloop-thread")); assertFalse(Context.isOnWorkerThread()); assertTrue(Context.isOnEventLoopThread()); assertEquals("done!", res); testComplete();
fail(ar.cause()); assertTrue("Not an EL thread", Context.isOnEventLoopThread()); complete(); }); fail(ar.cause()); assertTrue("Not an EL thread", Context.isOnEventLoopThread()); complete(); });
@Test public void testStandardRightThread() throws Exception { assertFalse(Context.isOnVertxThread()); Verticle verticle = new AbstractVerticle() { @Override public void start() throws Exception { assertTrue(Context.isOnVertxThread()); assertFalse(Context.isOnWorkerThread()); assertTrue(Context.isOnEventLoopThread()); } @Override public void stop() throws Exception { assertTrue(Context.isOnVertxThread()); assertFalse(Context.isOnWorkerThread()); assertTrue(Context.isOnEventLoopThread()); } }; vertx.deployVerticle(verticle, onSuccess(res -> { assertTrue(Context.isOnVertxThread()); assertFalse(Context.isOnWorkerThread()); assertTrue(Context.isOnEventLoopThread()); vertx.undeploy(res, onSuccess(res2 -> { assertTrue(Context.isOnVertxThread()); assertFalse(Context.isOnWorkerThread()); assertTrue(Context.isOnEventLoopThread()); testComplete(); })); })); await(); }
@Test public void testWorkerRightThread() throws Exception { assertFalse(Context.isOnVertxThread()); Verticle verticle = new AbstractVerticle() { @Override public void start() throws Exception { assertTrue(Context.isOnVertxThread()); assertTrue(Context.isOnWorkerThread()); assertFalse(Context.isOnEventLoopThread()); } @Override public void stop() throws Exception { assertTrue(Context.isOnVertxThread()); assertTrue(Context.isOnWorkerThread()); assertFalse(Context.isOnEventLoopThread()); } }; vertx.deployVerticle(verticle, new DeploymentOptions().setWorker(true), onSuccess(res -> { assertTrue(Context.isOnVertxThread()); assertFalse(Context.isOnWorkerThread()); assertTrue(Context.isOnEventLoopThread()); vertx.undeploy(res, onSuccess(res2 -> { assertTrue(Context.isOnVertxThread()); assertFalse(Context.isOnWorkerThread()); assertTrue(Context.isOnEventLoopThread()); testComplete(); })); })); await(); }
@Override public void start() throws Exception { assertTrue(Context.isOnVertxThread()); assertTrue(Context.isOnWorkerThread()); assertFalse(Context.isOnEventLoopThread()); }
@Override public void start() throws Exception { assertTrue(Context.isOnVertxThread()); assertFalse(Context.isOnWorkerThread()); assertTrue(Context.isOnEventLoopThread()); }
@Override public void stop() throws Exception { assertTrue(Context.isOnVertxThread()); assertTrue(Context.isOnWorkerThread()); assertFalse(Context.isOnEventLoopThread()); } };
@Override public void stop() throws Exception { assertTrue(Context.isOnVertxThread()); assertFalse(Context.isOnWorkerThread()); assertTrue(Context.isOnEventLoopThread()); } };
@Override public void stop() throws Exception { assertTrue(Context.isOnVertxThread()); assertTrue(Context.isOnWorkerThread()); assertFalse(Context.isOnEventLoopThread()); } };