/** * Puts the given {@link IAgentMessage} in the list which can be fetched by the agent. * * @param platformId * the id of the agent to receive the message * @param message * the {@link IAgentMessage} */ public synchronized void provideMessage(long platformId, IAgentMessage<?> message) { if (message == null) { throw new IllegalArgumentException("The agent message may not be null."); } List<IAgentMessage<?>> messageList = Arrays.<IAgentMessage<?>> asList(message); provideMessages(platformId, messageList); }
@Test @SuppressWarnings("unchecked") public void successful() { IAgentMessage<?> messageOne = mock(IAgentMessage.class); IAgentMessage<?> messageTwo = mock(IAgentMessage.class); IAgentMessage<?> messageThree = mock(IAgentMessage.class); messageProvider.provideMessages(10L, Arrays.asList(messageOne, messageTwo, messageThree)); assertThat(messageProvider.fetchMessages(10L), contains(messageOne, messageTwo, messageThree)); }
@Test public void unknownPlatformId() { IAgentMessage<?> messageOne = mock(IAgentMessage.class); IAgentMessage<?> messageTwo = mock(IAgentMessage.class); messageProvider.provideMessages(10L, Arrays.asList(messageOne, messageTwo)); Collection<IAgentMessage<?>> result = messageProvider.fetchMessages(1L); assertThat(result, hasSize(0)); } }
@Test(expectedExceptions = IllegalArgumentException.class) public void nullMessages() { try { messageProvider.provideMessages(10L, null); } finally { assertThat(messageProvider.fetchMessages(10L), hasSize(0)); } }
@Test(expectedExceptions = IllegalArgumentException.class) @SuppressWarnings("unchecked") public void emptyMessages() { try { messageProvider.provideMessages(10L, Collections.EMPTY_LIST); } finally { assertThat(messageProvider.fetchMessages(10L), hasSize(0)); } } }
@Test public void agentDeletedEvent() { messageProvider.provideMessages(10L, Collections.<IAgentMessage<?>> singletonList(mock(IAgentMessage.class))); messageProvider.provideMessages(15L, Collections.<IAgentMessage<?>> singletonList(mock(IAgentMessage.class))); AgentDeletedEvent event = new AgentDeletedEvent(this, 10L); messageProvider.onApplicationEvent(event); assertThat(messageProvider.fetchMessages(10L), hasSize(0)); assertThat(messageProvider.fetchMessages(15L), hasSize(1)); }
@Test public void unknownEvent() { messageProvider.provideMessages(10L, Collections.<IAgentMessage<?>> singletonList(mock(IAgentMessage.class))); ApplicationEvent event = mock(ApplicationEvent.class); messageProvider.onApplicationEvent(event); assertThat(messageProvider.fetchMessages(10L), hasSize(1)); }
@Test public void agentRegisteredEvent() { messageProvider.provideMessages(10L, Collections.<IAgentMessage<?>> singletonList(mock(IAgentMessage.class))); messageProvider.provideMessages(15L, Collections.<IAgentMessage<?>> singletonList(mock(IAgentMessage.class))); AgentRegisteredEvent event = new AgentRegisteredEvent(this, 10L); messageProvider.onApplicationEvent(event); assertThat(messageProvider.fetchMessages(10L), hasSize(0)); assertThat(messageProvider.fetchMessages(15L), hasSize(1)); }
@Test public void successful() { IAgentMessage<?> messageOne = mock(IAgentMessage.class); IAgentMessage<?> messageTwo = mock(IAgentMessage.class); messageProvider.provideMessages(10L, Arrays.asList(messageOne, messageTwo)); messageProvider.clear(10L); assertThat(messageProvider.fetchMessages(10L), hasSize(0)); }
@Test @SuppressWarnings("unchecked") public void unknownPlatformId() { IAgentMessage<?> messageOne = mock(IAgentMessage.class); IAgentMessage<?> messageTwo = mock(IAgentMessage.class); messageProvider.provideMessages(10L, Arrays.asList(messageOne, messageTwo)); messageProvider.clear(20L); assertThat(messageProvider.fetchMessages(10L), contains(messageOne, messageTwo)); } }
@Test public void nullEvent() { messageProvider.provideMessages(10L, Collections.<IAgentMessage<?>> singletonList(mock(IAgentMessage.class))); messageProvider.onApplicationEvent(null); assertThat(messageProvider.fetchMessages(10L), hasSize(1)); } }
@Test @SuppressWarnings("unchecked") public void successful() { IAgentMessage<?> messageOne = mock(IAgentMessage.class); IAgentMessage<?> messageTwo = mock(IAgentMessage.class); IAgentMessage<?> messageThree = mock(IAgentMessage.class); messageProvider.provideMessages(10L, Arrays.asList(messageOne, messageTwo)); Collection<IAgentMessage<?>> resultOne = messageProvider.fetchMessages(10L); Collection<IAgentMessage<?>> resultTwo = messageProvider.fetchMessages(10L); messageProvider.provideMessage(10L, messageThree); Collection<IAgentMessage<?>> resultThree = messageProvider.fetchMessages(10L); assertThat(resultOne, contains(messageOne, messageTwo)); assertThat(resultTwo, is(empty())); assertThat(resultThree, hasSize(1)); assertThat(resultThree, hasItem(messageThree)); }