@Test //Works public void testWithServiceBundle() { final ServiceBundleBuilder serviceBundleBuilder = ServiceBundleBuilder.serviceBundleBuilder(); final ServiceBundle serviceBundle = serviceBundleBuilder.build().startServiceBundle(); serviceBundle.addServiceObject("foo", new FeedServiceImpl()); final FeedService feedService = serviceBundle.createLocalProxy(FeedService.class, "foo"); final Promise<List<FeedMeta>> listPromise = feedService.listFeeds().asHandler() .invokeAsBlockingPromise(Duration.ofSeconds(30)); ServiceProxyUtils.flushServiceProxy(feedService); final List<FeedMeta> feedMetas = listPromise.asHandler().get(); assertNotNull(feedMetas); assertEquals(1, feedMetas.size()); assertEquals("Hello", feedMetas.get(0).name); serviceBundle.stop(); }
@Test public void testIntegrationWithServiceBundle() throws Exception { mdcForHttpRequestInterceptor = new SetupMdcForHttpRequestInterceptor(Sets.set("foo")); final CaptureRequestInterceptor captureRequestInterceptor = new CaptureRequestInterceptor(); captureRequestInterceptor.before(methodCallBuilder.setName("restMethod").setOriginatingRequest(httpRequest).build()); final ServiceBundle serviceBundle = ServiceBundleBuilder.serviceBundleBuilder() .setBeforeMethodCallOnServiceQueue(BeforeMethodCallChain.beforeMethodCallChain(captureRequestInterceptor, mdcForHttpRequestInterceptor)) .setAfterMethodCallOnServiceQueue(AfterMethodCallChain.afterMethodCallChain(captureRequestInterceptor, mdcForHttpRequestInterceptor)) .setBeforeMethodSent(new ForwardCallMethodInterceptor(new RequestContext())).build().startServiceBundle(); serviceBundle.addServiceObject("my", new MyServiceImpl()); final MyService localProxy = serviceBundle.createLocalProxy(MyService.class, "my"); final AsyncFutureCallback<String> callback = AsyncFutureBuilder.asyncFutureBuilder().build(String.class); localProxy.getRequestURI(callback); localProxy.clientProxyFlush(); assertEquals("/foo", callback.get()); final AsyncFutureCallback<Map<String, String>> callbackMap = AsyncFutureBuilder.asyncFutureBuilder() .buildMap(String.class, String.class); localProxy.getMDC(callbackMap); localProxy.clientProxyFlush(); validate(callbackMap.get()); captureRequestInterceptor.after(null, null); serviceBundle.stop(); }
public static void main(final String... args) throws Exception { //To test locally use https://hub.docker.com/r/samuelebistoletti/docker-statsd-influxdb-grafana/ final URI statsdURI = URI.create("udp://192.168.99.100:8125"); //For timer final Reactor reactor = Reactor.reactor(); /* Create the ManagedServiceBuilder which manages a clean shutdown, health, stats, etc. */ final ManagedServiceBuilder managedServiceBuilder = ManagedServiceBuilder.managedServiceBuilder() .setRootURI("/v1") //Defaults to services .setPort(8888); //Defaults to 8080 or environment variable PORT /** Enable statsD */ enableStatsD(managedServiceBuilder, statsdURI); final StatsCollector statsCollector = managedServiceBuilder.createStatsCollector(); /** Create todo impl. */ final TodoManagerImpl impl = new TodoManagerImpl(reactor, statsCollector); /** Create service bundle for internal todo manager. */ final ServiceBundle serviceBundle = managedServiceBuilder.createServiceBundleBuilder().build(); serviceBundle.addServiceObject("todoManager", impl).startServiceBundle(); /** Create TodoManager. */ final TodoManager todoManager = serviceBundle.createLocalProxy(TodoManager.class, "todoManager"); /** Start the REST/Websocket service. */ managedServiceBuilder.addEndpointService(new TodoService(todoManager)).getEndpointServerBuilder() .build().startServer(); /* Start the admin builder which exposes health end-points and swagger meta data. */ managedServiceBuilder.getAdminBuilder().build().startServer(); System.out.println("Todo Server and Admin Server started"); }