package logparsingpipeline import ( "testing" . "github.com/smartystreets/goconvey/convey" ) var prepareProcessorTestData = []struct { Name string Operators []PipelineOperator Output []PipelineOperator }{ { Name: "Last operator disabled", Operators: []PipelineOperator{ { ID: "t1", Name: "t1", Output: "t2", Enabled: true, }, { ID: "t2", Name: "t2", Enabled: false, }, }, Output: []PipelineOperator{ { ID: "t1", Name: "t1", Enabled: true, }, }, }, { Name: "Operator in middle disabled", Operators: []PipelineOperator{ { ID: "t1", Name: "t1", Output: "t2", Enabled: true, }, { ID: "t2", Name: "t2", Output: "t3", Enabled: false, }, { ID: "t3", Name: "t3", Enabled: true, }, }, Output: []PipelineOperator{ { ID: "t1", Name: "t1", Output: "t3", Enabled: true, }, { ID: "t3", Name: "t3", Enabled: true, }, }, }, { Name: "Single operator disabled", Operators: []PipelineOperator{ { ID: "t1", Name: "t1", Output: "t2", Enabled: false, }, }, Output: []PipelineOperator{}, }, { Name: "Single operator enabled", Operators: []PipelineOperator{ { ID: "t1", Name: "t1", Enabled: true, }, }, Output: []PipelineOperator{ { ID: "t1", Name: "t1", Enabled: true, }, }, }, { Name: "Empty operator", Operators: []PipelineOperator{}, Output: []PipelineOperator{}, }, { Name: "new test", Operators: []PipelineOperator{ { ID: "move_filename", Output: "move_function", Enabled: true, Name: "move_filename", }, { ID: "move_function", Output: "move_line", Enabled: false, Name: "move_function", }, { ID: "move_line", Output: "move_lwp", Enabled: true, Name: "move_line", }, { ID: "move_lwp", Output: "move_callid", Enabled: true, Name: "move_lwp", }, { ID: "move_callid", Enabled: true, Name: "move_lwp", }, }, Output: []PipelineOperator{ { ID: "move_filename", Output: "move_line", Enabled: true, Name: "move_filename", }, { ID: "move_line", Output: "move_lwp", Enabled: true, Name: "move_line", }, { ID: "move_lwp", Output: "move_callid", Enabled: true, Name: "move_lwp", }, { ID: "move_callid", Enabled: true, Name: "move_lwp", }, }, }, { Name: "first op disabled", Operators: []PipelineOperator{ { ID: "move_filename", Output: "move_function", Enabled: false, Name: "move_filename", }, { ID: "move_function", Enabled: true, Name: "move_function", }, }, Output: []PipelineOperator{ { ID: "move_function", Enabled: true, Name: "move_function", }, }, }, } func TestPreparePipelineProcessor(t *testing.T) { for _, test := range prepareProcessorTestData { Convey(test.Name, t, func() { res := getOperators(test.Operators) So(res, ShouldResemble, test.Output) }) } }