@Test public void testCloseHooksCalled() throws Exception { AtomicInteger closedCount = new AtomicInteger(); Closeable myCloseable1 = completionHandler -> { closedCount.incrementAndGet(); completionHandler.handle(Future.succeededFuture()); }; Closeable myCloseable2 = completionHandler -> { closedCount.incrementAndGet(); completionHandler.handle(Future.succeededFuture()); }; VertxInternal vertx = (VertxInternal) Vertx.vertx(); vertx.addCloseHook(myCloseable1); vertx.addCloseHook(myCloseable2); // Now undeploy vertx.close(ar -> { assertTrue(ar.succeeded()); assertEquals(2, closedCount.get()); testComplete(); }); await(); }
@Test public void testCacheDirDeletedOnVertxClose() { VertxInternal vertx2 = (VertxInternal)vertx(); File file = vertx2.resolveFile(webRoot + "/somefile.html"); assertTrue(file.exists()); File cacheDir = file.getParentFile().getParentFile(); assertTrue(cacheDir.exists()); vertx2.close(onSuccess(v -> { assertFalse(cacheDir.exists()); testComplete(); })); await(); }
@Test public void testResolveFileFromClasspathDisableCaching() throws Exception { VertxInternal vertx = (VertxInternal) Vertx.vertx(new VertxOptions().setFileResolverCachingEnabled(false)); try { for (int i = 0; i < 2; i++) { File file = vertx.resolveFile("afile.html"); assertTrue(file.exists()); assertTrue(file.getPath().startsWith(".vertx" + File.separator + "file-cache-")); assertFalse(file.isDirectory()); assertEquals("<html><body>afile</body></html>", readFile(file)); } } finally { vertx.close(); } }
@Test public void testCloseHookFailure1() throws Exception { AtomicInteger closedCount = new AtomicInteger(); class Hook implements Closeable { @Override public void close(Handler<AsyncResult<Void>> completionHandler) { if (closedCount.incrementAndGet() == 1) { throw new RuntimeException(); } else { completionHandler.handle(Future.succeededFuture()); } } } VertxInternal vertx = (VertxInternal) Vertx.vertx(); vertx.addCloseHook(new Hook()); vertx.addCloseHook(new Hook()); // Now undeploy vertx.close(ar -> { assertTrue(ar.succeeded()); assertEquals(2, closedCount.get()); testComplete(); }); await(); }
@Test public void testCloseHookFailure2() throws Exception { AtomicInteger closedCount = new AtomicInteger(); class Hook implements Closeable { @Override public void close(Handler<AsyncResult<Void>> completionHandler) { if (closedCount.incrementAndGet() == 1) { completionHandler.handle(Future.succeededFuture()); throw new RuntimeException(); } else { completionHandler.handle(Future.succeededFuture()); } } } VertxInternal vertx = (VertxInternal) Vertx.vertx(); vertx.addCloseHook(new Hook()); vertx.addCloseHook(new Hook()); // Now undeploy vertx.close(ar -> { assertTrue(ar.succeeded()); assertEquals(2, closedCount.get()); testComplete(); }); await(); } }
@Test public void testCloseHooksCalled() throws Exception { AtomicInteger closedCount = new AtomicInteger(); Closeable myCloseable1 = completionHandler -> { closedCount.incrementAndGet(); completionHandler.handle(Future.succeededFuture()); }; Closeable myCloseable2 = completionHandler -> { closedCount.incrementAndGet(); completionHandler.handle(Future.succeededFuture()); }; VertxInternal vertx = (VertxInternal) Vertx.vertx(); vertx.addCloseHook(myCloseable1); vertx.addCloseHook(myCloseable2); // Now undeploy vertx.close(ar -> { assertTrue(ar.succeeded()); assertEquals(2, closedCount.get()); testComplete(); }); await(); }
@Test public void testCacheDirDeletedOnVertxClose() { VertxInternal vertx2 = (VertxInternal)vertx(); File file = vertx2.resolveFile(webRoot + "/somefile.html"); assertTrue(file.exists()); File cacheDir = file.getParentFile().getParentFile(); assertTrue(cacheDir.exists()); vertx2.close(onSuccess(v -> { assertFalse(cacheDir.exists()); testComplete(); })); await(); }
@Test public void testResolveFileFromClasspathDisableCaching() throws Exception { VertxInternal vertx = (VertxInternal) Vertx.vertx(new VertxOptions().setFileResolverCachingEnabled(false)); try { for (int i = 0; i < 2; i++) { File file = vertx.resolveFile("afile.html"); assertTrue(file.exists()); assertTrue(file.getPath().startsWith(".vertx" + File.separator + "file-cache-")); assertFalse(file.isDirectory()); assertEquals("<html><body>afile</body></html>", readFile(file)); } } finally { vertx.close(); } }
@Test public void testCloseHookFailure1() throws Exception { AtomicInteger closedCount = new AtomicInteger(); class Hook implements Closeable { @Override public void close(Handler<AsyncResult<Void>> completionHandler) { if (closedCount.incrementAndGet() == 1) { throw new RuntimeException(); } else { completionHandler.handle(Future.succeededFuture()); } } } VertxInternal vertx = (VertxInternal) Vertx.vertx(); vertx.addCloseHook(new Hook()); vertx.addCloseHook(new Hook()); // Now undeploy vertx.close(ar -> { assertTrue(ar.succeeded()); assertEquals(2, closedCount.get()); testComplete(); }); await(); }
@Test public void testCloseHookFailure2() throws Exception { AtomicInteger closedCount = new AtomicInteger(); class Hook implements Closeable { @Override public void close(Handler<AsyncResult<Void>> completionHandler) { if (closedCount.incrementAndGet() == 1) { completionHandler.handle(Future.succeededFuture()); throw new RuntimeException(); } else { completionHandler.handle(Future.succeededFuture()); } } } VertxInternal vertx = (VertxInternal) Vertx.vertx(); vertx.addCloseHook(new Hook()); vertx.addCloseHook(new Hook()); // Now undeploy vertx.close(ar -> { assertTrue(ar.succeeded()); assertEquals(2, closedCount.get()); testComplete(); }); await(); } }
public static void closeClustered(List<Vertx> clustered) throws Exception { for (Vertx vertx : clustered) { VertxInternal vertxInternal = (VertxInternal) vertx; HazelcastClusterManager clusterManager = (HazelcastClusterManager) vertxInternal.getClusterManager(); HazelcastInstance hazelcastInstance = clusterManager.getHazelcastInstance(); SECONDS.sleep(2); // Make sure rebalancing has been triggered long start = System.currentTimeMillis(); try { while (!hazelcastInstance.getPartitionService().isClusterSafe() && System.currentTimeMillis() - start < MILLISECONDS.convert(2, MINUTES)) { MILLISECONDS.sleep(100); } } catch (Exception ignore) { } CountDownLatch latch = new CountDownLatch(1); vertxInternal.close(ar -> { if (ar.failed()) { log.error("Failed to shutdown vert.x", ar.cause()); } latch.countDown(); }); latch.await(2, TimeUnit.MINUTES); } }
public static void closeClustered(List<Vertx> clustered) throws Exception { for (Vertx vertx : clustered) { VertxInternal vertxInternal = (VertxInternal) vertx; InfinispanClusterManager clusterManager = (InfinispanClusterManager) vertxInternal.getClusterManager(); EmbeddedCacheManager cacheManager = (EmbeddedCacheManager) clusterManager.getCacheContainer(); Health health = cacheManager.getHealth(); SECONDS.sleep(2); // Make sure rebalancing has been triggered long start = System.currentTimeMillis(); try { while (health.getClusterHealth().getHealthStatus() != HealthStatus.HEALTHY && System.currentTimeMillis() - start < MILLISECONDS.convert(2, MINUTES)) { MILLISECONDS.sleep(100); } } catch (Exception ignore) { } CountDownLatch latch = new CountDownLatch(1); vertxInternal.close(ar -> { if (ar.failed()) { log.error("Failed to shutdown vert.x", ar.cause()); } latch.countDown(); }); latch.await(2, TimeUnit.MINUTES); } }