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 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(); }
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(); }
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(); }
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 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(); }
private void assertDeployment(int instances, MyVerticle verticle, JsonObject config, AsyncResult<String> ar) { assertTrue(ar.succeeded()); assertEquals(vertx, verticle.getVertx()); String deploymentID = ar.result(); assertNotNull(ar.result()); assertEquals(deploymentID, verticle.deploymentID); if (config == null) { assertEquals(0, verticle.config.size()); } else { assertEquals(config, verticle.config); } assertTrue(verticle.startCalled); assertFalse(verticle.stopCalled); assertTrue(vertx.deploymentIDs().contains(deploymentID)); assertEquals(instances, vertx.deploymentIDs().size()); Context currentContext = Vertx.currentContext(); assertNotSame(currentContext, verticle.startContext); }
@Test public void testDefaultJsonOptions() { DeploymentOptions def = new DeploymentOptions(); DeploymentOptions json = new DeploymentOptions(new JsonObject()); assertEquals(def.getConfig(), json.getConfig()); assertEquals(def.isWorker(), json.isWorker()); assertEquals(def.getIsolationGroup(), json.getIsolationGroup()); assertEquals(def.isHa(), json.isHa()); assertEquals(def.getExtraClasspath(), json.getExtraClasspath()); assertEquals(def.getIsolatedClasses(), json.getIsolatedClasses()); assertEquals(def.getWorkerPoolName(), json.getWorkerPoolName()); assertEquals(def.getWorkerPoolSize(), json.getWorkerPoolSize()); assertEquals(def.getMaxWorkerExecuteTime(), json.getMaxWorkerExecuteTime()); assertEquals(def.getMaxWorkerExecuteTimeUnit(), json.getMaxWorkerExecuteTimeUnit()); }
@Test public void testDeploySupplierNull() { Supplier<Verticle> supplier = () -> null; DeploymentOptions options = new DeploymentOptions(); // 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()); testComplete(); })); await(); }
@Test public void testNullIsolationGroup() throws Exception { vertx.deployVerticle("java:" + TestVerticle.class.getCanonicalName(), new DeploymentOptions().setIsolationGroup(null), ar -> { assertTrue(ar.succeeded()); assertEquals(1, TestVerticle.instanceCount.get()); 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 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 testDeploySupplierThrowsException() { Supplier<Verticle> supplier = () -> { throw new RuntimeException("boum"); }; // Without completion handler vertx.deployVerticle(supplier, new DeploymentOptions()); assertEquals(Collections.emptySet(), vertx.deploymentIDs()); // With completion handler vertx.deployVerticle(supplier, new DeploymentOptions().setInstances(2), onFailure(t -> { assertEquals(Collections.emptySet(), vertx.deploymentIDs()); 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 testDeployClass() { JsonObject config = generateJSONObject(); vertx.deployVerticle(ReferenceSavingMyVerticle.class, new DeploymentOptions().setInstances(4).setConfig(config), onSuccess(deploymentId -> { ReferenceSavingMyVerticle.myVerticles.forEach(myVerticle -> { assertEquals(deploymentId, myVerticle.deploymentID); assertEquals(config, myVerticle.config); assertTrue(myVerticle.startCalled); }); 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 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 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 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(); }