Path: blob/main/pkg/operator/config/integration_templates_test.go
4096 views
package config12import (3"testing"45gragent "github.com/grafana/agent/pkg/operator/apis/monitoring/v1alpha1"6"github.com/grafana/agent/pkg/util"7"github.com/grafana/agent/pkg/util/subset"8"github.com/stretchr/testify/require"9apiext_v1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"10"sigs.k8s.io/yaml"11)1213func TestIntegration(t *testing.T) {14toJSON := func(in string) apiext_v1.JSON {15t.Helper()16out, err := yaml.YAMLToJSONStrict([]byte(in))17require.NoError(t, err)18return apiext_v1.JSON{Raw: out}19}2021tt := []struct {22name string23input map[string]interface{}24expect string25}{26{27name: "configured integration",28input: map[string]interface{}{29"integration": &gragent.Integration{30Spec: gragent.IntegrationSpec{31Name: "mysqld_exporter",32Config: toJSON(`33data_source_names: root@(server-a:3306)/34`),35},36},37},38expect: util.Untab(`39data_source_names: root@(server-a:3306)/40`),41},42{43name: "integration no config",44input: map[string]interface{}{45"integration": &gragent.Integration{46Spec: gragent.IntegrationSpec{47Name: "mysqld_exporter",48},49},50},51expect: util.Untab(`{}`),52},53}5455for _, tc := range tt {56t.Run(tc.name, func(t *testing.T) {57vm, err := createVM(testStore())58require.NoError(t, err)5960actual, err := runSnippetTLA(t, vm, "./integrations.libsonnet", tc.input)61require.NoError(t, err)62require.NoError(t, subset.YAMLAssert([]byte(tc.expect), []byte(actual)), "incomplete yaml\n%s", actual)63})64}65}666768