package com.acuitra.pipeline;
import java.util.LinkedList;
import java.util.Map;
import org.junit.Assert;
import org.junit.Test;
public class ParallelPipelineRunnerTest {
@Test
public void test() {
ParallelPipelineRunner<LinkedList<Integer>, String> runner = new ParallelPipelineRunner<>(500); // 5 seconds
Context<LinkedList<Integer>, String> context1 = new Context<>();
context1.setInput(new LinkedList<Integer>());
RunnablePipeline<LinkedList<Integer>, String> pipeline = new RunnablePipeline<LinkedList<Integer>, String>("Pipe 1", context1);
pipeline.addStage(new SlowTestStage(1, 100));
pipeline.addStage(new SlowTestStage(2, 100));
runner.addPipeline(pipeline);
Context<LinkedList<Integer>, String> context2 = new Context<>();
context2.setInput(new LinkedList<Integer>());
RunnablePipeline<LinkedList<Integer>, String> pipeline2 = new RunnablePipeline<LinkedList<Integer>, String>("Pipe 2", context2);
pipeline2.addStage(new SlowTestStage(1, 100));
pipeline2.addStage(new SlowTestStage(2, 600)); // this should fail
runner.addPipeline(pipeline2);
runner.run();
Assert.assertTrue(pipeline.isComplete());
Assert.assertFalse(pipeline2.isComplete());
Map<String, Map<String,String>> outputs = runner.getOutputs();
Map<String,String> pipe1Outputs = outputs.get("Pipe 1");
Assert.assertNotNull(pipe1Outputs);
Assert.assertEquals("COMPLETE: stage number 1", pipe1Outputs.get("1"));
Assert.assertEquals("COMPLETE: stage number 2", pipe1Outputs.get("2"));
Map<String,String> pipe2Outputs = outputs.get("Pipe 2");
Assert.assertNotNull(pipe1Outputs);
Assert.assertEquals("COMPLETE: stage number 1", pipe2Outputs.get("1"));
Assert.assertEquals("INCOMPLETE", pipe2Outputs.get("2"));
}
}