index_test.go 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. package scrape
  2. import (
  3. "testing"
  4. "github.com/opencost/opencost/core/pkg/clustercache"
  5. "github.com/stretchr/testify/require"
  6. "k8s.io/apimachinery/pkg/types"
  7. )
  8. func TestBuildNodeIndex_Empty(t *testing.T) {
  9. m := buildNodeIndex(nil)
  10. require.Empty(t, m)
  11. }
  12. func TestBuildNodeIndex(t *testing.T) {
  13. nodes := []*clustercache.Node{
  14. {Name: "node-a", UID: "uid-a"},
  15. {Name: "node-b", UID: "uid-b"},
  16. }
  17. m := buildNodeIndex(nodes)
  18. require.Equal(t, types.UID("uid-a"), m["node-a"])
  19. require.Equal(t, types.UID("uid-b"), m["node-b"])
  20. require.Len(t, m, 2)
  21. }
  22. func TestBuildNamespaceIndex_Empty(t *testing.T) {
  23. m := buildNamespaceIndex(nil)
  24. require.Empty(t, m)
  25. }
  26. func TestBuildNamespaceIndex(t *testing.T) {
  27. namespaces := []*clustercache.Namespace{
  28. {Name: "default", UID: "uid-default"},
  29. {Name: "kube-system", UID: "uid-kube-system"},
  30. }
  31. m := buildNamespaceIndex(namespaces)
  32. require.Equal(t, types.UID("uid-default"), m["default"])
  33. require.Equal(t, types.UID("uid-kube-system"), m["kube-system"])
  34. require.Len(t, m, 2)
  35. }
  36. func TestBuildPVCIndex_Empty(t *testing.T) {
  37. m := buildPVCIndex(nil)
  38. require.Empty(t, m)
  39. }
  40. func TestBuildPVCIndex(t *testing.T) {
  41. pvcs := []*clustercache.PersistentVolumeClaim{
  42. {Name: "pvc-a", Namespace: "ns-1", UID: "uid-pvc-a"},
  43. {Name: "pvc-a", Namespace: "ns-2", UID: "uid-pvc-a-ns2"}, // same name, different namespace
  44. {Name: "pvc-b", Namespace: "ns-1", UID: "uid-pvc-b"},
  45. }
  46. m := buildPVCIndex(pvcs)
  47. require.Equal(t, types.UID("uid-pvc-a"), m[pvcKey{name: "pvc-a", namespace: "ns-1"}])
  48. require.Equal(t, types.UID("uid-pvc-a-ns2"), m[pvcKey{name: "pvc-a", namespace: "ns-2"}])
  49. require.Equal(t, types.UID("uid-pvc-b"), m[pvcKey{name: "pvc-b", namespace: "ns-1"}])
  50. require.Len(t, m, 3)
  51. }
  52. func TestBuildPVIndex_Empty(t *testing.T) {
  53. m := buildPVIndex(nil)
  54. require.Empty(t, m)
  55. }
  56. func TestBuildPVIndex(t *testing.T) {
  57. pvs := []*clustercache.PersistentVolume{
  58. {Name: "pv-a", UID: "uid-pv-a"},
  59. {Name: "pv-b", UID: "uid-pv-b"},
  60. }
  61. m := buildPVIndex(pvs)
  62. require.Equal(t, types.UID("uid-pv-a"), m["pv-a"])
  63. require.Equal(t, types.UID("uid-pv-b"), m["pv-b"])
  64. require.Len(t, m, 2)
  65. }