public ServiceBundle buildAndStart() { final ServiceBundle build = build(); build.startUpCallQueue(); return build; }
public ServiceBundle buildAndStartAll() { final ServiceBundle build = build(); build.start(); return build; }
@Before public void setup() { systemManager = new QBitSystemManager(); myServiceList = new ArrayList<>(numServices); for (int index = 0; index < numServices; index++) { myServiceList.add(new MyService()); } final AtomicInteger serviceCount = new AtomicInteger(); serviceBundleBuilder = ServiceBundleBuilder.serviceBundleBuilder().setSystemManager(systemManager); serviceBundle = serviceBundleBuilder.build(); serviceBundle.addRoundRobinService("/myService", numServices, () -> myServiceList.get(serviceCount.getAndIncrement())); serviceBundle.start(); myService = serviceBundle.createLocalProxy(IMyService.class, "/myService"); }
@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 //(expected = IllegalStateException.class) public void noOverloadingBundle() { ServiceBundleBuilder.serviceBundleBuilder().build().addService(new MyService()).start(); }
@Test public void testWithServiceBundle() throws Exception { final ServiceBundleBuilder serviceBundleBuilder = ServiceBundleBuilder.serviceBundleBuilder(); serviceBundleBuilder.setCallbackManager(callbackManager); final ServiceBundle serviceBundle = serviceBundleBuilder.build(); serviceBundle.addServiceObject("abc", new MyService()); final IMyService myService = serviceBundle.createLocalProxy(IMyService.class, "abc"); serviceBundle.start(); final CountDownLatch countDownLatch = new CountDownLatch(1); callbackBuilder.setCallback(Object.class, o -> { result.set(o); countDownLatch.countDown(); }); myService.method1(callbackBuilder.build()); ServiceProxyUtils.flushServiceProxy(myService); Sys.sleep(500); assertEquals(1, callbackManagerWithTimeout.outstandingCallbacksCount()); continueMethod.countDown(); countDownLatch.await(20, TimeUnit.SECONDS); assertEquals(0, callbackManagerWithTimeout.outstandingCallbacksCount()); assertEquals("METHOD 1 RETURN", result.get()); }
@Before public void setup() { /* test service */ testService = new TestService(); /* service bundle builder */ serviceBundleBuilder = serviceBundleBuilder(); /* service bundle */ serviceBundle = serviceBundleBuilder.build(); serviceBundle.addServiceObject("service", testService); /* vertx event bus bridge to qbit. */ vertxEventBusBridgeBuilder = VertxEventBusBridgeBuilder.vertxEventBusBridgeBuilder(); vertxEventBusBridgeBuilder.addBridgeAddress(address, TestService.class); vertxEventBusBridgeBuilder.setServiceBundle(serviceBundle); serviceBundle.start(); //startall not supported yet for bridge. vertxEventBusBridgeBuilder.build(); /* latch so we can test results coming back from bridge. */ countDownLatch = new CountDownLatch(1); /* grab vertx from the bridge. */ vertx = vertxEventBusBridgeBuilder.getVertx(); ref = new AtomicReference<>(); }
final ServiceBundle serviceBundle = new ServiceBundleBuilder().setAddress("/services").build();
public ServiceBundle buildAndStart() { final ServiceBundle build = build(); build.startUpCallQueue(); return build; }
public ServiceBundle buildAndStart() { final ServiceBundle build = build(); build.startUpCallQueue(); return build; }
public ServiceBundle buildAndStartAll() { final ServiceBundle build = build(); build.start(); return build; }
MockHttpServer httpServer = new MockHttpServer(); final ServiceBundle serviceBundle = new ServiceBundleBuilder().setAddress("/services").build(); JsonMapper mapper = new BoonJsonMapper();
@Test public void testNoMethodCallFound() { ProtocolEncoder encoder = QBit.factory().createEncoder(); MockHttpServer httpServer = new MockHttpServer(); final ServiceBundle serviceBundle = new ServiceBundleBuilder().setAddress("/root").build(); JsonMapper mapper = new BoonJsonMapper(); ServiceEndpointServerImpl server = new ServiceEndpointServerImpl( httpServer, encoder, QBit.factory().createProtocolParser(), serviceBundle, mapper, 1, 100, 30, 10, null, null, null, null, null, "localhost", 8080, 0, null, null, 50, 2, 2); server.initServices(new TodoService()); server.start(); final AtomicBoolean resultsWorked = new AtomicBoolean(); resultsWorked.set(false); httpServer.sendHttpGet("/services/todo-manager/testNoMethodCallFound", null, (code, mimeType, body) -> { if (code == 404) { resultsWorked.set(true); } }); server.serviceBundle().flushSends(); Sys.sleep(100); Sys.sleep(100); server.flush(); Sys.sleep(100); waitForTrigger(20, o -> resultsWorked.get()); if (!resultsWorked.get()) { die(" we did not get timeout"); } resultsWorked.set(false); }
@Before public void before() { latch = new CountDownLatch(1); returnValue = new AtomicReference<>(); errorRef = new AtomicReference<>(); impl = new ServiceDiscoveryImpl(); empURI = URI.create("marathon://default/employeeService?env=staging"); ServiceBuilder serviceBuilder = ServiceBuilder.serviceBuilder(); serviceBuilder.getRequestQueueBuilder().setArrayBlockingQueue().setBatchSize(10); serviceQueue = serviceBuilder.setServiceObject(impl).buildAndStartAll(); ServiceBundleBuilder serviceBundleBuilder = ServiceBundleBuilder.serviceBundleBuilder(); serviceBundleBuilder.getRequestQueueBuilder().setArrayBlockingQueue().setBatchSize(10); serviceBundle = serviceBundleBuilder.build(); serviceBundle.addServiceObject("myservice", impl); serviceQueue2 = ServiceBuilder.serviceBuilder().setInvokeDynamic(false).setServiceObject(impl) .buildAndStartAll(); serviceDiscoveryServiceBundle = serviceBundle.createLocalProxy(ServiceDiscovery.class, "myservice"); serviceBundle.start(); serviceDiscovery = serviceQueue.createProxyWithAutoFlush(ServiceDiscovery.class, Duration.TEN_MILLIS); serviceDiscoveryStrongTyped = serviceQueue2.createProxyWithAutoFlush(ServiceDiscovery.class, Duration.TEN_MILLIS); }
@Before public void setup() { super.setupLatch(); dispatcher = RoundRobinServiceWorkerBuilder .roundRobinServiceWorkerBuilder() .setFlushInterval(1) .setServiceObjectSupplier(() -> new MultiWorker()) .build(); dispatcher.start(); bundle = serviceBundleBuilder().setAddress("/root").build(); bundle.addServiceConsumer("/workers", dispatcher); bundle.startUpCallQueue(); }
@Before public void setup() { super.setupLatch(); final ShardedServiceWorkerBuilder shardedServiceWorkerBuilder = ShardedServiceWorkerBuilder .shardedServiceWorkerBuilder() .setWorkerCount(10) .setFlushInterval(50) .setServiceObjectSupplier(() -> new ContentRulesEngine()); dispatcher = shardedServiceWorkerBuilder.build(); dispatcher.start(); bundle = serviceBundleBuilder().setAddress("/root").build(); bundle.addServiceConsumer("/workers", dispatcher); bundle.start(); }
@Before public void setup() { super.setupLatch(); final Factory factory = QBit.factory(); final ProtocolParser protocolParser = factory.createProtocolParser(); final ProtocolEncoder encoder = factory.createEncoder(); final ServiceBundle serviceBundle = new ServiceBundleBuilder().setAddress("/services").build(); final JsonMapper mapper = factory.createJsonMapper(); httpServer = new HttpServerMock(); serviceServerImpl = new ServiceEndpointServerImpl(httpServer, encoder, protocolParser, serviceBundle, mapper, 1, 100, 30, 10, null, "", "", null, null, "localhost", 8080, 0, null, null, 50, 2, 2); callMeCounter = 0; responseCounter = 0; serviceServerImpl.initServices(new ServiceMockObject()); serviceServerImpl.start(); Sys.sleep(500); }
@Test public void testWithServiceQueue() { final Factory factory = QBit.factory(); final ProtocolParser protocolParser = factory.createProtocolParser(); final ProtocolEncoder encoder = factory.createEncoder(); final Queue<Response<Object>> responseQueue = QueueBuilder.queueBuilder().setName("RESPONSE QUEUE TEST").build(); final ServiceBundle serviceBundle = new ServiceBundleBuilder() .setResponseQueue(responseQueue).setAddress("/services").build(); final JsonMapper mapper = factory.createJsonMapper(); httpServer = new HttpServerMock(); serviceServerImpl = new ServiceEndpointServerImpl(httpServer, encoder, protocolParser, serviceBundle, mapper, 1, 100, 30, 10, null, null, null, null, null, "localhost", 8080, 0, null, null, 50, 2, 2); callMeCounter = 0; responseCounter = 0; ServiceQueue serviceQueue = serviceBuilder() .setResponseQueue(responseQueue) .setServiceObject(new MyOtherService()).buildAndStart(); serviceServerImpl.addServiceQueue("/services/other/serviceCall", serviceQueue); serviceServerImpl.start(); final HttpRequest request = new HttpRequestBuilder().setUri("/services/other/servicecall") .setTextReceiver(new MockReceiver()).setBody("\"call\"").build(); httpServer.sendRequest(request); Sys.sleep(100); waitForTrigger(20, o -> responseCounter == 1 && callMeCounter == 1); ok |= responseCounter == 1 || die(); ok |= callMeCounter == 1 || die(); }
@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(); }
@Test public void testWebSocketCallWithServiceQueue() throws Exception { final Factory factory = QBit.factory(); final ProtocolParser protocolParser = factory.createProtocolParser(); final ProtocolEncoder encoder = factory.createEncoder(); final Queue<Response<Object>> responseQueue = QueueBuilder.queueBuilder().setName("RESPONSE QUEUE").build(); final ServiceBundle serviceBundle = new ServiceBundleBuilder() .setResponseQueue(responseQueue).setAddress("/services").build(); final JsonMapper mapper = factory.createJsonMapper(); httpServer = new HttpServerMock(); serviceServerImpl = new ServiceEndpointServerImpl(httpServer, encoder, protocolParser, serviceBundle, mapper, 1, 100, 30, 10, null, null, null, null, null, "localhost", 8080, 0, null, null, 50, 2, 2); callMeCounter = 0; responseCounter = 0; ServiceQueue serviceQueue = serviceBuilder() .setResponseQueue(responseQueue) .setServiceObject(new MyOtherService()).buildAndStart(); serviceServerImpl.addServiceQueue("other", serviceQueue); serviceServerImpl.start(); final MethodCall<Object> methodCall = new MethodCallBuilder().setObjectName("other").setName("method").setBody(null).build(); final String message = QBit.factory().createEncoder().encodeMethodCalls("", Lists.list(methodCall)); httpServer.sendWebSocketServerMessage(new WebSocketMessageBuilder().setRemoteAddress("/foo") .setMessage(message).setSender(new MockWebSocketSender()).build()); Sys.sleep(100); waitForTrigger(20, o -> responseCounter == 1); Sys.sleep(10); ok |= responseCounter == 1 || die(); ok |= failureCounter == 0 || die(); }