@Test public void testDeployFromTestThreadNoHandler() throws Exception { MyVerticle verticle = new MyVerticle(); vertx.deployVerticle(verticle); assertWaitUntil(() -> vertx.deploymentIDs().size() == 1); }
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 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 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 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 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(); }
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 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 testAsyncDeploy() throws Exception { long start = System.currentTimeMillis(); long delay = 1000; MyAsyncVerticle verticle = new MyAsyncVerticle(f -> { vertx.setTimer(delay, id -> { f.complete(null); }); }, f -> f.complete(null)); vertx.deployVerticle(verticle, ar -> { assertTrue(ar.succeeded()); long now = System.currentTimeMillis(); assertTrue(now - start >= delay); assertTrue(vertx.deploymentIDs().contains(ar.result())); testComplete(); }); Thread.sleep(delay / 2); assertTrue(vertx.deploymentIDs().isEmpty()); 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 testSimpleFailover() throws Exception { startNodes(2, new VertxOptions().setHAEnabled(true)); DeploymentOptions options = new DeploymentOptions().setHa(true); JsonObject config = new JsonObject().put("foo", "bar"); options.setConfig(config); CountDownLatch latch = new CountDownLatch(1); vertices[0].deployVerticle("java:" + HAVerticle1.class.getName(), options, ar -> { assertTrue(ar.succeeded()); assertEquals(1, vertices[0].deploymentIDs().size()); assertEquals(0, vertices[1].deploymentIDs().size()); latch.countDown(); }); awaitLatch(latch); kill(0); assertWaitUntil(() -> vertices[1].deploymentIDs().size() == 1); checkDeploymentExists(1, "java:" + HAVerticle1.class.getName(), options); }
@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(); }
@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 testQuorum() throws Exception { vertx1 = startVertx(2); DeploymentOptions options = new DeploymentOptions().setHa(true); JsonObject config = new JsonObject().put("foo", "bar"); options.setConfig(config); vertx1.deployVerticle("java:" + HAVerticle1.class.getName(), options, ar -> { assertTrue(ar.succeeded()); assertTrue(vertx1.deploymentIDs().contains(ar.result())); testComplete(); }); // Shouldn't deploy until a quorum is obtained assertWaitUntil(() -> vertx1.deploymentIDs().isEmpty()); vertx2 = startVertx(2); // Now should be deployed await(); }
@Test public void testGetInstanceCount() throws Exception { class MultiInstanceVerticle extends AbstractVerticle { @Override public void start() { assertEquals(vertx.getOrCreateContext().getInstanceCount(), 1); } } vertx.deployVerticle(new MultiInstanceVerticle(), ar -> { assertTrue(ar.succeeded()); testComplete(); }); await(); Deployment deployment = ((VertxInternal) vertx).getDeployment(vertx.deploymentIDs().iterator().next()); vertx.undeploy(deployment.deploymentID()); }
@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(); }
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 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 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); }