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  }