github.com/netdata/go.d.plugin@v0.58.1/agent/discovery/dummy/discovery_test.go (about) 1 // SPDX-License-Identifier: GPL-3.0-or-later 2 3 package dummy 4 5 import ( 6 "context" 7 "testing" 8 "time" 9 10 "github.com/netdata/go.d.plugin/agent/confgroup" 11 "github.com/netdata/go.d.plugin/agent/module" 12 13 "github.com/stretchr/testify/assert" 14 "github.com/stretchr/testify/require" 15 ) 16 17 func TestNewDiscovery(t *testing.T) { 18 tests := map[string]struct { 19 cfg Config 20 wantErr bool 21 }{ 22 "valid config": { 23 cfg: Config{ 24 Registry: confgroup.Registry{"module1": confgroup.Default{}}, 25 Names: []string{"module1", "module2"}, 26 }, 27 }, 28 "invalid config, registry not set": { 29 cfg: Config{ 30 Names: []string{"module1", "module2"}, 31 }, 32 wantErr: true, 33 }, 34 "invalid config, names not set": { 35 cfg: Config{ 36 Names: []string{"module1", "module2"}, 37 }, 38 wantErr: true, 39 }, 40 } 41 42 for name, test := range tests { 43 t.Run(name, func(t *testing.T) { 44 d, err := NewDiscovery(test.cfg) 45 46 if test.wantErr { 47 assert.Error(t, err) 48 } else { 49 require.NoError(t, err) 50 assert.NotNil(t, d) 51 } 52 }) 53 } 54 } 55 56 func TestDiscovery_Run(t *testing.T) { 57 expected := []*confgroup.Group{ 58 { 59 Source: "module1", 60 Configs: []confgroup.Config{ 61 { 62 "name": "module1", 63 "module": "module1", 64 "update_every": module.UpdateEvery, 65 "autodetection_retry": module.AutoDetectionRetry, 66 "priority": module.Priority, 67 "__source__": "module1", 68 "__provider__": "dummy", 69 }, 70 }, 71 }, 72 { 73 Source: "module2", 74 Configs: []confgroup.Config{ 75 { 76 "name": "module2", 77 "module": "module2", 78 "update_every": module.UpdateEvery, 79 "autodetection_retry": module.AutoDetectionRetry, 80 "priority": module.Priority, 81 "__source__": "module2", 82 "__provider__": "dummy", 83 }, 84 }, 85 }, 86 } 87 88 reg := confgroup.Registry{ 89 "module1": {}, 90 "module2": {}, 91 } 92 cfg := Config{ 93 Registry: reg, 94 Names: []string{"module1", "module2"}, 95 } 96 97 discovery, err := NewDiscovery(cfg) 98 require.NoError(t, err) 99 100 in := make(chan []*confgroup.Group) 101 timeout := time.Second * 2 102 103 go discovery.Run(context.Background(), in) 104 105 var actual []*confgroup.Group 106 select { 107 case actual = <-in: 108 case <-time.After(timeout): 109 t.Logf("discovery timed out after %s", timeout) 110 } 111 assert.Equal(t, expected, actual) 112 }