@Test public void testNoResponsePayload() { thrown.expect(RuntimeException.class); thrown.expectMessage( "No response payload received for request id 'a3f3a6db-aefc-40d3-bd49-3d52ee474630'"); Request request = new Request( UUID.fromString("a3f3a6db-aefc-40d3-bd49-3d52ee474630"), SettableFuture.create(), SettableFuture.create()); Message message = Message.buildResponse(request.getId()); channel.writeInbound(message); }
@Test public void testRequestUnexpectedResponse() { thrown.expect(RuntimeException.class); thrown.expectMessage( "Unexpected response received for request id 'db7598b0-a153-4ab1-85c2-2120a729c2db'"); Request request = new Request( UUID.fromString("db7598b0-a153-4ab1-85c2-2120a729c2db"), SettableFuture.create(), SettableFuture.create()); Integer payload = new Integer(1); Message message = Message.buildResponse(request.getId()); channel.writeInbound(payload); channel.writeInbound(message); }
@Test public void testMultipleResponsePayloads() { thrown.expect(RuntimeException.class); thrown.expectMessage( "Multiple response payloads received for request id '8f98f582-b726-408e-b974-040276b408dd'"); Request request = new Request( UUID.fromString("8f98f582-b726-408e-b974-040276b408dd"), SettableFuture.create(), SettableFuture.create()); Message message = Message.buildResponse(request.getId()); Integer payload1 = new Integer(1); Integer payload2 = new Integer(2); channel.writeInbound(payload1); channel.writeInbound(payload2); channel.writeInbound(message); } }
@Test public void testExpectedResponse() throws Exception { Request request = new Request(UUID.randomUUID(), SettableFuture.create(), SettableFuture.create()); codec.setRequest(codec.getMapping(channel), request); Integer payload = new Integer(1); Message message = Message.buildResponse(request.getId()); channel.writeInbound(payload); channel.writeInbound(message); channel.runPendingTasks(); Response response = request.getResponseFuture().get(1, TimeUnit.SECONDS); assertEquals(request.getId(), response.getInResponseTo()); assertEquals(payload, response.getPayload()); }