otel_test.go 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. package otel
  2. import (
  3. "os"
  4. "strings"
  5. "testing"
  6. "github.com/stretchr/testify/suite"
  7. "github.com/imgproxy/imgproxy/v3/config"
  8. "github.com/imgproxy/imgproxy/v3/logger"
  9. )
  10. type OtelTestSuite struct{ suite.Suite }
  11. func (s *OtelTestSuite) SetupSuite() {
  12. logger.Mute()
  13. }
  14. func (s *OtelTestSuite) TearDownSuite() {
  15. logger.Unmute()
  16. }
  17. func (s *OtelTestSuite) SetupTest() {
  18. for _, env := range os.Environ() {
  19. keyVal := strings.Split(env, "=")
  20. if strings.HasPrefix(keyVal[0], "OTEL_") || strings.HasPrefix(keyVal[0], "IMGPROXY_OPEN_TELEMETRY_") {
  21. os.Unsetenv(keyVal[0])
  22. }
  23. }
  24. config.Reset()
  25. }
  26. func (s *OtelTestSuite) TestMapDeprecatedConfigEndpointNoProtocol() {
  27. os.Setenv("IMGPROXY_OPEN_TELEMETRY_ENDPOINT", "otel_endpoint:1234")
  28. mapDeprecatedConfig()
  29. s.Require().True(config.OpenTelemetryEnable)
  30. s.Require().Equal("https://otel_endpoint:1234", os.Getenv("OTEL_EXPORTER_OTLP_ENDPOINT"))
  31. s.Require().Empty(os.Getenv("OTEL_EXPORTER_OTLP_PROTOCOL"))
  32. }
  33. func (s *OtelTestSuite) TestMapDeprecatedConfigEndpointGrpcProtocol() {
  34. os.Setenv("IMGPROXY_OPEN_TELEMETRY_ENDPOINT", "otel_endpoint:1234")
  35. os.Setenv("IMGPROXY_OPEN_TELEMETRY_PROTOCOL", "grpc")
  36. mapDeprecatedConfig()
  37. s.Require().True(config.OpenTelemetryEnable)
  38. s.Require().Equal("https://otel_endpoint:1234", os.Getenv("OTEL_EXPORTER_OTLP_ENDPOINT"))
  39. s.Require().Equal("grpc", os.Getenv("OTEL_EXPORTER_OTLP_PROTOCOL"))
  40. }
  41. func (s *OtelTestSuite) TestMapDeprecatedConfigEndpointGrpcProtocolInsecure() {
  42. os.Setenv("IMGPROXY_OPEN_TELEMETRY_ENDPOINT", "otel_endpoint:1234")
  43. os.Setenv("IMGPROXY_OPEN_TELEMETRY_PROTOCOL", "grpc")
  44. os.Setenv("IMGPROXY_OPEN_TELEMETRY_GRPC_INSECURE", "1")
  45. mapDeprecatedConfig()
  46. s.Require().True(config.OpenTelemetryEnable)
  47. s.Require().Equal("http://otel_endpoint:1234", os.Getenv("OTEL_EXPORTER_OTLP_ENDPOINT"))
  48. s.Require().Equal("grpc", os.Getenv("OTEL_EXPORTER_OTLP_PROTOCOL"))
  49. }
  50. func (s *OtelTestSuite) TestMapDeprecatedConfigEndpointHttpsProtocol() {
  51. os.Setenv("IMGPROXY_OPEN_TELEMETRY_ENDPOINT", "otel_endpoint:1234")
  52. os.Setenv("IMGPROXY_OPEN_TELEMETRY_PROTOCOL", "https")
  53. mapDeprecatedConfig()
  54. s.Require().True(config.OpenTelemetryEnable)
  55. s.Require().Equal("https://otel_endpoint:1234", os.Getenv("OTEL_EXPORTER_OTLP_ENDPOINT"))
  56. s.Require().Equal("https", os.Getenv("OTEL_EXPORTER_OTLP_PROTOCOL"))
  57. }
  58. func (s *OtelTestSuite) TestMapDeprecatedConfigEndpointHttpProtocol() {
  59. os.Setenv("IMGPROXY_OPEN_TELEMETRY_ENDPOINT", "otel_endpoint:1234")
  60. os.Setenv("IMGPROXY_OPEN_TELEMETRY_PROTOCOL", "http")
  61. mapDeprecatedConfig()
  62. s.Require().True(config.OpenTelemetryEnable)
  63. s.Require().Equal("http://otel_endpoint:1234", os.Getenv("OTEL_EXPORTER_OTLP_ENDPOINT"))
  64. s.Require().Equal("http", os.Getenv("OTEL_EXPORTER_OTLP_PROTOCOL"))
  65. }
  66. func (s *OtelTestSuite) TestMapDeprecatedConfigServiceName() {
  67. os.Setenv("IMGPROXY_OPEN_TELEMETRY_SERVICE_NAME", "testtest")
  68. config.OpenTelemetryEnable = true
  69. mapDeprecatedConfig()
  70. s.Require().Equal("testtest", os.Getenv("OTEL_SERVICE_NAME"))
  71. }
  72. func (s *OtelTestSuite) TestMapDeprecatedConfigPropagators() {
  73. os.Setenv("IMGPROXY_OPEN_TELEMETRY_PROPAGATORS", "testtest")
  74. config.OpenTelemetryEnable = true
  75. mapDeprecatedConfig()
  76. s.Require().Equal("testtest", os.Getenv("OTEL_PROPAGATORS"))
  77. }
  78. func (s *OtelTestSuite) TestMapDeprecatedConfigConnectionTimeout() {
  79. os.Setenv("IMGPROXY_OPEN_TELEMETRY_CONNECTION_TIMEOUT", "15")
  80. config.OpenTelemetryEnable = true
  81. mapDeprecatedConfig()
  82. s.Require().Equal("15000", os.Getenv("OTEL_EXPORTER_OTLP_TIMEOUT"))
  83. }
  84. func TestPresets(t *testing.T) {
  85. suite.Run(t, new(OtelTestSuite))
  86. }