@Test public void testAsyncDeployFailureCalledSynchronously() throws Exception { MyAsyncVerticle verticle = new MyAsyncVerticle(f -> f.fail(new Exception("foobar")), null); vertx.deployVerticle(verticle, ar -> { assertFalse(ar.succeeded()); assertEquals("foobar", ar.cause().getMessage()); testComplete(); }); await(); }
@Test public void testAsyncUndeployFailureCalledSynchronously() throws Exception { MyAsyncVerticle verticle = new MyAsyncVerticle(f -> f.complete(null), f -> f.fail(new Exception("foobar"))); vertx.deployVerticle(verticle, ar -> { assertTrue(ar.succeeded()); vertx.undeploy(ar.result(), ar2 -> { assertFalse(ar2.succeeded()); assertEquals("foobar", ar2.cause().getMessage()); assertFalse(vertx.deploymentIDs().contains(ar.result())); testComplete(); }); }); await(); }
@Test public void testDeployUsingClassFails() throws Exception { vertx.deployVerticle("java:uhqwuhiqwduhwd", ar -> { assertFalse(ar.succeeded()); assertTrue(ar.cause() instanceof ClassNotFoundException); testComplete(); }); await(); }
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(); }
@Test public void testAsyncUndeployFailure() throws Exception { long delay = 1000; MyAsyncVerticle verticle = new MyAsyncVerticle(f-> f.complete(null), f -> vertx.setTimer(delay, id -> f.fail(new Exception("foobar")))); vertx.deployVerticle(verticle, ar -> { assertTrue(ar.succeeded()); long start = System.currentTimeMillis(); vertx.undeploy(ar.result(), ar2 -> { assertFalse(ar2.succeeded()); long now = System.currentTimeMillis(); assertTrue(now - start >= delay); assertFalse(vertx.deploymentIDs().contains(ar.result())); 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 testAsyncUndeployCalledSynchronously() throws Exception { MyAsyncVerticle verticle = new MyAsyncVerticle(f -> f.complete(null), f -> f.complete(null)); vertx.deployVerticle(verticle, ar -> { assertTrue(ar.succeeded()); vertx.undeploy(ar.result(), ar2 -> { assertTrue(ar2.succeeded()); assertFalse(vertx.deploymentIDs().contains(ar.result())); testComplete(); }); }); await(); }
@Test public void testDeployWhenClosedShouldFail() throws Exception { CountDownLatch closed = new CountDownLatch(1); vertx.close(ar -> { assertTrue(ar.succeeded()); closed.countDown(); }); awaitLatch(closed); vertx.deployVerticle(new AbstractVerticle() { }, ar -> { assertFalse(ar.succeeded()); assertEquals("Vert.x closed", ar.cause().getMessage()); testComplete(); }); await(); }
@Test public void testAsyncDeployFailure() throws Exception { long start = System.currentTimeMillis(); long delay = 1000; MyAsyncVerticle verticle = new MyAsyncVerticle(f -> vertx.setTimer(delay, id -> f.fail(new Exception("foobar"))), null); vertx.deployVerticle(verticle, ar -> { assertFalse(ar.succeeded()); assertEquals("foobar", ar.cause().getMessage()); long now = System.currentTimeMillis(); assertTrue(now - start >= delay); assertTrue(vertx.deploymentIDs().isEmpty()); testComplete(); }); await(); }
@Test public void testAsyncUndeploy() throws Exception { long delay = 1000; MyAsyncVerticle verticle = new MyAsyncVerticle(f-> f.complete(null), f -> vertx.setTimer(delay, id -> f.complete(null))); vertx.deployVerticle(verticle, ar -> { assertTrue(ar.succeeded()); long start = System.currentTimeMillis(); vertx.undeploy(ar.result(), ar2 -> { assertTrue(ar2.succeeded()); long now = System.currentTimeMillis(); assertTrue(now - start >= delay); assertFalse(vertx.deploymentIDs().contains(ar.result())); testComplete(); }); vertx.setTimer(delay / 2, id -> assertFalse(vertx.deploymentIDs().isEmpty())); }); await(); }
@Test public void testUndeployInvalidID() throws Exception { vertx.undeploy("uqhwdiuhqwd", ar -> { assertFalse(ar.succeeded()); assertTrue(ar.cause() instanceof IllegalStateException); 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 testIsolationGroup1() throws Exception { boolean expectedSuccess = Thread.currentThread().getContextClassLoader() instanceof URLClassLoader; List<String> isolatedClasses = Arrays.asList(TestVerticle.class.getCanonicalName()); try { vertx.deployVerticle("java:" + TestVerticle.class.getCanonicalName(), new DeploymentOptions().setIsolationGroup("somegroup").setIsolatedClasses(isolatedClasses), ar -> { assertTrue(ar.succeeded()); assertEquals(0, TestVerticle.instanceCount.get()); testComplete(); }); assertTrue(expectedSuccess); await(); } catch (IllegalStateException e) { assertFalse(expectedSuccess); } }
@Test public void testExtraClasspathLoaderNotInParentLoader() throws Exception { boolean expectedSuccess = Thread.currentThread().getContextClassLoader() instanceof URLClassLoader; String dir = createClassOutsideClasspath("MyVerticle"); List<String> extraClasspath = Arrays.asList(dir); try { vertx.deployVerticle("java:" + ExtraCPVerticleNotInParentLoader.class.getCanonicalName(), new DeploymentOptions().setIsolationGroup("somegroup"). setExtraClasspath(extraClasspath), ar -> { assertTrue(ar.succeeded()); testComplete(); }); assertTrue(expectedSuccess); await(); } catch (IllegalStateException e) { assertFalse(expectedSuccess); } }
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(); }
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 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(); }
@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 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 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(); }