104 lines
2.9 KiB
Go
104 lines
2.9 KiB
Go
package global_agent_test
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"github.com/influxdata/telegraf/config"
|
|
_ "github.com/influxdata/telegraf/migrations/global_agent" // register migration
|
|
)
|
|
|
|
func TestNoMigration(t *testing.T) {
|
|
fn := filepath.Join("testcases", "default.conf")
|
|
|
|
// Read the input data
|
|
input, remote, err := config.LoadConfigFile(fn)
|
|
require.NoError(t, err)
|
|
require.False(t, remote)
|
|
require.NotEmpty(t, input)
|
|
|
|
// Expect the output to be equal to the input
|
|
expectedBuffer, err := os.ReadFile(fn)
|
|
require.NoError(t, err)
|
|
expected := config.NewConfig()
|
|
require.NoError(t, expected.LoadConfigData(expectedBuffer, config.EmptySourcePath))
|
|
require.NotNil(t, expected.Agent)
|
|
|
|
// Migrate
|
|
output, n, err := config.ApplyMigrations(input)
|
|
require.NoError(t, err)
|
|
require.NotEmpty(t, output)
|
|
require.Zero(t, n)
|
|
|
|
actual := config.NewConfig()
|
|
require.NoError(t, actual.LoadConfigData(output, config.EmptySourcePath))
|
|
require.NotNil(t, actual.Agent)
|
|
|
|
// Test the output
|
|
require.EqualValues(t, expected.Agent, actual.Agent, string(output))
|
|
require.Equal(t, string(expectedBuffer), string(output))
|
|
}
|
|
|
|
func TestLogTargetEventlogCollision(t *testing.T) {
|
|
fn := filepath.Join("testcases", "logtarget_eventlog_collision.conf")
|
|
|
|
// Read the input data
|
|
input, remote, err := config.LoadConfigFile(fn)
|
|
require.NoError(t, err)
|
|
require.False(t, remote)
|
|
require.NotEmpty(t, input)
|
|
|
|
// Migrate
|
|
_, n, err := config.ApplyMigrations(input)
|
|
require.ErrorContains(t, err, "contradicting setting for 'logtarget' and 'logformat'")
|
|
require.Zero(t, n)
|
|
}
|
|
|
|
func TestCases(t *testing.T) {
|
|
// Get all directories in testdata
|
|
folders, err := os.ReadDir("testcases")
|
|
require.NoError(t, err)
|
|
|
|
for _, f := range folders {
|
|
// Only handle folders
|
|
if !f.IsDir() {
|
|
continue
|
|
}
|
|
|
|
t.Run(f.Name(), func(t *testing.T) {
|
|
testcasePath := filepath.Join("testcases", f.Name())
|
|
inputFile := filepath.Join(testcasePath, "telegraf.conf")
|
|
expectedFile := filepath.Join(testcasePath, "expected.conf")
|
|
|
|
// Read the expected output
|
|
expected := config.NewConfig()
|
|
require.NoError(t, expected.LoadConfig(expectedFile))
|
|
require.NotNil(t, expected.Agent)
|
|
|
|
// Read the input data
|
|
input, remote, err := config.LoadConfigFile(inputFile)
|
|
require.NoError(t, err)
|
|
require.False(t, remote)
|
|
require.NotEmpty(t, input)
|
|
|
|
// Migrate
|
|
output, n, err := config.ApplyMigrations(input)
|
|
require.NoError(t, err)
|
|
require.NotEmpty(t, output)
|
|
require.Positive(t, n, "expected migration application but none applied")
|
|
actual := config.NewConfig()
|
|
require.NoError(t, actual.LoadConfigData(output, config.EmptySourcePath))
|
|
require.NotNil(t, actual.Agent)
|
|
|
|
// Test the output
|
|
require.EqualValues(t, expected.Agent, actual.Agent, string(output))
|
|
|
|
expectedBuffer, err := os.ReadFile(expectedFile)
|
|
require.NoError(t, err)
|
|
require.Equal(t, string(expectedBuffer), string(output))
|
|
})
|
|
}
|
|
}
|