@Test public void testGetConfiguration() { InMemoryClient client = new InMemoryClient(new InMemoryRoutingContext(), RecipientKind.DM); Map<String, String> conf = client.getConfiguration(); Assert.assertEquals(1, conf.size()); Assert.assertEquals( MessagingConstants.FACTORY_IN_MEMORY, conf.get(MessagingConstants.MESSAGING_TYPE_PROPERTY)); }
@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()); }
@Test public void testSetOwnerProperties_ownerId() { Set<String> ownerIds = new HashSet<>(); InMemoryClient client = new InMemoryClient(new InMemoryRoutingContext(), RecipientKind.DM); client.setOwnerProperties(RecipientKind.DM, "domain", null, null); ownerIds.add(client.getOwnerId()); client.setOwnerProperties(RecipientKind.AGENTS, "domain", "app1", "root1"); ownerIds.add(client.getOwnerId()); client.setOwnerProperties(RecipientKind.AGENTS, "domain", "app1", "root2"); ownerIds.add(client.getOwnerId()); client.setOwnerProperties(RecipientKind.AGENTS, "domain", "app2", "root2"); ownerIds.add(client.getOwnerId()); Assert.assertEquals(4, ownerIds.size()); }
@Test public void testSetOwnerProperties_propertiesAreMoved() throws Exception { // Init... InMemoryClient client = new InMemoryClient(new InMemoryRoutingContext(), RecipientKind.DM); LinkedBlockingQueue<Message> queue = new LinkedBlockingQueue<>(); client.setMessageQueue(queue); client.openConnection(); MessagingContext ctx = new MessagingContext(RecipientKind.AGENTS, "domain", "app"); client.subscribe(ctx); String ownerId_1 = client.getOwnerId(); // Verify associations Map<String, Set<MessagingContext>> sub = client.getRoutingContext().subscriptions; Map<String, LinkedBlockingQueue<Message>> ctxToQueue = ((InMemoryRoutingContext) client.getRoutingContext()).ctxToQueue; Assert.assertEquals(queue, ctxToQueue.get(ownerId_1)); Set<MessagingContext> subscribedContexts = sub.get(ownerId_1); Assert.assertNotNull(subscribedContexts); Assert.assertEquals(1, subscribedContexts.size()); Assert.assertTrue(subscribedContexts.contains(ctx)); // Change the owner ID client.setOwnerProperties(RecipientKind.AGENTS, "domain", "app1", "root1"); // Verify properties were kept String ownerId_2 = client.getOwnerId(); Assert.assertFalse(ownerId_2.equals(ownerId_1)); Assert.assertEquals(queue, ctxToQueue.get(ownerId_2)); Assert.assertNull(ctxToQueue.get(ownerId_1)); Assert.assertNull(sub.get(ownerId_1)); subscribedContexts = sub.get(ownerId_2); Assert.assertNotNull(subscribedContexts); Assert.assertEquals(1, subscribedContexts.size()); Assert.assertTrue(subscribedContexts.contains(ctx)); }
@Test public void testScenarios_subscriptions() throws Exception { InMemoryClient client = new InMemoryClient(new InMemoryRoutingContext(), RecipientKind.DM); MessagingContext ctx = new MessagingContext(RecipientKind.AGENTS, "domain", "app"); // Not connected, subscriptions cannot work Assert.assertFalse(client.isConnected()); Assert.assertNull(getSubscriptions(client)); client.subscribe(ctx); Assert.assertNull(getSubscriptions(client)); client.unsubscribe(ctx); Assert.assertNull(getSubscriptions(client)); // Connection client.openConnection(); Assert.assertTrue(client.isConnected()); client.subscribe(ctx); Assert.assertEquals(1, getSubscriptions(client).size()); Assert.assertTrue(getSubscriptions(client).contains(ctx)); client.unsubscribe(ctx); Assert.assertNull(getSubscriptions(client)); client.unsubscribe(ctx); client.unsubscribe(null); Assert.assertNull(getSubscriptions(client)); // Cleaning artifacts client.subscribe(ctx); Assert.assertEquals(1, getSubscriptions(client).size()); client.deleteMessagingServerArtifacts(null); Assert.assertNull(getSubscriptions(client)); }
@Test public void testGetMessagingType() { InMemoryClient client = new InMemoryClient(new InMemoryRoutingContext(), RecipientKind.DM); Assert.assertEquals(MessagingConstants.FACTORY_IN_MEMORY, client.getMessagingType()); }
private Set<MessagingContext> getSubscriptions(InMemoryClient client) { return client.getRoutingContext().subscriptions.get(client.getOwnerId()); }