@Test public void testUndeployWhenUndeployIsInProgress() throws Exception { int numIts = 10; CountDownLatch latch = new CountDownLatch(numIts); for (int i = 0; i < numIts; i++) { Verticle parent = new AbstractVerticle() { @Override public void start() throws Exception { vertx.deployVerticle(new AbstractVerticle() { }, id -> vertx.undeploy(id.result())); } }; vertx.deployVerticle(parent, id -> { vertx.undeploy(id.result(), res -> { latch.countDown(); }); }); } awaitLatch(latch); }
@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 testGetInstanceCountMultipleVerticles() throws Exception { AtomicInteger messageCount = new AtomicInteger(0); AtomicInteger totalReportedInstances = new AtomicInteger(0); vertx.eventBus().consumer("instanceCount", event -> { messageCount.incrementAndGet(); totalReportedInstances.addAndGet((int)event.body()); if(messageCount.intValue() == 3) { assertEquals(9, totalReportedInstances.get()); testComplete(); } }); vertx.deployVerticle(TestVerticle3.class.getCanonicalName(), new DeploymentOptions().setInstances(3), ar -> { assertTrue(ar.succeeded()); }); await(); Deployment deployment = ((VertxInternal) vertx).getDeployment(vertx.deploymentIDs().iterator().next()); CountDownLatch latch = new CountDownLatch(1); vertx.undeploy(deployment.deploymentID(), ar -> latch.countDown()); awaitLatch(latch); }
@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; }
}); }); awaitLatch(latch);
@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; }
deployLatch.countDown(); })); awaitLatch(deployLatch); assertWaitUntil(() -> deployCount.get() == numInstances); assertEquals(1, vertx.deploymentIDs().size()); undeployLatch.countDown(); })); awaitLatch(undeployLatch); assertWaitUntil(() -> deployCount.get() == numInstances); assertTrue(vertx.deploymentIDs().isEmpty());
@Test public void testUndeployWhenUndeployIsInProgress() throws Exception { int numIts = 10; CountDownLatch latch = new CountDownLatch(numIts); for (int i = 0; i < numIts; i++) { Verticle parent = new AbstractVerticle() { @Override public void start() throws Exception { vertx.deployVerticle(new AbstractVerticle() { }, id -> vertx.undeploy(id.result())); } }; vertx.deployVerticle(parent, id -> { vertx.undeploy(id.result(), res -> { latch.countDown(); }); }); } awaitLatch(latch); }
@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 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 testGetInstanceCountMultipleVerticles() throws Exception { AtomicInteger messageCount = new AtomicInteger(0); AtomicInteger totalReportedInstances = new AtomicInteger(0); vertx.eventBus().consumer("instanceCount", event -> { messageCount.incrementAndGet(); totalReportedInstances.addAndGet((int)event.body()); if(messageCount.intValue() == 3) { assertEquals(9, totalReportedInstances.get()); testComplete(); } }); vertx.deployVerticle(TestVerticle3.class.getCanonicalName(), new DeploymentOptions().setInstances(3), ar -> { assertTrue(ar.succeeded()); }); await(); Deployment deployment = ((VertxInternal) vertx).getDeployment(vertx.deploymentIDs().iterator().next()); CountDownLatch latch = new CountDownLatch(1); vertx.undeploy(deployment.deploymentID(), ar -> latch.countDown()); awaitLatch(latch); }
@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; }
}); }); awaitLatch(latch);
deployLatch.countDown(); })); awaitLatch(deployLatch); assertWaitUntil(() -> deployCount.get() == numInstances); assertEquals(1, vertx.deploymentIDs().size()); undeployLatch.countDown(); })); awaitLatch(undeployLatch); assertWaitUntil(() -> deployCount.get() == numInstances); assertTrue(vertx.deploymentIDs().isEmpty());