test(processors.regex): Add unit-test for tracking metrics (#14739)

This commit is contained in:
Dane Strandboge 2024-02-09 13:05:17 -06:00 committed by GitHub
parent 95c7a13195
commit 5732270330
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 64 additions and 0 deletions

View File

@ -990,3 +990,67 @@ func TestAnyFieldConversion(t *testing.T) {
require.Equal(t, "access_log", processed[0].Name(), "Should not change name")
}
}
func TestTrackedMetricNotLost(t *testing.T) {
regex := Regex{
Tags: []converter{
{
Key: "resp_code",
Pattern: "^(\\d)\\d\\d$",
Replacement: "${1}xx",
ResultKey: "resp_code_group",
},
{
Key: "resp_code_group",
Pattern: "2xx",
Replacement: "OK",
ResultKey: "resp_code_text",
},
},
Fields: []converter{
{
Key: "request",
Pattern: "^/api(?P<method>/[\\w/]+)\\S*",
Replacement: "${method}",
ResultKey: "method",
},
{
Key: "request",
Pattern: ".*category=(\\w+).*",
Replacement: "${1}",
ResultKey: "search_category",
},
},
Log: testutil.Logger{},
}
require.NoError(t, regex.Init())
m := newM2().Copy()
var delivered bool
notify := func(di telegraf.DeliveryInfo) {
delivered = true
}
m, _ = metric.WithTracking(m, notify)
processed := regex.Apply(m)
processed[0].Accept()
expectedFields := map[string]interface{}{
"request": "/api/search/?category=plugins&q=regex&sort=asc",
"method": "/search/",
"search_category": "plugins",
"ignore_number": int64(200),
"ignore_bool": true,
}
expectedTags := map[string]string{
"verb": "GET",
"resp_code": "200",
"resp_code_group": "2xx",
"resp_code_text": "OK",
}
require.Equal(t, expectedFields, processed[0].Fields())
require.Equal(t, expectedTags, processed[0].Tags())
require.Eventually(t, func() bool {
return delivered
}, time.Second, 100*time.Millisecond, "metric not delivered")
}