package shim import ( "testing" "time" "github.com/stretchr/testify/require" "github.com/influxdata/telegraf" cfg "github.com/influxdata/telegraf/config" "github.com/influxdata/telegraf/plugins/inputs" "github.com/influxdata/telegraf/plugins/processors" ) func TestLoadConfig(t *testing.T) { t.Setenv("SECRET_TOKEN", "xxxxxxxxxx") t.Setenv("SECRET_VALUE", `test"\test`) inputs.Add("test", func() telegraf.Input { return &serviceInput{} }) c := "./testdata/plugin.conf" conf, err := LoadConfig(&c) require.NoError(t, err) inp := conf.Input.(*serviceInput) require.Equal(t, "awesome name", inp.ServiceName) require.Equal(t, "xxxxxxxxxx", inp.SecretToken) require.Equal(t, `test"\test`, inp.SecretValue) } func TestLoadingSpecialTypes(t *testing.T) { inputs.Add("test", func() telegraf.Input { return &testDurationInput{} }) c := "./testdata/special.conf" conf, err := LoadConfig(&c) require.NoError(t, err) inp := conf.Input.(*testDurationInput) require.EqualValues(t, 3*time.Second, inp.Duration) require.EqualValues(t, 3*1000*1000, inp.Size) require.EqualValues(t, 52, inp.Hex) } func TestLoadingProcessorWithConfig(t *testing.T) { proc := &testConfigProcessor{} processors.Add("test_config_load", func() telegraf.Processor { return proc }) c := "./testdata/processor.conf" _, err := LoadConfig(&c) require.NoError(t, err) require.EqualValues(t, "yep", proc.Loaded) } type testDurationInput struct { Duration cfg.Duration `toml:"duration"` Size cfg.Size `toml:"size"` Hex int64 `toml:"hex"` } func (*testDurationInput) SampleConfig() string { return "" } func (*testDurationInput) Gather(telegraf.Accumulator) error { return nil } type testConfigProcessor struct { Loaded string `toml:"loaded"` } func (*testConfigProcessor) SampleConfig() string { return "" } func (*testConfigProcessor) Apply(metrics ...telegraf.Metric) []telegraf.Metric { return metrics }