Path: blob/main/component/prometheus/exporter/redis/redis_test.go
4095 views
package redis12import (3"testing"4"time"56"github.com/grafana/agent/pkg/integrations/redis_exporter"7"github.com/grafana/agent/pkg/river"8"github.com/stretchr/testify/require"9)1011func TestRiverUnmarshal(t *testing.T) {12riverConfig := `13redis_addr = "localhost:6379"14redis_user = "redis_user"15redis_password_file = "/tmp/pass"16namespace = "namespace"17config_command = "TEST_CONFIG"18check_keys = ["key1*", "cache_*"]19check_key_groups = ["other_key%d+"]20check_key_groups_batch_size = 500021max_distinct_key_groups = 5022check_single_keys = ["particular_key"]23check_streams = ["stream1*"]24check_single_streams = ["particular_stream"]25count_keys = ["count_key1", "count_key2"]26script_path = "/tmp/metrics-script.lua,/tmp/cooler-metrics-script.lua"27connection_timeout = "7s"28tls_client_key_file = "/tmp/client-key.pem"29tls_client_cert_file = "/tmp/client-cert.pem"30tls_ca_cert_file = "/tmp/ca-cert.pem"31set_client_name = false32is_tile38 = true33export_client_list = false34export_client_port = true35redis_metrics_only = false36ping_on_connect = true37incl_system_metrics = true38skip_tls_verification = false39is_cluster = true40`41var args Arguments42err := river.Unmarshal([]byte(riverConfig), &args)4344require.NoError(t, err)45expected := Arguments{46RedisAddr: "localhost:6379",47RedisUser: "redis_user",48RedisPasswordFile: "/tmp/pass",49Namespace: "namespace",50ConfigCommand: "TEST_CONFIG",5152CheckKeys: []string{"key1*", "cache_*"},53CheckKeyGroups: []string{"other_key%d+"},54CheckSingleKeys: []string{"particular_key"},55CheckKeyGroupsBatchSize: int64(5000),56MaxDistinctKeyGroups: int64(50),5758CheckStreams: []string{"stream1*"},59CheckSingleStreams: []string{"particular_stream"},60CountKeys: []string{"count_key1", "count_key2"},6162ScriptPath: "/tmp/metrics-script.lua,/tmp/cooler-metrics-script.lua",63ConnectionTimeout: 7 * time.Second,6465TLSClientKeyFile: "/tmp/client-key.pem",66TLSClientCertFile: "/tmp/client-cert.pem",67TLSCaCertFile: "/tmp/ca-cert.pem",6869SetClientName: false,70IsTile38: true,71ExportClientList: false,72ExportClientPort: true,73RedisMetricsOnly: false,74PingOnConnect: true,75InclSystemMetrics: true,76SkipTLSVerification: false,77IsCluster: true,78}79require.Equal(t, expected, args)80}8182func TestUnmarshalInvalid(t *testing.T) {83validRiverConfig := `84redis_addr = "localhost:1234"85script_path = "/tmp/metrics.lua"`8687var args Arguments88err := river.Unmarshal([]byte(validRiverConfig), &args)89require.NoError(t, err)9091invalidRiverConfig := `92redis_addr = "localhost:123493script_path = "/tmp/metrics.lua"94script_paths = ["/tmp/more-metrics.lua", "/tmp/even-more-metrics.lua"]`9596var invalidArgs Arguments97err = river.Unmarshal([]byte(invalidRiverConfig), &invalidArgs)98require.Error(t, err)99}100101func TestRiverConvert(t *testing.T) {102orig := Arguments{103RedisAddr: "localhost:6379",104RedisUser: "redis_user",105RedisPasswordFile: "/tmp/pass",106Namespace: "namespace",107ConfigCommand: "TEST_CONFIG",108109CheckKeys: []string{"key1*", "cache_*"},110CheckKeyGroups: []string{"other_key%d+"},111CheckSingleKeys: []string{"particular_key"},112CountKeys: []string{"count_key1", "count_key2"},113CheckKeyGroupsBatchSize: 5000,114MaxDistinctKeyGroups: 50,115116CheckStreams: []string{"stream1*", "stream2*"},117CheckSingleStreams: []string{"particular_stream"},118119ScriptPath: "/tmp/metrics-script.lua,/tmp/cooler-metrics-script.lua",120ConnectionTimeout: 7 * time.Second,121122TLSClientKeyFile: "/tmp/client-key.pem",123TLSClientCertFile: "/tmp/client-cert.pem",124TLSCaCertFile: "/tmp/ca-cert.pem",125126SetClientName: false,127IsTile38: true,128ExportClientList: false,129ExportClientPort: true,130RedisMetricsOnly: false,131PingOnConnect: true,132InclSystemMetrics: true,133SkipTLSVerification: false,134}135converted := orig.Convert()136expected := redis_exporter.Config{137RedisAddr: "localhost:6379",138RedisUser: "redis_user",139RedisPasswordFile: "/tmp/pass",140Namespace: "namespace",141ConfigCommand: "TEST_CONFIG",142143CheckKeys: "key1*,cache_*",144CheckKeyGroups: "other_key%d+",145CheckSingleKeys: "particular_key",146CountKeys: "count_key1,count_key2",147CheckKeyGroupsBatchSize: 5000,148MaxDistinctKeyGroups: 50,149150CheckStreams: "stream1*,stream2*",151CheckSingleStreams: "particular_stream",152153ScriptPath: "/tmp/metrics-script.lua,/tmp/cooler-metrics-script.lua",154ConnectionTimeout: 7 * time.Second,155156TLSClientKeyFile: "/tmp/client-key.pem",157TLSClientCertFile: "/tmp/client-cert.pem",158TLSCaCertFile: "/tmp/ca-cert.pem",159160SetClientName: false,161IsTile38: true,162ExportClientList: false,163ExportClientPort: true,164RedisMetricsOnly: false,165PingOnConnect: true,166InclSystemMetrics: true,167SkipTLSVerification: false,168}169170require.Equal(t, expected, *converted)171}172173174