summaryrefslogtreecommitdiffstats
path: root/src/go/collectors/go.d.plugin/agent/filestatus/store_test.go
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/go/collectors/go.d.plugin/agent/filestatus/store_test.go138
1 files changed, 138 insertions, 0 deletions
diff --git a/src/go/collectors/go.d.plugin/agent/filestatus/store_test.go b/src/go/collectors/go.d.plugin/agent/filestatus/store_test.go
new file mode 100644
index 000000000..fbf7d339b
--- /dev/null
+++ b/src/go/collectors/go.d.plugin/agent/filestatus/store_test.go
@@ -0,0 +1,138 @@
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+package filestatus
+
+import (
+ "testing"
+
+ "github.com/netdata/netdata/go/go.d.plugin/agent/confgroup"
+
+ "github.com/stretchr/testify/assert"
+)
+
+// TODO: tech debt
+func TestLoadStore(t *testing.T) {
+
+}
+
+// TODO: tech debt
+func TestStore_Contains(t *testing.T) {
+
+}
+
+func TestStore_add(t *testing.T) {
+ tests := map[string]struct {
+ prepare func() *Store
+ input confgroup.Config
+ wantItemsNum int
+ }{
+ "add cfg to the empty store": {
+ prepare: func() *Store {
+ return &Store{}
+ },
+ input: prepareConfig(
+ "module", "modName",
+ "name", "jobName",
+ ),
+ wantItemsNum: 1,
+ },
+ "add cfg that already in the store": {
+ prepare: func() *Store {
+ return &Store{
+ items: map[string]map[string]string{
+ "modName": {"jobName:18299273693089411682": "state"},
+ },
+ }
+ },
+ input: prepareConfig(
+ "module", "modName",
+ "name", "jobName",
+ ),
+ wantItemsNum: 1,
+ },
+ "add cfg with same module, same name, but specific options": {
+ prepare: func() *Store {
+ return &Store{
+ items: map[string]map[string]string{
+ "modName": {"jobName:18299273693089411682": "state"},
+ },
+ }
+ },
+ input: prepareConfig(
+ "module", "modName",
+ "name", "jobName",
+ "opt", "val",
+ ),
+ wantItemsNum: 2,
+ },
+ }
+
+ for name, test := range tests {
+ t.Run(name, func(t *testing.T) {
+ s := test.prepare()
+ s.add(test.input, "state")
+ assert.Equal(t, test.wantItemsNum, calcStoreItems(s))
+ })
+ }
+}
+
+func TestStore_remove(t *testing.T) {
+ tests := map[string]struct {
+ prepare func() *Store
+ input confgroup.Config
+ wantItemsNum int
+ }{
+ "remove cfg from the empty store": {
+ prepare: func() *Store {
+ return &Store{}
+ },
+ input: prepareConfig(
+ "module", "modName",
+ "name", "jobName",
+ ),
+ wantItemsNum: 0,
+ },
+ "remove cfg from the store": {
+ prepare: func() *Store {
+ return &Store{
+ items: map[string]map[string]string{
+ "modName": {
+ "jobName:18299273693089411682": "state",
+ "jobName:18299273693089411683": "state",
+ },
+ },
+ }
+ },
+ input: prepareConfig(
+ "module", "modName",
+ "name", "jobName",
+ ),
+ wantItemsNum: 1,
+ },
+ }
+
+ for name, test := range tests {
+ t.Run(name, func(t *testing.T) {
+ s := test.prepare()
+ s.remove(test.input)
+ assert.Equal(t, test.wantItemsNum, calcStoreItems(s))
+ })
+ }
+}
+
+func calcStoreItems(s *Store) (num int) {
+ for _, v := range s.items {
+ for range v {
+ num++
+ }
+ }
+ return num
+}
+
+func prepareConfig(values ...string) confgroup.Config {
+ cfg := confgroup.Config{}
+ for i := 1; i < len(values); i += 2 {
+ cfg[values[i-1]] = values[i]
+ }
+ return cfg
+}