@Before public void before() { factory = QBit.factory(); final ServiceBundle bundle = new ServiceBundleBuilder().setAddress("/foo").buildAndStart(); serviceBundle = bundle; serviceBundleImpl = (ServiceBundleImpl) bundle; adderService = new AdderService(); callCount = 0; }
final ServiceBundle bundle = new ServiceBundleBuilder().setAddress("/root").buildAndStart();
@Before public void setUp() throws Exception { setupLatch(); sum = new AtomicInteger(); client = new BoonClientFactory().create("/services", new HttpClientMock(), 10, new BeforeMethodSent() { }); client.start(); serviceBundle = new ServiceBundleBuilder().setAddress("/services").buildAndStart(); serviceBundle.addService(new ServiceMock()); sum.set(0); serviceBundle.startReturnHandlerProcessor(item -> response = item); Sys.sleep(1000); }
final ServiceBundle serviceBundle = new ServiceBundleBuilder().setAddress("/services").build();
@Test public void callingActualService() { SomeInterface myService = new SomeInterface() { @Override public void method1() { } @Override public void method2(String hi, int amount) { } @Override public String method3(String hi, int amount) { return null; } }; final ServiceBundle bundle = new ServiceBundleBuilder().setAddress("/root").buildAndStart(); bundle.addServiceObject("myService", myService); final SomeInterface myServiceProxy = bundle.createLocalProxy(SomeInterface.class, "myService"); myServiceProxy.method2("hi", 5); Sys.sleep(1000); }
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); }
final ServiceBundle serviceBundle = new ServiceBundleBuilder().setAddress("/root").buildAndStart();
@Test public void testWithBundleUsingObjectName() { final ServiceBundle serviceBundle = new ServiceBundleBuilder().setAddress("/services").buildAndStart(); serviceBundle.addService(new TodoService()); Todo todoItem = new Todo("call mom", "give mom a call", new Date()); MethodCall<Object> addMethodCall = QBit.factory().createMethodCallByNames("add", "/services/todo-manager", "call1:localhost", todoItem, null); serviceBundle.call(addMethodCall); MethodCall<Object> listMethodCall = QBit.factory().createMethodCallByNames("list", "/services/todo-manager", "call2:localhost", todoItem, null); serviceBundle.call(listMethodCall); serviceBundle.flush(); Sys.sleep(100); ReceiveQueue<Response<Object>> responses = serviceBundle.responses().receiveQueue(); Response<Object> response = responses.take(); Object body = response.body(); if (body instanceof List) { @SuppressWarnings("unchecked") List<Todo> items = (List) body; ok = items.size() > 0 || die("items should have one todo in it"); Todo todoItem1 = items.get(0); ok = todoItem.equals(todoItem1) || die("TodoItem ", todoItem, todoItem1); } else { die("Response was not a list", body); } }
@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(); }
@Test public void testWithBundleUsingAddress() { final ServiceBundle serviceBundle = new ServiceBundleBuilder().setAddress("/services").buildAndStart(); serviceBundle.addService(new TodoService()); Todo todoItem = new Todo("call mom", "give mom a call", new Date()); MethodCall<Object> addMethod = MethodCallBuilder.methodCallBuilder().setAddress("/services/todo-manager").setName("add").setReturnAddress("client1").setBody(todoItem).build(); serviceBundle.call(addMethod); MethodCall<Object> listMethod = MethodCallBuilder.methodCallBuilder().setAddress("/services/todo-manager").setName("list").setReturnAddress("client1").setBody(todoItem).build(); serviceBundle.call(listMethod); serviceBundle.flush(); Sys.sleep(100); ReceiveQueue<Response<Object>> responses = serviceBundle.responses().receiveQueue(); Response<Object> response = responses.take(); Object body = response.body(); if (body instanceof List) { @SuppressWarnings("unchecked") List<Todo> items = (List) body; ok = items.size() > 0 || die("items should have one todo in it"); Todo todoItem1 = items.get(0); ok = todoItem.equals(todoItem1) || die("TodoItem ", todoItem, todoItem1); } else { die("Response was not a list", body); } }
@Test //TODO fails sometimes during build but not always public void callingActualServiceWithReturn() { @RequestMapping("myService") class MyServiceClass implements SomeInterface { @Override public void method1() { } @Override public void method2(String hi, int amount) { } @Override public String method3(String hi, int amount) { return "Hi" + hi + " " + amount; } } SomeInterface myService = new MyServiceClass(); final ServiceBundle bundle = new ServiceBundleBuilder().setAddress("/root").buildAndStart(); bundle.addService(myService); final ReceiveQueue<Response<Object>> responseReceiveQueue = bundle.responses().receiveQueue(); final SomeInterface myServiceProxy = bundle.createLocalProxy( SomeInterface.class, "myService"); myServiceProxy.method3("hi", 5); bundle.flush(); Sys.sleep(1000); final Response<Object> objectResponse = responseReceiveQueue.pollWait(); objectResponse.address(); puts(objectResponse.body()); ok = "Hihi 5".equals(objectResponse.body()) || die(); }
@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 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(); }