Program: 5161
Project: 5161
Buggy source:
@Test public void testDifferentInputSchemasForAction(){
  ETLPlugin mockAction=new ETLPlugin("String_Node_Str",Action.PLUGIN_TYPE,ImmutableMap.<String,String>of(),null);
  ETLBatchConfig config=ETLBatchConfig.builder("String_Node_Str").addStage(new ETLStage("String_Node_Str",MOCK_SOURCE)).addStage(new ETLStage("String_Node_Str",MOCK_TRANSFORM_A)).addStage(new ETLStage("String_Node_Str",MOCK_TRANSFORM_B)).addStage(new ETLStage("String_Node_Str",MOCK_SINK)).addStage(new ETLStage("String_Node_Str",MOCK_SINK)).addStage(new ETLStage("String_Node_Str",mockAction)).addConnection("String_Node_Str","String_Node_Str").addConnection("String_Node_Str","String_Node_Str").addConnection("String_Node_Str","String_Node_Str").addConnection("String_Node_Str","String_Node_Str").addConnection("String_Node_Str","String_Node_Str").addConnection("String_Node_Str","String_Node_Str").build();
  PipelineSpec actual=specGenerator.generateSpec(config);
  Map<String,String> emptyMap=ImmutableMap.of();
  PipelineSpec expected=BatchPipelineSpec.builder().addStage(StageSpec.builder("String_Node_Str",new PluginSpec(BatchSource.PLUGIN_TYPE,"String_Node_Str",emptyMap,ARTIFACT_ID)).setOutputSchema(SCHEMA_A).addOutputs("String_Node_Str","String_Node_Str").build()).addStage(StageSpec.builder("String_Node_Str",new PluginSpec(BatchSink.PLUGIN_TYPE,"String_Node_Str",emptyMap,ARTIFACT_ID)).addInputSchema("String_Node_Str",SCHEMA_A).addInputs("String_Node_Str").addOutputs("String_Node_Str").setErrorSchema(SCHEMA_A).build()).addStage(StageSpec.builder("String_Node_Str",new PluginSpec(BatchSink.PLUGIN_TYPE,"String_Node_Str",emptyMap,ARTIFACT_ID)).addInputSchema("String_Node_Str",SCHEMA_B).addInputs("String_Node_Str").addOutputs("String_Node_Str").setErrorSchema(SCHEMA_B).build()).addStage(StageSpec.builder("String_Node_Str",new PluginSpec(Transform.PLUGIN_TYPE,"String_Node_Str",emptyMap,ARTIFACT_ID)).addInputSchema("String_Node_Str",SCHEMA_A).setOutputSchema(SCHEMA_A).addInputs("String_Node_Str").addOutputs("String_Node_Str").setErrorSchema(SCHEMA_B).build()).addStage(StageSpec.builder("String_Node_Str",new PluginSpec(Transform.PLUGIN_TYPE,"String_Node_Str",emptyMap,ARTIFACT_ID)).addInputSchema("String_Node_Str",SCHEMA_A).setOutputSchema(SCHEMA_B).addInputs("String_Node_Str").addOutputs("String_Node_Str").setErrorSchema(SCHEMA_A).build()).addStage(StageSpec.builder("String_Node_Str",new PluginSpec(Action.PLUGIN_TYPE,"String_Node_Str",emptyMap,ARTIFACT_ID)).addInputs("String_Node_Str","String_Node_Str").build()).addConnections(config.getConnections()).setResources(config.getResources()).setDriverResources(config.getDriverResources()).setClientResources(config.getClientResources()).setStageLoggingEnabled(config.isStageLoggingEnabled()).build();
  Assert.assertEquals(expected,actual);
}

Fixed version (ground truth):
@Test public void testDifferentInputSchemasForAction(){
  ETLBatchConfig config=ETLBatchConfig.builder("String_Node_Str").addStage(new ETLStage("String_Node_Str",MOCK_SOURCE)).addStage(new ETLStage("String_Node_Str",MOCK_TRANSFORM_A)).addStage(new ETLStage("String_Node_Str",MOCK_TRANSFORM_B)).addStage(new ETLStage("String_Node_Str",MOCK_SINK)).addStage(new ETLStage("String_Node_Str",MOCK_SINK)).addStage(new ETLStage("String_Node_Str",MOCK_ACTION)).addConnection("String_Node_Str","String_Node_Str").addConnection("String_Node_Str","String_Node_Str").addConnection("String_Node_Str","String_Node_Str").addConnection("String_Node_Str","String_Node_Str").addConnection("String_Node_Str","String_Node_Str").addConnection("String_Node_Str","String_Node_Str").build();
  PipelineSpec actual=specGenerator.generateSpec(config);
  Map<String,String> emptyMap=ImmutableMap.of();
  PipelineSpec expected=BatchPipelineSpec.builder().addStage(StageSpec.builder("String_Node_Str",new PluginSpec(BatchSource.PLUGIN_TYPE,"String_Node_Str",emptyMap,ARTIFACT_ID)).setOutputSchema(SCHEMA_A).addOutputs("String_Node_Str","String_Node_Str").build()).addStage(StageSpec.builder("String_Node_Str",new PluginSpec(BatchSink.PLUGIN_TYPE,"String_Node_Str",emptyMap,ARTIFACT_ID)).addInputSchema("String_Node_Str",SCHEMA_A).addInputs("String_Node_Str").addOutputs("String_Node_Str").setErrorSchema(SCHEMA_A).build()).addStage(StageSpec.builder("String_Node_Str",new PluginSpec(BatchSink.PLUGIN_TYPE,"String_Node_Str",emptyMap,ARTIFACT_ID)).addInputSchema("String_Node_Str",SCHEMA_B).addInputs("String_Node_Str").addOutputs("String_Node_Str").setErrorSchema(SCHEMA_B).build()).addStage(StageSpec.builder("String_Node_Str",new PluginSpec(Transform.PLUGIN_TYPE,"String_Node_Str",emptyMap,ARTIFACT_ID)).addInputSchema("String_Node_Str",SCHEMA_A).setOutputSchema(SCHEMA_A).addInputs("String_Node_Str").addOutputs("String_Node_Str").setErrorSchema(SCHEMA_B).build()).addStage(StageSpec.builder("String_Node_Str",new PluginSpec(Transform.PLUGIN_TYPE,"String_Node_Str",emptyMap,ARTIFACT_ID)).addInputSchema("String_Node_Str",SCHEMA_A).setOutputSchema(SCHEMA_B).addInputs("String_Node_Str").addOutputs("String_Node_Str").setErrorSchema(SCHEMA_A).build()).addStage(StageSpec.builder("String_Node_Str",new PluginSpec(Action.PLUGIN_TYPE,"String_Node_Str",emptyMap,ARTIFACT_ID)).addInputs("String_Node_Str","String_Node_Str").build()).addConnections(config.getConnections()).setResources(config.getResources()).setDriverResources(config.getDriverResources()).setClientResources(config.getClientResources()).setStageLoggingEnabled(config.isStageLoggingEnabled()).build();
  Assert.assertEquals(expected,actual);
}