private void testDeployThrowableInStart(int startAction, Class<? extends Throwable> expectedThrowable) throws Exception { MyVerticle verticle = new MyVerticle(startAction, MyVerticle.NOOP); vertx.deployVerticle(verticle, ar -> { assertFalse(ar.succeeded()); assertEquals(expectedThrowable, ar.cause().getClass()); assertEquals("FooBar!", ar.cause().getMessage()); assertTrue(vertx.deploymentIDs().isEmpty()); testComplete(); }); await(); }
private void testUndeployThrowableInStop(int stopAction, Class<? extends Throwable> expectedThrowable) throws Exception { MyVerticle verticle = new MyVerticle(MyVerticle.NOOP, stopAction); vertx.deployVerticle(verticle, ar -> { assertTrue(ar.succeeded()); vertx.undeploy(ar.result(), ar2 -> { assertFalse(ar2.succeeded()); assertEquals(expectedThrowable, ar2.cause().getClass()); assertEquals("BooFar!", ar2.cause().getMessage()); assertTrue(vertx.deploymentIDs().isEmpty()); testComplete(); }); }); await(); }
@Test public void testUndeployNoHandler() throws Exception { MyVerticle verticle = new MyVerticle(); vertx.deployVerticle(verticle, ar -> { assertTrue(ar.succeeded()); vertx.undeploy(ar.result()); }); assertWaitUntil(() -> vertx.deploymentIDs().isEmpty()); }
@Test public void testUndeployAllFailureInUndeploy() throws Exception { int numVerticles = 10; List<MyVerticle> verticles = new ArrayList<>(); CountDownLatch latch = new CountDownLatch(numVerticles); for (int i = 0; i < numVerticles; i++) { MyVerticle verticle = new MyVerticle(MyVerticle.NOOP, MyVerticle.THROW_EXCEPTION); verticles.add(verticle); vertx.deployVerticle(verticle, ar2 -> { assertTrue(ar2.succeeded()); latch.countDown(); }); } awaitLatch(latch); vertx.close(ar -> { assertTrue(ar.succeeded()); for (MyVerticle verticle: verticles) { assertFalse(verticle.stopCalled); } testComplete(); }); await(); vertx = null; }
@Test public void testUndeployAll() throws Exception { int numVerticles = 10; List<MyVerticle> verticles = new ArrayList<>(); CountDownLatch latch = new CountDownLatch(numVerticles); for (int i = 0; i < numVerticles; i++) { MyVerticle verticle = new MyVerticle(); verticles.add(verticle); vertx.deployVerticle("java:" + ParentVerticle.class.getName(), onSuccess(res -> { latch.countDown(); })); } awaitLatch(latch); assertEquals(2 * numVerticles, vertx.deploymentIDs().size()); vertx.close(ar -> { assertTrue(ar.succeeded()); assertEquals(0, vertx.deploymentIDs().size()); testComplete(); }); await(); vertx = null; }
private void testDeployFromContextThrowableInStop(int stopAction, Class<? extends Throwable> expectedThrowable) throws Exception { MyVerticle verticle = new MyVerticle(); vertx.deployVerticle(verticle, ar -> { assertTrue(ar.succeeded()); Context ctx = Vertx.currentContext(); MyVerticle verticle2 = new MyVerticle(MyVerticle.NOOP, stopAction); vertx.deployVerticle(verticle2, ar2 -> { assertTrue(ar2.succeeded()); vertx.undeploy(ar2.result(), ar3 -> { assertFalse(ar3.succeeded()); assertEquals(expectedThrowable, ar3.cause().getClass()); assertEquals("BooFar!", ar3.cause().getMessage()); assertEquals(1, vertx.deploymentIDs().size()); assertEquals(ctx, Vertx.currentContext()); testComplete(); }); }); }); await(); }
@Test public void testUndeploy() throws Exception { MyVerticle verticle = new MyVerticle(); vertx.deployVerticle(verticle, ar -> { assertTrue(ar.succeeded()); vertx.undeploy(ar.result(), ar2 -> { assertTrue(ar2.succeeded()); assertNull(ar2.result()); assertFalse(vertx.deploymentIDs().contains(ar.result())); assertEquals(verticle.startContext, verticle.stopContext); Context currentContext = Vertx.currentContext(); assertNotSame(currentContext, verticle.startContext); testComplete(); }); }); await(); }
private void testDeployFromThrowableInStart(int startAction, Class<? extends Throwable> expectedThrowable) throws Exception { MyVerticle verticle = new MyVerticle(); vertx.deployVerticle(verticle, ar -> { assertTrue(ar.succeeded()); Context ctx = Vertx.currentContext(); MyVerticle verticle2 = new MyVerticle(startAction, MyVerticle.NOOP); vertx.deployVerticle(verticle2, ar2 -> { assertFalse(ar2.succeeded()); assertEquals(expectedThrowable, ar2.cause().getClass()); assertEquals("FooBar!", ar2.cause().getMessage()); assertEquals(1, vertx.deploymentIDs().size()); Context ctx2 = Vertx.currentContext(); assertEquals(ctx, ctx2); testComplete(); }); }); await(); }
@Test public void testDeploySupplierDuplicate() { MyVerticle myVerticle = new MyVerticle(); Supplier<Verticle> supplier = () -> myVerticle; DeploymentOptions options = new DeploymentOptions().setInstances(2); // Without completion handler vertx.deployVerticle(supplier, options); assertEquals(Collections.emptySet(), vertx.deploymentIDs()); // With completion handler vertx.deployVerticle(supplier, options, onFailure(t -> { assertEquals(Collections.emptySet(), vertx.deploymentIDs()); assertFalse(myVerticle.startCalled); testComplete(); })); await(); }
@Test public void testDeployWorkerWithConfig() throws Exception { MyVerticle verticle = new MyVerticle(); JsonObject conf = generateJSONObject(); vertx.deployVerticle(verticle, new DeploymentOptions().setConfig(conf).setWorker(true), ar -> { assertDeployment(1, verticle, conf, ar); assertTrue(verticle.startContext.isWorkerContext()); assertFalse(verticle.startContext.isEventLoopContext()); vertx.undeploy(ar.result(), ar2 -> { assertTrue(ar2.succeeded()); assertEquals(verticle.startContext, verticle.stopContext); testComplete(); }); }); await(); }
@Test public void testUndeployTwice() throws Exception { MyVerticle verticle = new MyVerticle(); vertx.deployVerticle(verticle, ar -> { assertTrue(ar.succeeded()); vertx.undeploy(ar.result(), ar2 -> { assertTrue(ar2.succeeded()); vertx.undeploy(ar.result(), ar3 -> { assertFalse(ar3.succeeded()); assertTrue(ar3.cause() instanceof IllegalStateException); testComplete(); }); }); }); await(); }
@Test public void testDeployFromContext() throws Exception { MyVerticle verticle = new MyVerticle(); vertx.deployVerticle(verticle, ar -> { assertTrue(ar.succeeded()); Context ctx = Vertx.currentContext(); MyVerticle verticle2 = new MyVerticle(); vertx.deployVerticle(verticle2, ar2 -> { assertDeployment(2, verticle2, null, ar2); Context ctx2 = Vertx.currentContext(); assertEquals(ctx, ctx2); testComplete(); }); }); await(); }
@Test public void testDeployWorkerFromTestThread() throws Exception { MyVerticle verticle = new MyVerticle(); vertx.deployVerticle(verticle, new DeploymentOptions().setWorker(true), ar -> { assertDeployment(1, verticle, null, ar); assertTrue(verticle.startContext.isWorkerContext()); vertx.undeploy(ar.result(), ar2 -> { assertTrue(ar2.succeeded()); assertEquals(verticle.startContext, verticle.stopContext); testComplete(); }); }); await(); }
@Test(expected = IllegalArgumentException.class) public void testDeployInstanceSetIsolationGroup() throws Exception { vertx.deployVerticle(new MyVerticle(), new DeploymentOptions().setIsolationGroup("foo")); }
@Test(expected = IllegalArgumentException.class) public void testDeployInstanceSetIsolatedClasses() throws Exception { vertx.deployVerticle(new MyVerticle(), new DeploymentOptions().setIsolatedClasses(Arrays.asList("foo"))); }
@Test(expected = IllegalArgumentException.class) public void testDeployInstanceSetExtraClasspath() throws Exception { vertx.deployVerticle(new MyVerticle(), new DeploymentOptions().setExtraClasspath(Arrays.asList("foo"))); }
@Test(expected = IllegalArgumentException.class) public void testDeployInstanceSetInstances() throws Exception { vertx.deployVerticle(new MyVerticle(), new DeploymentOptions().setInstances(2)); }
@Test public void testDeployFromTestThread() throws Exception { MyVerticle verticle = new MyVerticle(); vertx.deployVerticle(verticle, ar -> { assertDeployment(1, verticle, null, ar); assertFalse(verticle.startContext.isWorkerContext()); assertTrue(verticle.startContext.isEventLoopContext()); testComplete(); }); await(); }
@Test public void testDeployWithConfig() throws Exception { MyVerticle verticle = new MyVerticle(); JsonObject config = generateJSONObject(); vertx.deployVerticle(verticle, new DeploymentOptions().setConfig(config), ar -> { assertDeployment(1, verticle, config, ar); testComplete(); }); await(); }
@Test public void testDeployFromTestThreadNoHandler() throws Exception { MyVerticle verticle = new MyVerticle(); vertx.deployVerticle(verticle); assertWaitUntil(() -> vertx.deploymentIDs().size() == 1); }