PipelineImpl p3 = createPipeline(new LogValve(), new LogValve(), new LogValve());
PipelineImpl p2 = createPipeline(new LogValve(), new LogAndInvokeSubValve(p3), new LogValve());
pipeline = createPipeline(new LogValve(), new LogAndInvokeSubValve(p2), new LogValve());
// break levels=2
p3.getValves()[1] = new LogAndBreakValve(2);
assertInvoke(pipeline, true);
assertLog("1-1", "1-2", "2-1", "2-2", "3-1", "3-2"/* break */);
// break levels=1
p3.getValves()[1] = new LogAndBreakValve(1);
assertInvoke(pipeline, false);
assertLog("1-1", "1-2", "2-1", "2-2", "3-1", "3-2"/* break */, "1-3");
// break levels=0
p3.getValves()[1] = new LogAndBreakValve(0);
assertInvoke(pipeline, false);
assertLog("1-1", "1-2", "2-1", "2-2", "3-1", "3-2"/* break */, "2-3", "1-3");
}