mirror of
https://github.com/VictoriaMetrics/VictoriaMetrics.git
synced 2024-11-21 14:44:00 +00:00
50 lines
1.4 KiB
Go
50 lines
1.4 KiB
Go
|
package remotewrite
|
||
|
|
||
|
import (
|
||
|
"reflect"
|
||
|
"testing"
|
||
|
|
||
|
"github.com/VictoriaMetrics/VictoriaMetrics/lib/prompbmarshal"
|
||
|
"github.com/VictoriaMetrics/VictoriaMetrics/lib/promrelabel"
|
||
|
"github.com/VictoriaMetrics/VictoriaMetrics/lib/promutils"
|
||
|
)
|
||
|
|
||
|
func TestApplyRelabeling(t *testing.T) {
|
||
|
f := func(extraLabels []prompbmarshal.Label, pcs *promrelabel.ParsedConfigs, sTss, sExpTss string) {
|
||
|
rctx := &relabelCtx{}
|
||
|
tss, expTss := parseSeries(sTss), parseSeries(sExpTss)
|
||
|
gotTss := rctx.applyRelabeling(tss, extraLabels, pcs)
|
||
|
if !reflect.DeepEqual(gotTss, expTss) {
|
||
|
t.Fatalf("expected to have: \n%v;\ngot: \n%v", expTss, gotTss)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
f(nil, nil, "up", "up")
|
||
|
f([]prompbmarshal.Label{{Name: "foo", Value: "bar"}}, nil, "up", `up{foo="bar"}`)
|
||
|
f([]prompbmarshal.Label{{Name: "foo", Value: "bar"}}, nil, `up{foo="baz"}`, `up{foo="bar"}`)
|
||
|
|
||
|
pcs, err := promrelabel.ParseRelabelConfigsData([]byte(`
|
||
|
- target_label: "foo"
|
||
|
replacement: "aaa"
|
||
|
- action: labeldrop
|
||
|
regex: "env.*"
|
||
|
`))
|
||
|
if err != nil {
|
||
|
t.Fatalf("unexpected error: %s", err)
|
||
|
}
|
||
|
f(nil, pcs, `up{foo="baz", env="prod"}`, `up{foo="aaa"}`)
|
||
|
|
||
|
oldVal := *usePromCompatibleNaming
|
||
|
*usePromCompatibleNaming = true
|
||
|
f(nil, nil, `foo.bar`, `foo_bar`)
|
||
|
*usePromCompatibleNaming = oldVal
|
||
|
}
|
||
|
|
||
|
func parseSeries(data string) []prompbmarshal.TimeSeries {
|
||
|
var tss []prompbmarshal.TimeSeries
|
||
|
tss = append(tss, prompbmarshal.TimeSeries{
|
||
|
Labels: promutils.MustNewLabelsFromString(data).GetLabels(),
|
||
|
})
|
||
|
return tss
|
||
|
}
|