removeLabels needs a pointer to work. (#3326)

This commit is contained in:
Brian Brazil 2017-10-21 08:29:03 +01:00 committed by GitHub
parent 45f9f3c539
commit 4a50f547c8
2 changed files with 28 additions and 5 deletions

View file

@ -78,7 +78,7 @@ func (q *querier) Select(matchers ...*labels.Matcher) storage.SeriesSet {
series := make([]storage.Series, 0, len(res))
for _, ts := range res {
labels := labelPairsToLabels(ts.Labels)
removeLabels(labels, added)
removeLabels(&labels, added)
series = append(series, &concreteSeries{
labels: labels,
samples: ts.Samples,
@ -254,10 +254,10 @@ func (q *querier) addExternalLabels(matchers []*labels.Matcher) ([]*labels.Match
return matchers, el
}
func removeLabels(l labels.Labels, toDelete model.LabelSet) {
for i := 0; i < len(l); {
if _, ok := toDelete[model.LabelName(l[i].Name)]; ok {
l = l[:i+copy(l[i:], l[i+1:])]
func removeLabels(l *labels.Labels, toDelete model.LabelSet) {
for i := 0; i < len(*l); {
if _, ok := toDelete[model.LabelName((*l)[i].Name)]; ok {
*l = (*l)[:i+copy((*l)[i:], (*l)[i+1:])]
} else {
i++
}

View file

@ -97,6 +97,29 @@ func TestAddExternalLabels(t *testing.T) {
}
}
func TestRemoveLabels(t *testing.T) {
tests := []struct {
in labels.Labels
out labels.Labels
toRemove model.LabelSet
}{
{
toRemove: model.LabelSet{"foo": "bar"},
in: labels.FromStrings("foo", "bar", "a", "b"),
out: labels.FromStrings("a", "b"),
},
}
for i, test := range tests {
in := test.in.Copy()
removeLabels(&in, test.toRemove)
if !reflect.DeepEqual(in, test.out) {
t.Fatalf("%d. unexpected labels; want %v, got %v", i, test.out, in)
}
}
}
func TestConcreteSeriesSet(t *testing.T) {
series1 := &concreteSeries{
labels: labels.FromStrings("foo", "bar"),