Skip to content

Commit 24c2194

Browse files
committed
fix: deduplication of cr enabled resources
1 parent 3d969c5 commit 24c2194

File tree

2 files changed

+58
-6
lines changed

2 files changed

+58
-6
lines changed

internal/store/builder.go

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import (
2020
"context"
2121
"fmt"
2222
"reflect"
23-
"sort"
23+
"slices"
2424
"strconv"
2525
"strings"
2626
"time"
@@ -113,12 +113,10 @@ func (b *Builder) WithEnabledResources(r []string) error {
113113
}
114114
}
115115

116-
var sortedResources []string
117-
sortedResources = append(sortedResources, r...)
116+
b.enabledResources = append(b.enabledResources, r...)
117+
slices.Sort(b.enabledResources)
118+
b.enabledResources = slices.Compact(b.enabledResources)
118119

119-
sort.Strings(sortedResources)
120-
121-
b.enabledResources = append(b.enabledResources, sortedResources...)
122120
return nil
123121
}
124122

internal/store/builder_test.go

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ package store
1818

1919
import (
2020
"reflect"
21+
"slices"
2122
"testing"
2223

2324
"k8s.io/kube-state-metrics/v2/pkg/options"
@@ -196,3 +197,56 @@ func TestWithAllowAnnotations(t *testing.T) {
196197
}
197198
}
198199
}
200+
201+
func TestWithEnabledResources(t *testing.T) {
202+
203+
tests := []struct {
204+
Desc string
205+
EnabledResources []string
206+
Wanted []string
207+
err expectedError
208+
}{
209+
{
210+
Desc: "sorts enabled resources",
211+
EnabledResources: []string{"pods", "cronjobs", "deployments"},
212+
Wanted: []string{
213+
"cronjobs",
214+
"deployments",
215+
"pods",
216+
},
217+
},
218+
{
219+
Desc: "de-duplicates enabled resources",
220+
EnabledResources: []string{"pods", "cronjobs", "deployments", "pods"},
221+
Wanted: []string{
222+
"cronjobs",
223+
"deployments",
224+
"pods",
225+
},
226+
},
227+
{
228+
Desc: "error if not exist",
229+
EnabledResources: []string{"pods", "cronjobs", "deployments", "foo"},
230+
Wanted: []string{},
231+
err: expectedError{
232+
expectedResourceError: true,
233+
},
234+
},
235+
}
236+
for _, test := range tests {
237+
b := NewBuilder()
238+
239+
// Set the enabled resources.
240+
err := b.WithEnabledResources(test.EnabledResources)
241+
if err != nil && !test.err.expectedResourceError {
242+
t.Log("Did not expect error while setting resources (--resources).")
243+
t.Errorf("Test error for Desc: %s. Got Error: %v", test.Desc, err)
244+
}
245+
246+
// Evaluate.
247+
if !slices.Equal(b.enabledResources, test.Wanted) && err == nil {
248+
t.Log("Expected enabled resources to be equal.")
249+
t.Errorf("Test error for Desc: %s\n Want: \n%+v\n Got: \n%#+v", test.Desc, test.Wanted, b.enabledResources)
250+
}
251+
}
252+
}

0 commit comments

Comments
 (0)