Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
aos
GitHub Repository: aos/grafana-agent
Path: blob/main/component/prometheus/exporter/mysql/mysql_test.go
4095 views
1
package mysql
2
3
import (
4
"testing"
5
6
"github.com/grafana/agent/pkg/integrations/mysqld_exporter"
7
"github.com/grafana/agent/pkg/river"
8
"github.com/stretchr/testify/require"
9
)
10
11
func TestRiverConfigUnmarshal(t *testing.T) {
12
var exampleRiverConfig = `
13
data_source_name = "DataSourceName"
14
enable_collectors = ["collector1"]
15
disable_collectors = ["collector2"]
16
set_collectors = ["collector3", "collector4"]
17
lock_wait_timeout = 1
18
log_slow_filter = false
19
20
info_schema.processlist {
21
min_time = 2
22
processes_by_user = true
23
processes_by_host = false
24
}
25
26
info_schema.tables {
27
databases = "schema"
28
}
29
30
perf_schema.eventsstatements {
31
limit = 3
32
time_limit = 4
33
text_limit = 5
34
}
35
36
perf_schema.file_instances {
37
filter = "instances_filter"
38
remove_prefix = "instances_remove"
39
}
40
41
heartbeat {
42
database = "heartbeat_database"
43
table = "heartbeat_table"
44
utc = true
45
}
46
47
mysql.user {
48
privileges = false
49
}
50
`
51
52
var args Arguments
53
err := river.Unmarshal([]byte(exampleRiverConfig), &args)
54
require.NoError(t, err)
55
56
require.Equal(t, "DataSourceName", string(args.DataSourceName))
57
require.Equal(t, []string{"collector1"}, args.EnableCollectors)
58
require.Equal(t, []string{"collector2"}, args.DisableCollectors)
59
require.Equal(t, []string{"collector3", "collector4"}, args.SetCollectors)
60
require.Equal(t, 1, args.LockWaitTimeout)
61
require.False(t, args.LogSlowFilter)
62
require.Equal(t, 2, args.InfoSchemaProcessList.MinTime)
63
require.True(t, args.InfoSchemaProcessList.ProcessesByUser)
64
require.False(t, args.InfoSchemaProcessList.ProcessesByHost)
65
require.Equal(t, "schema", args.InfoSchemaTables.Databases)
66
require.Equal(t, 3, args.PerfSchemaEventsStatements.Limit)
67
require.Equal(t, 4, args.PerfSchemaEventsStatements.TimeLimit)
68
require.Equal(t, 5, args.PerfSchemaEventsStatements.TextLimit)
69
require.Equal(t, "instances_filter", args.PerfSchemaFileInstances.Filter)
70
require.Equal(t, "instances_remove", args.PerfSchemaFileInstances.RemovePrefix)
71
require.Equal(t, "heartbeat_database", args.Heartbeat.Database)
72
require.Equal(t, "heartbeat_table", args.Heartbeat.Table)
73
require.True(t, args.Heartbeat.UTC)
74
require.False(t, args.MySQLUser.Privileges)
75
}
76
77
func TestRiverConfigConvert(t *testing.T) {
78
var exampleRiverConfig = `
79
data_source_name = "DataSourceName"
80
enable_collectors = ["collector1"]
81
disable_collectors = ["collector2"]
82
set_collectors = ["collector3", "collector4"]
83
lock_wait_timeout = 1
84
log_slow_filter = false
85
86
info_schema.processlist {
87
min_time = 2
88
processes_by_user = true
89
processes_by_host = false
90
}
91
92
info_schema.tables {
93
databases = "schema"
94
}
95
96
perf_schema.eventsstatements {
97
limit = 3
98
time_limit = 4
99
text_limit = 5
100
}
101
102
perf_schema.file_instances {
103
filter = "instances_filter"
104
remove_prefix = "instances_remove"
105
}
106
107
heartbeat {
108
database = "heartbeat_database"
109
table = "heartbeat_table"
110
utc = true
111
}
112
113
mysql.user {
114
privileges = false
115
}
116
`
117
118
var args Arguments
119
err := river.Unmarshal([]byte(exampleRiverConfig), &args)
120
require.NoError(t, err)
121
122
c := args.Convert()
123
require.Equal(t, "DataSourceName", string(c.DataSourceName))
124
require.Equal(t, []string{"collector1"}, c.EnableCollectors)
125
require.Equal(t, []string{"collector2"}, c.DisableCollectors)
126
require.Equal(t, []string{"collector3", "collector4"}, c.SetCollectors)
127
require.Equal(t, 1, c.LockWaitTimeout)
128
require.False(t, c.LogSlowFilter)
129
require.Equal(t, 2, c.InfoSchemaProcessListMinTime)
130
require.True(t, c.InfoSchemaProcessListProcessesByUser)
131
require.False(t, c.InfoSchemaProcessListProcessesByHost)
132
require.Equal(t, "schema", c.InfoSchemaTablesDatabases)
133
require.Equal(t, 3, c.PerfSchemaEventsStatementsLimit)
134
require.Equal(t, 4, c.PerfSchemaEventsStatementsTimeLimit)
135
require.Equal(t, 5, c.PerfSchemaEventsStatementsTextLimit)
136
require.Equal(t, "instances_filter", c.PerfSchemaFileInstancesFilter)
137
require.Equal(t, "instances_remove", c.PerfSchemaFileInstancesRemovePrefix)
138
require.Equal(t, "heartbeat_database", c.HeartbeatDatabase)
139
require.Equal(t, "heartbeat_table", c.HeartbeatTable)
140
require.True(t, c.HeartbeatUTC)
141
require.False(t, c.MySQLUserPrivileges)
142
}
143
144
// Checks that the flow and static default configs have not drifted
145
func TestDefaultsSame(t *testing.T) {
146
convertedDefaults := DefaultArguments.Convert()
147
require.Equal(t, mysqld_exporter.DefaultConfig, *convertedDefaults)
148
}
149
150