/*
   * Sends two messages and asserts they arrive as expected on the other side using
   * the supplied decoder.
   */
  protected void doTest(AbstractByteArraySerializer decoder) throws Exception {
    server.setDecoder(decoder);
    Message<String> message = new GenericMessage<>("foo");
    assertTrue(channels.input().send(message));
    String received = server.queue.poll(10, TimeUnit.SECONDS);
    assertEquals("foo", received);

    assertTrue(channels.input().send(message));
    received = server.queue.poll(10, TimeUnit.SECONDS);
    assertEquals("foo", received);
  }
 @Test
 public void testSubscribersNotInterrupted() throws Exception {
   ConfigurableApplicationContext context =
       SpringApplication.run(TestTimeWindows.class, "--server.port=0");
   Sink sink = context.getBean(Sink.class);
   TestTimeWindows testTimeWindows = context.getBean(TestTimeWindows.class);
   sink.input().send(MessageBuilder.withPayload("hello1").build());
   sink.input().send(MessageBuilder.withPayload("hello2").build());
   sink.input().send(MessageBuilder.withPayload("hello3").build());
   assertThat(testTimeWindows.latch.await(5, TimeUnit.SECONDS)).isTrue();
   assertThat(testTimeWindows.interruptionState).isNotNull();
   assertThat(testTimeWindows.interruptionState).isFalse();
   context.close();
 }