@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();
}