diff --git a/src/test/java/teetime/framework/TerminationTest.java b/src/test/java/teetime/framework/TerminationTest.java index c139f008c4f7a6a5fb04eb01cc63f95b29186b03..96a21031ed0e331af2ada9e9ebb5018a67e90ae6 100644 --- a/src/test/java/teetime/framework/TerminationTest.java +++ b/src/test/java/teetime/framework/TerminationTest.java @@ -19,6 +19,10 @@ import static org.hamcrest.Matchers.greaterThan; import static org.hamcrest.Matchers.is; import static org.junit.Assert.assertThat; +import java.util.ArrayList; +import java.util.List; + +import org.junit.Ignore; import org.junit.Test; import teetime.stage.InitialElementProducer; @@ -26,6 +30,12 @@ import teetime.stage.basic.Sink; public class TerminationTest { + @Ignore + @Test(timeout = 5000) + public void terminatesMultiInputPort() { + new Execution<Configuration>(new MultiInputConfig()).executeBlocking(); + } + @Test(timeout = 1000) public void correctAbort() throws InterruptedException { TerminationConfig configuration = new TerminationConfig(10); @@ -120,4 +130,44 @@ public class TerminationTest { } } + private class MultiInputConsumer extends AbstractConsumerStage<Object> { + + public final InputPort<Object> secondInputPort = createInputPort(Object.class); + + private int count = 0; + + @Override + protected void execute(final Object element) { + Object received = secondInputPort.receive(); + if (received != null) { + count++; + } + if (count > 3) { + this.terminate(); + } + } + + } + + private class MultiInputConfig extends Configuration { + + public MultiInputConfig() { + List<Integer> array = new ArrayList<Integer>(); + for (int i = 0; i < 10000; i++) { + array.add(new Integer(0)); + } + InitialElementProducer<Object> firstInit = new InitialElementProducer<Object>(new Object()); + InitialElementProducer<Integer> secondInit = new InitialElementProducer<Integer>(array); + MultiInputConsumer miConsumer = new MultiInputConsumer(); + + connectPorts(firstInit.getOutputPort(), miConsumer.getInputPort()); + connectPorts(secondInit.getOutputPort(), miConsumer.secondInputPort); + + firstInit.declareActive(); + secondInit.declareActive(); + miConsumer.declareActive(); + } + + } + }