github.com/influxdata/telegraf@v1.30.3/internal/templating/engine_test.go (about) 1 package templating 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/require" 7 ) 8 9 func TestEngineAlternateSeparator(t *testing.T) { 10 defaultTemplate, _ := NewDefaultTemplateWithPattern("topic*") 11 engine, err := NewEngine("_", defaultTemplate, []string{ 12 "/ /*/*/* /measurement/origin/measurement*", 13 }) 14 require.NoError(t, err) 15 name, tags, field, err := engine.Apply("/telegraf/host01/cpu") 16 require.NoError(t, err) 17 require.Equal(t, "telegraf_cpu", name) 18 require.Equal(t, map[string]string{ 19 "origin": "host01", 20 }, tags) 21 require.Equal(t, "", field) 22 } 23 24 func TestEngineWithWildcardTemplate(t *testing.T) { 25 var ( 26 defaultTmpl, err = NewDefaultTemplateWithPattern("measurement*") 27 templates = []string{ 28 "taskmanagerTask.alarm-detector.Assign.alarmDefinitionId metricsType.process.nodeId.x.alarmDefinitionId.measurement.field rule=1", 29 "taskmanagerTask.*.*.*.* metricsType.process.nodeId.measurement rule=2", 30 } 31 ) 32 require.NoError(t, err) 33 34 engine, err := NewEngine(".", defaultTmpl, templates) 35 require.NoError(t, err) 36 37 for _, testCase := range []struct { 38 line string 39 measurement string 40 field string 41 tags map[string]string 42 }{ 43 { 44 line: "taskmanagerTask.alarm-detector.Assign.alarmDefinitionId.timeout_errors.duration.p75", 45 measurement: "duration", 46 field: "p75", 47 tags: map[string]string{ 48 "metricsType": "taskmanagerTask", 49 "process": "alarm-detector", 50 "nodeId": "Assign", 51 "x": "alarmDefinitionId", 52 "alarmDefinitionId": "timeout_errors", 53 "rule": "1", 54 }, 55 }, 56 { 57 line: "taskmanagerTask.alarm-detector.Assign.numRecordsInPerSecond.m5_rate", 58 measurement: "numRecordsInPerSecond", 59 tags: map[string]string{ 60 "metricsType": "taskmanagerTask", 61 "process": "alarm-detector", 62 "nodeId": "Assign", 63 "rule": "2", 64 }, 65 }, 66 } { 67 t.Run(testCase.line, func(t *testing.T) { 68 measurement, tags, field, err := engine.Apply(testCase.line) 69 require.NoError(t, err) 70 71 require.Equal(t, testCase.measurement, measurement) 72 require.Equal(t, testCase.field, field) 73 require.Equal(t, testCase.tags, tags) 74 }) 75 } 76 }