From f09e551cbd01c13fb20c4f873387d53256d3fef1 Mon Sep 17 00:00:00 2001 From: Arnaud Lefebvre Date: Tue, 16 Feb 2021 18:15:48 +0100 Subject: [PATCH] outputs/warp10: url encode comma in tags value (#8657) --- plugins/outputs/warp10/warp10.go | 5 ++++- plugins/outputs/warp10/warp10_test.go | 16 ++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/plugins/outputs/warp10/warp10.go b/plugins/outputs/warp10/warp10.go index b5996f638..1b2a31934 100644 --- a/plugins/outputs/warp10/warp10.go +++ b/plugins/outputs/warp10/warp10.go @@ -7,6 +7,7 @@ import ( "log" "math" "net/http" + "net/url" "sort" "strconv" "strings" @@ -174,7 +175,9 @@ func buildTags(tags []*telegraf.Tag) []string { tagsString := make([]string, len(tags)+1) indexSource := 0 for index, tag := range tags { - tagsString[index] = fmt.Sprintf("%s=%s", tag.Key, tag.Value) + key := url.QueryEscape(tag.Key) + value := url.QueryEscape(tag.Value) + tagsString[index] = fmt.Sprintf("%s=%s", key, value) indexSource = index } indexSource++ diff --git a/plugins/outputs/warp10/warp10_test.go b/plugins/outputs/warp10/warp10_test.go index 5b543b34c..0b32ce4f1 100644 --- a/plugins/outputs/warp10/warp10_test.go +++ b/plugins/outputs/warp10/warp10_test.go @@ -24,6 +24,22 @@ func TestWriteWarp10(t *testing.T) { require.Exactly(t, "1257894000000000// unit.testtest1.value{source=telegraf,tag1=value1} 1.000000\n", payload) } +func TestWriteWarp10EncodedTags(t *testing.T) { + w := Warp10{ + Prefix: "unit.test", + WarpURL: "http://localhost:8090", + Token: "WRITE", + } + + metrics := testutil.MockMetrics() + for _, metric := range metrics { + metric.AddTag("encoded{tag", "value1,value2") + } + + payload := w.GenWarp10Payload(metrics) + require.Exactly(t, "1257894000000000// unit.testtest1.value{encoded%7Btag=value1%2Cvalue2,source=telegraf,tag1=value1} 1.000000\n", payload) +} + func TestHandleWarp10Error(t *testing.T) { w := Warp10{ Prefix: "unit.test",