metadataprovider_test.go 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. package exporter
  2. import (
  3. "testing"
  4. "time"
  5. "github.com/opencost/opencost/core/pkg/clusters"
  6. )
  7. type MockClusterInfoProvider struct{}
  8. var (
  9. logLevel = "trace"
  10. ClusterInfo = map[string]string{
  11. clusters.ClusterInfoIdKey: "test-cluster-id",
  12. clusters.ClusterInfoNameKey: "test-cluster-name",
  13. clusters.ClusterInfoVersionKey: "test-cluster-version",
  14. clusters.ClusterInfoRegionKey: "test-cluster-region",
  15. clusters.ClusterInfoProviderKey: "test-cluster-provider",
  16. }
  17. )
  18. func NewMockClusterInfoProvider() clusters.ClusterInfoProvider {
  19. return new(MockClusterInfoProvider)
  20. }
  21. func (m *MockClusterInfoProvider) GetClusterInfo() map[string]string {
  22. return ClusterInfo
  23. }
  24. func TestClusterInfoProvider(t *testing.T) {
  25. t.Parallel()
  26. provider := NewMockClusterInfoProvider()
  27. clusterInfoMetaDataProvider := NewClusterInfoMetadataProvider(provider)
  28. heartbeatSrc := NewHeartbeatSource("test-app", "v0.0.1", clusterInfoMetaDataProvider)
  29. hb := heartbeatSrc.Make(time.Now().UTC().Truncate(time.Second))
  30. md := hb.Metadata
  31. if md == nil {
  32. t.Errorf("Expected metadata to be non-nil, got nil")
  33. }
  34. for k, v := range ClusterInfo {
  35. if md[k] != v {
  36. t.Errorf("Expected metadata key %s to be %s, got %s", k, v, md[k])
  37. }
  38. }
  39. if heartbeatSrc.Name() != "heartbeat-source" {
  40. t.Errorf("Expected source name to be 'heartbeat-source', got '%s'", heartbeatSrc.Name())
  41. }
  42. }
  43. func TestLogLevelMetadataProvider(t *testing.T) {
  44. t.Parallel()
  45. logLevelMetaDataProvider := NewLogLevelMetadataProvider()
  46. heartbeatSrc := NewHeartbeatSource("test-app", "v0.0.1", logLevelMetaDataProvider)
  47. hb := heartbeatSrc.Make(time.Now().UTC().Truncate(time.Second))
  48. md := hb.Metadata
  49. if md == nil {
  50. t.Errorf("Expected metadata to be non-nil, got nil")
  51. }
  52. if md["logLevel"] != logLevel {
  53. t.Errorf("Expected log level to be '%s', got '%s'", logLevel, md["logLevel"])
  54. }
  55. if heartbeatSrc.Name() != "heartbeat-source" {
  56. t.Errorf("Expected source name to be 'heartbeat-source', got '%s'", heartbeatSrc.Name())
  57. }
  58. }
  59. func TestMultiMetadataProvider(t *testing.T) {
  60. t.Parallel()
  61. provider := NewMockClusterInfoProvider()
  62. clusterInfoMetaDataProvider := NewClusterInfoMetadataProvider(provider)
  63. logLevelMetaDataProvider := NewLogLevelMetadataProvider()
  64. multiMetaDataProvider := NewMultiMetadataProvider(clusterInfoMetaDataProvider, logLevelMetaDataProvider)
  65. heartbeatSrc := NewHeartbeatSource("test-app", "v0.0.1", multiMetaDataProvider)
  66. hb := heartbeatSrc.Make(time.Now().UTC().Truncate(time.Second))
  67. md := hb.Metadata
  68. if md == nil {
  69. t.Errorf("Expected metadata to be non-nil, got nil")
  70. }
  71. for k, v := range ClusterInfo {
  72. if md[k] != v {
  73. t.Errorf("Expected metadata key %s to be %s, got %s", k, v, md[k])
  74. }
  75. }
  76. if md["logLevel"] != logLevel {
  77. t.Errorf("Expected log level to be '%s', got '%s'", logLevel, md["logLevel"])
  78. }
  79. if heartbeatSrc.Name() != "heartbeat-source" {
  80. t.Errorf("Expected source name to be 'heartbeat-source', got '%s'", heartbeatSrc.Name())
  81. }
  82. }