influxdb/pkg/tracing/labels/labels_test.go

102 lines
2.2 KiB
Go

package labels
import (
"testing"
"github.com/influxdata/influxdb/v2/pkg/testing/assert"
)
func makeLabels(args ...string) Labels {
if len(args)%2 != 0 {
panic("uneven number of arguments")
}
var l Labels
for i := 0; i+1 < len(args); i += 2 {
l = append(l, Label{Key: args[i], Value: args[i+1]})
}
return l
}
func TestNew(t *testing.T) {
cases := []struct {
n string
l []string
exp Labels
}{
{
n: "empty",
l: nil,
exp: makeLabels(),
},
{
n: "not duplicates",
l: []string{"k01", "v01", "k03", "v03", "k02", "v02"},
exp: makeLabels("k01", "v01", "k02", "v02", "k03", "v03"),
},
{
n: "duplicates at end",
l: []string{"k01", "v01", "k02", "v02", "k02", "v02"},
exp: makeLabels("k01", "v01", "k02", "v02"),
},
{
n: "duplicates at start",
l: []string{"k01", "v01", "k02", "v02", "k01", "v01"},
exp: makeLabels("k01", "v01", "k02", "v02"),
},
{
n: "duplicates in middle",
l: []string{"k01", "v01", "k02", "v02", "k03", "v03", "k02", "v02", "k02", "v02"},
exp: makeLabels("k01", "v01", "k02", "v02", "k03", "v03"),
},
}
for _, tc := range cases {
t.Run(tc.n, func(t *testing.T) {
l := New(tc.l...)
assert.Equal(t, l, tc.exp)
})
}
}
func TestLabels_Merge(t *testing.T) {
cases := []struct {
n string
l, r Labels
exp Labels
}{
{
n: "no matching keys",
l: New("k05", "v05", "k03", "v03", "k01", "v01"),
r: New("k02", "v02", "k04", "v04", "k00", "v00"),
exp: New("k05", "v05", "k03", "v03", "k01", "v01", "k02", "v02", "k04", "v04", "k00", "v00"),
},
{
n: "multiple matching keys",
l: New("k05", "v05", "k03", "v03", "k01", "v01"),
r: New("k02", "v02", "k03", "v03a", "k05", "v05a"),
exp: New("k05", "v05a", "k03", "v03a", "k01", "v01", "k02", "v02"),
},
{
n: "source empty",
l: New(),
r: New("k02", "v02", "k04", "v04", "k00", "v00"),
exp: New("k02", "v02", "k04", "v04", "k00", "v00"),
},
{
n: "other empty",
l: New("k02", "v02", "k04", "v04", "k00", "v00"),
r: New(),
exp: New("k02", "v02", "k04", "v04", "k00", "v00"),
},
}
for _, tc := range cases {
t.Run(tc.n, func(t *testing.T) {
l := tc.l
l.Merge(tc.r)
assert.Equal(t, l, tc.exp)
})
}
}