@Test
  public final void testRoutingWithGroovy() throws InterruptedException {
    assertEquals(0, streamRepository.count());

    final StreamDefinition routerDefinition =
        new StreamDefinition(
            "routerDefinition",
            "queue:routeit > router --script='org/springframework/xd/dirt/stream/router.groovy'");
    streamDefinitionRepository.save(routerDefinition);
    streamDeployer.deploy("routerDefinition");
    Thread.sleep(1000);
    assertEquals(1, streamRepository.count());
    assertModuleRequest("router", false);

    final Module module = getModule("router", 0, moduleDeployer);
    final MessageChannel inputChannel = module.getComponent("routeit", MessageChannel.class);
    module.getComponent(MessageBus.class);
    assertNotNull(inputChannel);

    final MessageChannel outputChannelFoo = module.getComponent("queue:foo", MessageChannel.class);
    final MessageChannel outputChannelBar = module.getComponent("queue:bar", MessageChannel.class);
    assertNull(outputChannelFoo);
    assertNull(outputChannelBar);

    inputChannel.send(MessageBuilder.withPayload("a").build());
    Thread.sleep(2000);
    final MessageChannel outputChannelFoo2 = module.getComponent("queue:foo", MessageChannel.class);
    final MessageChannel outputChannelBar2 = module.getComponent("queue:bar", MessageChannel.class);
    assertNotNull(outputChannelFoo2);
    assertNull(outputChannelBar2);

    inputChannel.send(MessageBuilder.withPayload("b").build());
    Thread.sleep(1000);

    final QueueChannel outputChannelFoo3 = module.getComponent("queue:foo", QueueChannel.class);
    final QueueChannel outputChannelBar3 = module.getComponent("queue:bar", QueueChannel.class);
    assertNotNull(outputChannelFoo3);
    assertNotNull(outputChannelBar3);

    assertTrue(outputChannelFoo3.getQueueSize() == 1);
    assertTrue(outputChannelBar3.getQueueSize() == 1);

    final Message<?> fooMessage = outputChannelFoo3.receive(2000);
    final Message<?> barMessage = outputChannelBar3.receive(2000);

    assertEquals("a", fooMessage.getPayload());
    assertEquals("b", barMessage.getPayload());
  }