Path: blob/main/component/prometheus/exporter/mysql/mysql_test.go
4095 views
package mysql12import (3"testing"45"github.com/grafana/agent/pkg/integrations/mysqld_exporter"6"github.com/grafana/agent/pkg/river"7"github.com/stretchr/testify/require"8)910func TestRiverConfigUnmarshal(t *testing.T) {11var exampleRiverConfig = `12data_source_name = "DataSourceName"13enable_collectors = ["collector1"]14disable_collectors = ["collector2"]15set_collectors = ["collector3", "collector4"]16lock_wait_timeout = 117log_slow_filter = false1819info_schema.processlist {20min_time = 221processes_by_user = true22processes_by_host = false23}2425info_schema.tables {26databases = "schema"27}2829perf_schema.eventsstatements {30limit = 331time_limit = 432text_limit = 533}3435perf_schema.file_instances {36filter = "instances_filter"37remove_prefix = "instances_remove"38}3940heartbeat {41database = "heartbeat_database"42table = "heartbeat_table"43utc = true44}4546mysql.user {47privileges = false48}49`5051var args Arguments52err := river.Unmarshal([]byte(exampleRiverConfig), &args)53require.NoError(t, err)5455require.Equal(t, "DataSourceName", string(args.DataSourceName))56require.Equal(t, []string{"collector1"}, args.EnableCollectors)57require.Equal(t, []string{"collector2"}, args.DisableCollectors)58require.Equal(t, []string{"collector3", "collector4"}, args.SetCollectors)59require.Equal(t, 1, args.LockWaitTimeout)60require.False(t, args.LogSlowFilter)61require.Equal(t, 2, args.InfoSchemaProcessList.MinTime)62require.True(t, args.InfoSchemaProcessList.ProcessesByUser)63require.False(t, args.InfoSchemaProcessList.ProcessesByHost)64require.Equal(t, "schema", args.InfoSchemaTables.Databases)65require.Equal(t, 3, args.PerfSchemaEventsStatements.Limit)66require.Equal(t, 4, args.PerfSchemaEventsStatements.TimeLimit)67require.Equal(t, 5, args.PerfSchemaEventsStatements.TextLimit)68require.Equal(t, "instances_filter", args.PerfSchemaFileInstances.Filter)69require.Equal(t, "instances_remove", args.PerfSchemaFileInstances.RemovePrefix)70require.Equal(t, "heartbeat_database", args.Heartbeat.Database)71require.Equal(t, "heartbeat_table", args.Heartbeat.Table)72require.True(t, args.Heartbeat.UTC)73require.False(t, args.MySQLUser.Privileges)74}7576func TestRiverConfigConvert(t *testing.T) {77var exampleRiverConfig = `78data_source_name = "DataSourceName"79enable_collectors = ["collector1"]80disable_collectors = ["collector2"]81set_collectors = ["collector3", "collector4"]82lock_wait_timeout = 183log_slow_filter = false8485info_schema.processlist {86min_time = 287processes_by_user = true88processes_by_host = false89}9091info_schema.tables {92databases = "schema"93}9495perf_schema.eventsstatements {96limit = 397time_limit = 498text_limit = 599}100101perf_schema.file_instances {102filter = "instances_filter"103remove_prefix = "instances_remove"104}105106heartbeat {107database = "heartbeat_database"108table = "heartbeat_table"109utc = true110}111112mysql.user {113privileges = false114}115`116117var args Arguments118err := river.Unmarshal([]byte(exampleRiverConfig), &args)119require.NoError(t, err)120121c := args.Convert()122require.Equal(t, "DataSourceName", string(c.DataSourceName))123require.Equal(t, []string{"collector1"}, c.EnableCollectors)124require.Equal(t, []string{"collector2"}, c.DisableCollectors)125require.Equal(t, []string{"collector3", "collector4"}, c.SetCollectors)126require.Equal(t, 1, c.LockWaitTimeout)127require.False(t, c.LogSlowFilter)128require.Equal(t, 2, c.InfoSchemaProcessListMinTime)129require.True(t, c.InfoSchemaProcessListProcessesByUser)130require.False(t, c.InfoSchemaProcessListProcessesByHost)131require.Equal(t, "schema", c.InfoSchemaTablesDatabases)132require.Equal(t, 3, c.PerfSchemaEventsStatementsLimit)133require.Equal(t, 4, c.PerfSchemaEventsStatementsTimeLimit)134require.Equal(t, 5, c.PerfSchemaEventsStatementsTextLimit)135require.Equal(t, "instances_filter", c.PerfSchemaFileInstancesFilter)136require.Equal(t, "instances_remove", c.PerfSchemaFileInstancesRemovePrefix)137require.Equal(t, "heartbeat_database", c.HeartbeatDatabase)138require.Equal(t, "heartbeat_table", c.HeartbeatTable)139require.True(t, c.HeartbeatUTC)140require.False(t, c.MySQLUserPrivileges)141}142143// Checks that the flow and static default configs have not drifted144func TestDefaultsSame(t *testing.T) {145convertedDefaults := DefaultArguments.Convert()146require.Equal(t, mysqld_exporter.DefaultConfig, *convertedDefaults)147}148149150