Skip to content

Commit

Permalink
Add tests
Browse files Browse the repository at this point in the history
  - Tests different scenarios, including:
    - Referencing non existing nested objects
    - Conditionals
    - Ranges
    - Character escaping
  • Loading branch information
jcreixell committed Nov 16, 2023
1 parent 6dc3c02 commit 54b9d98
Showing 1 changed file with 76 additions and 0 deletions.
76 changes: 76 additions & 0 deletions pkg/config/agent_management_remote_config_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"testing"
"time"

process_exporter "github.com/grafana/agent/pkg/integrations/process_exporter"
"github.com/grafana/agent/pkg/metrics/instance"
"github.com/prometheus/common/model"
"github.com/prometheus/prometheus/model/labels"
Expand Down Expand Up @@ -182,6 +183,81 @@ integration_configs:
require.Equal(t, 5*time.Second, c.Integrations.ConfigV1.IntegrationRestartBackoff)
})

t.Run("template variables provided", func(t *testing.T) {
baseConfig := `
server:
log_level: {{.log_level}}
`
snippet := Snippet{
Config: `
integration_configs:
process_exporter:
enabled: true
process_names:
- name: "grafana-agent"
cmdline:
- 'grafana-agent'
- name: "{{.nonexistent.foo.bar.baz.bat}}"
cmdline:
- 'non-existent'
# Custom process monitors
{{- range $key, $value := .process_exporter_processes }}
- name: "{{ $value.name }}"
cmdline:
- "{{ $value.cmdline }}"
{{if $value.exe}}
exe:
- "{{ $value.exe }}"
{{end}}
{{- end }}
`,
}

rc := RemoteConfig{
BaseConfig: BaseConfigContent(baseConfig),
Snippets: []Snippet{snippet},
AgentMetadata: AgentMetadata{
TemplateVariables: map[string]any{
"log_level": "debug",
"process_exporter_processes": []map[string]string{
{
"name": "java_processes",
"cmdline": ".*/java",
},
{
"name": "{{.ExeFull}}:{{.Matches.Cfgfile}}",
"cmdline": `-config.path\\s+(?P<Cfgfile>\\S+)`,
"exe": "/usr/local/bin/process-exporter",
},
},
},
},
}

c, err := rc.BuildAgentConfig()
require.NoError(t, err)
require.Equal(t, 1, len(c.Integrations.ConfigV1.Integrations))
processExporterConfig := c.Integrations.ConfigV1.Integrations[0].Config.(*process_exporter.Config)

require.Equal(t, 4, len(processExporterConfig.ProcessExporter))

require.Equal(t, "grafana-agent", processExporterConfig.ProcessExporter[0].Name)
require.Equal(t, "grafana-agent", processExporterConfig.ProcessExporter[0].CmdlineRules[0])
require.Equal(t, 0, len(processExporterConfig.ProcessExporter[0].ExeRules))

require.Equal(t, "<no value>", processExporterConfig.ProcessExporter[1].Name)
require.Equal(t, "non-existent", processExporterConfig.ProcessExporter[1].CmdlineRules[0])
require.Equal(t, 0, len(processExporterConfig.ProcessExporter[1].ExeRules))

require.Equal(t, "java_processes", processExporterConfig.ProcessExporter[2].Name)
require.Equal(t, ".*/java", processExporterConfig.ProcessExporter[2].CmdlineRules[0])
require.Equal(t, 0, len(processExporterConfig.ProcessExporter[2].ExeRules))

require.Equal(t, "{{.ExeFull}}:{{.Matches.Cfgfile}}", processExporterConfig.ProcessExporter[3].Name)
require.Equal(t, `-config.path\s+(?P<Cfgfile>\S+)`, processExporterConfig.ProcessExporter[3].CmdlineRules[0])
require.Equal(t, "/usr/local/bin/process-exporter", processExporterConfig.ProcessExporter[3].ExeRules[0])
})

t.Run("no external labels provided", func(t *testing.T) {
rc := RemoteConfig{
BaseConfig: BaseConfigContent(baseConfig),
Expand Down

0 comments on commit 54b9d98

Please sign in to comment.