Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
aos
GitHub Repository: aos/grafana-agent
Path: blob/main/pkg/config/integrations_test.go
4094 views
1
package config
2
3
import (
4
"flag"
5
"sort"
6
"testing"
7
8
"github.com/stretchr/testify/require"
9
10
_ "github.com/grafana/agent/pkg/integrations/install" // Install integrations for tests
11
"github.com/grafana/agent/pkg/util"
12
)
13
14
func TestIntegrations_v1(t *testing.T) {
15
cfg := `
16
metrics:
17
wal_directory: /tmp/wal
18
19
integrations:
20
agent:
21
enabled: true`
22
23
fs := flag.NewFlagSet("test", flag.ExitOnError)
24
c, err := load(fs, []string{"-config.file", "test"}, func(_, _ string, _ bool, c *Config) error {
25
return LoadBytes([]byte(cfg), false, c)
26
})
27
require.NoError(t, err)
28
require.NotNil(t, c.Integrations.configV1)
29
}
30
31
func TestIntegrations_v2(t *testing.T) {
32
cfg := `
33
metrics:
34
wal_directory: /tmp/wal
35
36
integrations:
37
agent:
38
autoscrape:
39
enable: false`
40
41
fs := flag.NewFlagSet("test", flag.ExitOnError)
42
c, err := load(fs, []string{"-config.file", "test", "-enable-features=integrations-next"}, func(_, _ string, _ bool, c *Config) error {
43
return LoadBytes([]byte(cfg), false, c)
44
})
45
require.NoError(t, err)
46
require.NotNil(t, c.Integrations.configV2)
47
}
48
49
func TestEnabledIntegrations_v1(t *testing.T) {
50
cfg := `
51
metrics:
52
wal_directory: /tmp/wal
53
54
integrations:
55
agent:
56
enabled: true
57
node_exporter:
58
enabled: true`
59
60
fs := flag.NewFlagSet("test", flag.ExitOnError)
61
c, err := load(fs, []string{"-config.file", "test"}, func(_, _ string, _ bool, c *Config) error {
62
return LoadBytes([]byte(cfg), false, c)
63
})
64
require.NoError(t, err)
65
66
actual := c.Integrations.EnabledIntegrations()
67
sort.Strings(actual)
68
expected := []string{"agent", "node_exporter"}
69
sort.Strings(expected)
70
require.Equal(t, actual, expected)
71
}
72
73
func TestEnabledIntegrations_v2(t *testing.T) {
74
cfg := `
75
metrics:
76
wal_directory: /tmp/wal
77
78
integrations:
79
agent:
80
autoscrape:
81
enable: false
82
node_exporter:
83
autoscrape:
84
enable: false`
85
86
fs := flag.NewFlagSet("test", flag.ExitOnError)
87
c, err := load(fs, []string{"-config.file", "test", "-enable-features=integrations-next"}, func(_, _ string, _ bool, c *Config) error {
88
return LoadBytes([]byte(cfg), false, c)
89
})
90
require.NoError(t, err)
91
92
actual := c.Integrations.EnabledIntegrations()
93
sort.Strings(actual)
94
expected := []string{"agent", "node_exporter"}
95
sort.Strings(expected)
96
require.Equal(t, actual, expected)
97
}
98
99
func TestEnabledIntegrations_v2MultipleInstances(t *testing.T) {
100
cfg := `
101
metrics:
102
wal_directory: /tmp/wal
103
104
integrations:
105
redis_configs:
106
- redis_addr: "redis-0:6379"
107
- redis_addr: "redis-1:6379"`
108
109
fs := flag.NewFlagSet("test", flag.ExitOnError)
110
c, err := load(fs, []string{"-config.file", "test", "-enable-features=integrations-next"}, func(_, _ string, _ bool, c *Config) error {
111
return LoadBytes([]byte(cfg), false, c)
112
})
113
require.NoError(t, err)
114
require.Equal(t, c.Integrations.EnabledIntegrations(), []string{"redis"})
115
}
116
117
func TestSetVersionDoesNotOverrideExistingV1Integrations(t *testing.T) {
118
cfg := `
119
integrations:
120
agent:
121
enabled: true`
122
123
fs := flag.NewFlagSet("test", flag.ExitOnError)
124
c, err := load(fs, []string{"-config.file", "test"}, func(_, _ string, _ bool, c *Config) error {
125
return LoadBytes([]byte(cfg), false, c)
126
})
127
require.NoError(t, err)
128
require.Equal(t, 1, len(c.Integrations.configV1.Integrations))
129
130
c.Integrations.raw = util.RawYAML{}
131
c.Integrations.setVersion(integrationsVersion1)
132
require.Equal(t, 1, len(c.Integrations.configV1.Integrations))
133
}
134
135