78 lines
2.2 KiB
Go
78 lines
2.2 KiB
Go
package templating
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestEngineAlternateSeparator(t *testing.T) {
|
|
defaultTemplate, _ := NewDefaultTemplateWithPattern("topic*")
|
|
engine, err := NewEngine("_", defaultTemplate, []string{
|
|
"/ /*/*/* /measurement/origin/measurement*",
|
|
})
|
|
require.NoError(t, err)
|
|
name, tags, field, err := engine.Apply("/telegraf/host01/cpu")
|
|
require.NoError(t, err)
|
|
require.Equal(t, "telegraf_cpu", name)
|
|
require.Equal(t, map[string]string{
|
|
"origin": "host01",
|
|
}, tags)
|
|
require.Equal(t, "", field)
|
|
}
|
|
|
|
func TestEngineWithWildcardTemplate(t *testing.T) {
|
|
var (
|
|
defaultTmpl, err = NewDefaultTemplateWithPattern("measurement*")
|
|
templates = []string{
|
|
"taskmanagerTask.alarm-detector.Assign.alarmDefinitionId metricsType.process.nodeId.x.alarmDefinitionId.measurement.field rule=1",
|
|
"taskmanagerTask.*.*.*.* metricsType.process.nodeId.measurement rule=2",
|
|
}
|
|
)
|
|
require.NoError(t, err)
|
|
|
|
engine, err := NewEngine(".", defaultTmpl, templates)
|
|
require.NoError(t, err)
|
|
|
|
for _, testCase := range []struct {
|
|
line string
|
|
measurement string
|
|
field string
|
|
tags map[string]string
|
|
}{
|
|
{
|
|
line: "taskmanagerTask.alarm-detector.Assign.alarmDefinitionId.timeout_errors.duration.p75",
|
|
measurement: "duration",
|
|
field: "p75",
|
|
tags: map[string]string{
|
|
"metricsType": "taskmanagerTask",
|
|
"process": "alarm-detector",
|
|
"nodeId": "Assign",
|
|
"x": "alarmDefinitionId",
|
|
"alarmDefinitionId": "timeout_errors",
|
|
"rule": "1",
|
|
},
|
|
},
|
|
{
|
|
line: "taskmanagerTask.alarm-detector.Assign.numRecordsInPerSecond.m5_rate",
|
|
measurement: "numRecordsInPerSecond",
|
|
tags: map[string]string{
|
|
"metricsType": "taskmanagerTask",
|
|
"process": "alarm-detector",
|
|
"nodeId": "Assign",
|
|
"rule": "2",
|
|
},
|
|
},
|
|
} {
|
|
t.Run(testCase.line, func(t *testing.T) {
|
|
measurement, tags, field, err := engine.Apply(testCase.line)
|
|
require.NoError(t, err)
|
|
|
|
assert.Equal(t, testCase.measurement, measurement)
|
|
assert.Equal(t, testCase.field, field)
|
|
assert.Equal(t, testCase.tags, tags)
|
|
})
|
|
}
|
|
}
|