@Test public void testScenarios_publications() throws Exception { InMemoryClient client = new InMemoryClient(new InMemoryRoutingContext(), RecipientKind.DM); LinkedBlockingQueue<Message> queue = new LinkedBlockingQueue<>(); client.setMessageQueue(queue); MessagingContext ctx = new MessagingContext(RecipientKind.AGENTS, "domain", "app"); // Not connected, publications cannot work Message msg = new MsgCmdAddInstance(new Instance("")); Assert.assertFalse(client.isConnected()); Assert.assertEquals(0, queue.size()); client.publish(ctx, msg); Assert.assertEquals(0, queue.size()); // Connection client.openConnection(); Assert.assertTrue(client.isConnected()); client.publish(ctx, msg); Assert.assertEquals(0, queue.size()); // We need to subscribe to this context to dispatch the message. // The messaging tests verify routing more precisely. client.subscribe(ctx); client.publish(ctx, msg); Assert.assertEquals(1, queue.size()); Assert.assertEquals(msg, queue.element()); }
@Override public E element() { return queue.element(); }