@Override public boolean succeeded(int index) { return future(index).succeeded(); }
@Test public void testFailedFutureRecover() { Future<String> f = Future.future(); Future<String> r = f.recover(t -> Future.succeededFuture(t.getMessage())); f.fail("recovered"); assertTrue(r.succeeded()); assertEquals(r.result(), "recovered"); }
@Test public void testSucceededFutureRecover() { Future<String> f = Future.future(); Future<String> r = f.recover(t -> Future.succeededFuture(t.getMessage())); f.complete("yeah"); assertTrue(r.succeeded()); assertEquals(r.result(), "yeah"); }
@Override public boolean succeeded() { return fut.succeeded(); }
@Test public void testResolveFutureToHandler() { Consumer<Handler<AsyncResult<String>>> consumer = handler -> { handler.handle(Future.succeededFuture("the-result")); }; Future<String> fut = Future.future(); consumer.accept(fut); assertTrue(fut.isComplete()); assertTrue(fut.succeeded()); assertEquals("the-result", fut.result()); }
@Override public void start(Future<Void> startFuture) throws Exception { JsonObject options = new JsonObject().put("telnetOptions", new JsonObject(). put("host", "localhost"). put("port", 3000) ); vertx.deployVerticle("service:io.vertx.ext.shell", new DeploymentOptions().setConfig(options), ar -> { if (ar.succeeded()) { startFuture.succeeded(); } else { startFuture.fail(ar.cause()); } }); } }
@Test public void shouldExecuteFutureAndReturnWithSuccess() { // Given CircuitBreaker circuitBreaker = CircuitBreaker.ofDefaults("testName"); CircuitBreaker.Metrics metrics = circuitBreaker.getMetrics(); assertThat(metrics.getNumberOfBufferedCalls()).isEqualTo(0); // Given the HelloWorldService returns Hello world BDDMockito.given(helloWorldService.returnHelloWorld()).willReturn(Future.succeededFuture("Hello world")); //When Future<String> future = VertxCircuitBreaker.executeFuture(circuitBreaker, helloWorldService::returnHelloWorld); //Then assertThat(future.succeeded()).isTrue(); assertThat(future.result()).isEqualTo("Hello world"); assertThat(metrics.getNumberOfBufferedCalls()).isEqualTo(1); assertThat(metrics.getNumberOfFailedCalls()).isEqualTo(0); assertThat(metrics.getNumberOfSuccessfulCalls()).isEqualTo(1); // Then the helloWorldService should be invoked 1 time BDDMockito.then(helloWorldService).should(Mockito.times(1)).returnHelloWorld(); }
@Override public void start(Future<Void> startFuture) throws Exception { JsonObject options = new JsonObject().put("httpOptions", new JsonObject(). put("host", "localhost"). put("port", 8080). put("authOptions", new JsonObject().put("provider", "shiro").put("config", new JsonObject().put("properties_path", "auth.properties"))) ); vertx.deployVerticle("service:io.vertx.ext.shell", new DeploymentOptions().setConfig(options), ar -> { if (ar.succeeded()) { startFuture.succeeded(); } else { startFuture.fail(ar.cause()); } }); } }
@Test public void shouldDecorateFutureAndReturnWithSuccess(TestContext context) { // Given CircuitBreaker circuitBreaker = CircuitBreaker.ofDefaults("testName"); CircuitBreaker.Metrics metrics = circuitBreaker.getMetrics(); assertThat(metrics.getNumberOfBufferedCalls()).isEqualTo(0); // Given the HelloWorldService returns Hello world BDDMockito.given(helloWorldService.returnHelloWorld()).willReturn(Future.succeededFuture("Hello world")); //When Supplier<Future<String>> supplier = VertxCircuitBreaker.decorateFuture(circuitBreaker, helloWorldService::returnHelloWorld); // Execute supplier Future<String> future = supplier.get(); //Then assertThat(future.succeeded()).isTrue(); assertThat(future.result()).isEqualTo("Hello world"); assertThat(metrics.getNumberOfBufferedCalls()).isEqualTo(1); assertThat(metrics.getNumberOfFailedCalls()).isEqualTo(0); assertThat(metrics.getNumberOfSuccessfulCalls()).isEqualTo(1); // Then the helloWorldService should be invoked 1 time BDDMockito.then(helloWorldService).should(Mockito.times(1)).returnHelloWorld(); }
@Override public void start(Future<Void> startFuture) throws Exception { JsonObject options = new JsonObject().put("sshOptions", new JsonObject(). put("host", "localhost"). put("port", 3000). put("keyPairOptions", new JsonObject(). put("path", "keystore.jks"). put("password", "wibble")). put("authOptions", new JsonObject().put("provider", "shiro").put("config", new JsonObject().put("properties_path", "auth.properties")) ) ); vertx.deployVerticle("service:io.vertx.ext.shell", new DeploymentOptions().setConfig(options), ar -> { if (ar.succeeded()) { startFuture.succeeded(); } else { startFuture.fail(ar.cause()); } }); } }
@Test public void testStateAfterCompletion() { Object foo = new Object(); Future<Object> future = Future.succeededFuture(foo); assertTrue(future.succeeded()); assertFalse(future.failed()); assertTrue(future.isComplete()); assertEquals(foo, future.result()); assertNull(future.cause()); Exception cause = new Exception(); future = Future.failedFuture(cause); assertFalse(future.succeeded()); assertTrue(future.failed()); assertTrue(future.isComplete()); assertNull(future.result()); assertEquals(cause, future.cause()); }
public void handle(Future<T> ar) { if (ar.succeeded()) { complete(ar.result()); } else { fail(ar.cause()); } }
Throwable assertFailed() { assertTrue(future.isComplete()); assertFalse(future.succeeded()); assertTrue(future.failed()); assertEquals(null, future.result()); assertEquals(1, count.get()); AsyncResult<T> ar = result.get(); assertNotNull(ar); assertFalse(ar.succeeded()); assertTrue(ar.failed()); assertNull(ar.result()); return future.cause(); } }
void assertSucceeded(T expected) { assertTrue(future.isComplete()); assertTrue(future.succeeded()); assertFalse(future.failed()); assertNull(future.cause()); assertEquals(expected, future.result()); assertEquals(1, count.get()); AsyncResult<T> ar = result.get(); assertNotNull(ar); assertTrue(ar.succeeded()); assertFalse(ar.failed()); assertNull(ar.cause()); assertEquals(expected, future.result()); }
void assertNotCompleted() { assertFalse(future.isComplete()); assertFalse(future.succeeded()); assertFalse(future.failed()); assertNull(future.cause()); assertNull(future.result()); assertEquals(0, count.get()); assertNull(result.get()); }
@Override public void start(Future<Void> startFuture) throws Exception { ShellService service = ShellService.create(vertx, new ShellServiceOptions(). setHttpOptions( new HttpTermOptions(). setHost("localhost"). setPort(8080). setAuthOptions(new ShiroAuthOptions(). setConfig(new JsonObject().put("properties_path", "auth.properties"))))); service.start(ar -> { if (ar.succeeded()) { startFuture.succeeded(); } else { startFuture.fail(ar.cause()); } }); } }
@Test public void testOtherwiseSuccessWithSuccess() { AtomicBoolean called = new AtomicBoolean(); Future<String> f = Future.future(); Future<String> r = f.otherwise(t -> { called.set(true); throw new AssertionError(); }); Checker<String> checker = new Checker<>(r); checker.assertNotCompleted(); f.complete("yeah"); assertTrue(r.succeeded()); checker.assertSucceeded("yeah"); assertFalse(called.get()); }
metrics.end(execMetric, res.succeeded());
@Test public void testRecoverSuccessWithSuccess() { AtomicBoolean called = new AtomicBoolean(); Future<String> f = Future.future(); Future<String> r = f.recover(t -> { called.set(true); throw new AssertionError(); }); Checker<String> checker = new Checker<>(r); checker.assertNotCompleted(); f.complete("yeah"); assertTrue(r.succeeded()); checker.assertSucceeded("yeah"); assertFalse(called.get()); }
@Override public void start(Future<Void> startFuture) throws Exception { ShellService service = ShellService.create(vertx, new ShellServiceOptions(). setSSHOptions( new SSHTermOptions(). setHost("localhost"). setPort(3000). setKeyPairOptions(new JksOptions(). setPath("keystore.jks"). setPassword("wibble")). setAuthOptions(new ShiroAuthOptions(). setConfig(new JsonObject().put("properties_path", "auth.properties"))))); service.start(ar -> { if (ar.succeeded()) { startFuture.succeeded(); } else { startFuture.fail(ar.cause()); } }); } }