@Override public ServiceEndpointServer flush() { this.serviceBundle.flush(); return this; }
public void testCallBack() throws Exception { client.start(); Sys.sleep(1000); sum.set(0); final ServiceMockClientInterface mockService = client.createProxy(ServiceMockClientInterface.class, "serviceMock"); mockService.add(1, 2); mockService.sum(integer -> sum.set(integer)); client.flush(); serviceBundle.flushSends(); serviceBundle.flush(); Sys.sleep(1000); ((ClientProxy) mockService).clientProxyFlush(); client.flush(); serviceBundle.flushSends(); serviceBundle.flush(); Sys.sleep(1000); waitForTrigger(20, o -> httpSendWebSocketCalled.get()); ok = httpSendWebSocketCalled.get() || die(); waitForTrigger(20, o -> sum.get() == 3); Sys.sleep(1000); assertEquals(3, sum.get()); }
@Test public void testRecord() throws Exception { statServiceClient.recordCount("mystat", 1); serviceBundle.flush(); triggerLatchWhen(o -> replicator.count.get() == 1); waitForLatch(20); ok = replicator.count.get() == 1 || die(); }
@Test public void testResponses() throws Exception { call = MethodCallBuilder.methodCallBuilder().setAddress("/foo/adder").setName("add").setBody(Lists.list(1, 2)).build(); serviceBundle.addServiceObject("/adder", adderService); serviceBundle.call(call); serviceBundle.flushSends(); Sys.sleep(1000); responseReceiveQueue = serviceBundle.responses().receiveQueue(); serviceBundle.flush(); Sys.sleep(200); response = responseReceiveQueue.pollWait(); responseBody = response.body(); int sum = Conversions.toInt(responseBody); Assert.assertEquals("Sum should be 3", 3, sum); serviceBundle.stop(); }
@Test public void testLastSecond() throws Exception { statServiceClient.recordCount("mystat", 1); serviceBundle.flush(); triggerLatchWhen(o -> replicator.count.get() == 1); waitForLatch(20); ok = replicator.count.get() == 1 || die(); }
@Test public void testCreateProxy() throws Exception { client.start(); Sys.sleep(100); final ServiceMockClientInterface mockService = client.createProxy(ServiceMockClientInterface.class, "serviceMock"); mockService.add(1, 2); serviceBundle.flush(); ((ClientProxy) mockService).clientProxyFlush(); Sys.sleep(100); serviceBundle.flush(); Sys.sleep(100); waitForTrigger(20, o -> httpSendWebSocketCalled.get()); ok = httpSendWebSocketCalled.get() || die("Send called", httpSendWebSocketCalled); }
@Override public ServiceEndpointServer flush() { this.serviceBundle.flush(); return this; }
@Override public ServiceEndpointServer flush() { this.serviceBundle.flush(); return this; }
@Test public void testRecordAll() throws Exception { String[] names = Arry.array("stat1", "stat2"); long[] counts = Lng.array(1, 2); statServiceClient.recordAll(Timer.timer().now(), names, counts); serviceBundle.flush(); triggerLatchWhen(o -> replicator.count.get() == 3); waitForLatch(20); ok = replicator.count.get() == 3 || die(replicator.count); }
@Override public void sendText(final String body) { httpSendWebSocketCalled.set(true); periodicFlushCallback.accept(null); final List<MethodCall<Object>> methodCalls = QBit.factory().createProtocolParser().parseMethodCalls("", body); serviceBundle.call(methodCalls); serviceBundle.flush(); Sys.sleep(100); if (response != null) { if (response.wasErrors()) { puts("FAILED RESPONSE", response); } else { String simulatedMessageFromServer = QBit.factory().createEncoder().encodeResponses("", Lists.list(response)); webSocket.onTextMessage(simulatedMessageFromServer); } } else { puts(response); } } };
@Test public void testRejectCall() { final ServiceBundle serviceBundle = new ServiceBundleBuilder().setBeforeMethodCall(new BeforeMethodCall() { @Override public boolean before(MethodCall call) { beforeHandlerCalled = true; return false; } }).buildAndStart(); serviceBundle.addService(new MockServer()); final MethodCall<Object> method = QBit.factory().createMethodCallByNames("callme", "mockserver", "", Collections.emptyList(), params); serviceBundle.call(method); serviceBundle.flush(); Sys.sleep(100); ok = !called || die(); ok = beforeHandlerCalled || die(); }
@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); } }
@Test public void testAllowCall() { final ServiceBundle serviceBundle = new ServiceBundleBuilder().setBeforeMethodCall(new BeforeMethodCall() { @Override public boolean before(MethodCall call) { beforeHandlerCalled = true; return true; } }).buildAndStart(); serviceBundle.addService(new MockServer()); serviceBundle.startReturnHandlerProcessor(); final MethodCall<Object> method = QBit.factory().createMethodCallByNames("callme", "mockserver", "", Collections.emptyList(), params); serviceBundle.call(method); serviceBundle.flush(); Sys.sleep(200); ok = called || die(); ok = beforeHandlerCalled || die(); }
@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(); }