github.com/netdata/go.d.plugin@v0.58.1/agent/discovery/sd/pipeline/compose_test.go (about) 1 // SPDX-License-Identifier: GPL-3.0-or-later 2 3 package pipeline 4 5 import ( 6 "testing" 7 8 "github.com/netdata/go.d.plugin/agent/confgroup" 9 "github.com/netdata/go.d.plugin/agent/discovery/sd/model" 10 11 "github.com/stretchr/testify/assert" 12 "github.com/stretchr/testify/require" 13 "gopkg.in/yaml.v2" 14 ) 15 16 func TestConfigComposer_compose(t *testing.T) { 17 config := ` 18 - selector: "rule1" 19 config: 20 - selector: "bar1" 21 template: | 22 name: {{ .Name }}-1 23 - selector: "bar2" 24 template: | 25 name: {{ .Name }}-2 26 - selector: "rule2" 27 config: 28 - selector: "bar3" 29 template: | 30 name: {{ .Name }}-3 31 - selector: "bar4" 32 template: | 33 name: {{ .Name }}-4 34 - selector: "rule3" 35 config: 36 - selector: "bar5" 37 template: | 38 name: {{ .Name }}-5 39 - selector: "bar6" 40 template: | 41 name: {{ .Name }}-6 42 ` 43 tests := map[string]struct { 44 target model.Target 45 wantConfigs []confgroup.Config 46 }{ 47 "no rules matches": { 48 target: newMockTarget("mock"), 49 wantConfigs: nil, 50 }, 51 "one rule one config": { 52 target: newMockTarget("mock", "rule1 bar1"), 53 wantConfigs: []confgroup.Config{ 54 {"name": "mock-1"}, 55 }, 56 }, 57 "one rule two config": { 58 target: newMockTarget("mock", "rule2 bar3 bar4"), 59 wantConfigs: []confgroup.Config{ 60 {"name": "mock-3"}, 61 {"name": "mock-4"}, 62 }, 63 }, 64 "all rules all configs": { 65 target: newMockTarget("mock", "rule1 bar1 bar2 rule2 bar3 bar4 rule3 bar5 bar6"), 66 wantConfigs: []confgroup.Config{ 67 {"name": "mock-1"}, 68 {"name": "mock-2"}, 69 {"name": "mock-3"}, 70 {"name": "mock-4"}, 71 {"name": "mock-5"}, 72 {"name": "mock-6"}, 73 }, 74 }, 75 } 76 77 for name, test := range tests { 78 t.Run(name, func(t *testing.T) { 79 var cfg []ComposeRuleConfig 80 81 err := yaml.Unmarshal([]byte(config), &cfg) 82 require.NoErrorf(t, err, "yaml unmarshalling of config") 83 84 cmr, err := newConfigComposer(cfg) 85 require.NoErrorf(t, err, "configComposer creation") 86 87 assert.Equal(t, test.wantConfigs, cmr.compose(test.target)) 88 }) 89 } 90 }