podlabelmetrics_test.go 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. package metrics
  2. import (
  3. "testing"
  4. "github.com/opencost/opencost/pkg/clustercache"
  5. metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
  6. )
  7. func TestWhitelist(t *testing.T) {
  8. sampleServices := []*clustercache.Service{{
  9. SpecSelector: map[string]string{"servicewhitelistlabel": "foo"},
  10. }}
  11. replicaSetLabelSelector := metav1.LabelSelector{
  12. MatchLabels: map[string]string{"replicasetwhitelistlabel1": "bar"},
  13. }
  14. sampleReplicaSets := []*clustercache.ReplicaSet{{
  15. SpecSelector: &replicaSetLabelSelector,
  16. }}
  17. sampleStatefulSets := []*clustercache.StatefulSet{}
  18. kc := NewFakeCache(sampleReplicaSets, sampleStatefulSets, sampleServices)
  19. wl := map[string]bool{
  20. "whitelistedlabel": true,
  21. }
  22. mc := MetricsConfig{
  23. DisabledMetrics: []string{},
  24. UseLabelsWhitelist: true,
  25. LabelsWhitelist: wl,
  26. }
  27. kplc := KubePodLabelsCollector{
  28. KubeClusterCache: kc,
  29. metricsConfig: mc,
  30. }
  31. kplc.UpdateWhitelist()
  32. if !kplc.labelsWhitelist["servicewhitelistlabel"] {
  33. t.Errorf("Missing expected label %s", "servicewhitelistlabel")
  34. }
  35. if !kplc.labelsWhitelist["replicasetwhitelistlabel1"] {
  36. t.Errorf("Missing expected label %s", "servicewhitelistlabel1")
  37. }
  38. }
  39. type FakeCache struct {
  40. clustercache.ClusterCache
  41. replicasets []*clustercache.ReplicaSet
  42. statefulsets []*clustercache.StatefulSet
  43. services []*clustercache.Service
  44. }
  45. func (f FakeCache) GetAllReplicaSets() []*clustercache.ReplicaSet {
  46. return f.replicasets
  47. }
  48. func (f FakeCache) GetAllStatefulSets() []*clustercache.StatefulSet {
  49. return f.statefulsets
  50. }
  51. func (f FakeCache) GetAllServices() []*clustercache.Service {
  52. return f.services
  53. }
  54. func NewFakeCache(replicasets []*clustercache.ReplicaSet, statefulsets []*clustercache.StatefulSet, services []*clustercache.Service) FakeCache {
  55. return FakeCache{
  56. replicasets: replicasets,
  57. statefulsets: statefulsets,
  58. services: services,
  59. }
  60. }