otel_test.go 3.5 KB

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