@Before public void initialize() { stream = new ByteArrayOutputStream(); handler = new ByteStreamWritingMessageHandler(stream); this.channel = new QueueChannel(10); this.endpoint = new PollingConsumer(channel, handler); scheduler = new ThreadPoolTaskScheduler(); this.endpoint.setTaskScheduler(scheduler); scheduler.afterPropertiesSet(); trigger.reset(); endpoint.setTrigger(trigger); endpoint.setBeanFactory(mock(BeanFactory.class)); }
@Test public void testStreamWriteBetweenDispatches() throws IOException { endpoint.setTrigger(trigger); endpoint.setMaxMessagesPerPoll(2); endpoint.setReceiveTimeout(0); channel.send(new GenericMessage<byte[]>(new byte[] {1, 2, 3}), 0); channel.send(new GenericMessage<byte[]>(new byte[] {4, 5, 6}), 0); channel.send(new GenericMessage<byte[]>(new byte[] {7, 8, 9}), 0); endpoint.start(); trigger.await(); endpoint.stop(); byte[] result1 = stream.toByteArray(); assertEquals(6, result1.length); stream.write(new byte[] {123}); stream.flush(); trigger.reset(); endpoint.start(); trigger.await(); endpoint.stop(); byte[] result2 = stream.toByteArray(); assertEquals(10, result2.length); assertEquals(1, result2[0]); assertEquals(123, result2[6]); assertEquals(7, result2[7]); }
@Test public void testStreamResetBetweenDispatches() { endpoint.setMaxMessagesPerPoll(2); endpoint.setTrigger(trigger); endpoint.setReceiveTimeout(0); channel.send(new GenericMessage<byte[]>(new byte[] {1, 2, 3}), 0); channel.send(new GenericMessage<byte[]>(new byte[] {4, 5, 6}), 0); channel.send(new GenericMessage<byte[]>(new byte[] {7, 8, 9}), 0); endpoint.start(); trigger.await(); endpoint.stop(); byte[] result1 = stream.toByteArray(); assertEquals(6, result1.length); stream.reset(); trigger.reset(); endpoint.start(); trigger.await(); endpoint.stop(); byte[] result2 = stream.toByteArray(); assertEquals(3, result2.length); assertEquals(7, result2[0]); }
@Test public void testMaxMessagesExceedsMessageCountWithMultipleDispatches() { endpoint.setTrigger(trigger); endpoint.setMaxMessagesPerPoll(5); endpoint.setReceiveTimeout(0); channel.send(new GenericMessage<byte[]>(new byte[] {1, 2, 3}), 0); channel.send(new GenericMessage<byte[]>(new byte[] {4, 5, 6}), 0); channel.send(new GenericMessage<byte[]>(new byte[] {7, 8, 9}), 0); endpoint.start(); trigger.await(); endpoint.stop(); byte[] result1 = stream.toByteArray(); assertEquals(9, result1.length); assertEquals(1, result1[0]); trigger.reset(); endpoint.start(); trigger.await(); endpoint.stop(); byte[] result2 = stream.toByteArray(); assertEquals(9, result2.length); assertEquals(1, result2[0]); }
@Test public void testMaxMessagesLessThanMessageCountWithMultipleDispatches() { endpoint.setTrigger(trigger); endpoint.setMaxMessagesPerPoll(2); endpoint.setReceiveTimeout(0); channel.send(new GenericMessage<byte[]>(new byte[] {1, 2, 3}), 0); channel.send(new GenericMessage<byte[]>(new byte[] {4, 5, 6}), 0); channel.send(new GenericMessage<byte[]>(new byte[] {7, 8, 9}), 0); endpoint.start(); trigger.await(); endpoint.stop(); byte[] result1 = stream.toByteArray(); assertEquals(6, result1.length); assertEquals(1, result1[0]); trigger.reset(); endpoint.start(); trigger.await(); endpoint.stop(); byte[] result2 = stream.toByteArray(); assertEquals(9, result2.length); assertEquals(1, result2[0]); assertEquals(7, result2[6]); }