MCPcopy
hub / github.com/grafana/dskit / TestMaybeJaegerRemoteSamplerFromEnv

Function TestMaybeJaegerRemoteSamplerFromEnv

tracing/otel_test.go:149–258  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

147}
148
149func TestMaybeJaegerRemoteSamplerFromEnv(t *testing.T) {
150 t.Run("no sampler configured", func(t *testing.T) {
151 defer saveEnvAndRestoreDeferred("OTEL_TRACES_SAMPLER", "OTEL_TRACES_SAMPLER_ARG")()
152
153 os.Unsetenv("OTEL_TRACES_SAMPLER")
154 os.Unsetenv("OTEL_TRACES_SAMPLER_ARG")
155
156 sampler, ok, err := maybeJaegerRemoteSamplerFromEnv("test-service")
157 require.NoError(t, err)
158 require.False(t, ok)
159 require.Nil(t, sampler)
160 })
161
162 t.Run("jaeger_remote sampler with valid args", func(t *testing.T) {
163 defer saveEnvAndRestoreDeferred("OTEL_TRACES_SAMPLER", "OTEL_TRACES_SAMPLER_ARG")()
164
165 os.Setenv("OTEL_TRACES_SAMPLER", "jaeger_remote")
166 os.Setenv("OTEL_TRACES_SAMPLER_ARG", "endpoint=http://localhost:14250,pollingIntervalMs=5000,initialSamplingRate=0.25")
167
168 sampler, ok, err := maybeJaegerRemoteSamplerFromEnv("test-service")
169 require.NoError(t, err)
170 require.True(t, ok)
171 require.NotNil(t, sampler)
172
173 // Clean up sampler to avoid goroutine leak. Don't check the type, it should always be closeable.
174 sampler.(interface{ Close() }).Close()
175
176 // Verify that OTEL_TRACES_SAMPLER env was unset.
177 _, found := os.LookupEnv("OTEL_TRACES_SAMPLER")
178 require.False(t, found, "OTEL_TRACES_SAMPLER should not be set after creating sampler")
179 })
180
181 t.Run("parentbased_jaeger_remote sampler", func(t *testing.T) {
182 defer saveEnvAndRestoreDeferred("OTEL_TRACES_SAMPLER", "OTEL_TRACES_SAMPLER_ARG")()
183
184 os.Setenv("OTEL_TRACES_SAMPLER", "parentbased_jaeger_remote")
185 os.Setenv("OTEL_TRACES_SAMPLER_ARG", "endpoint=http://localhost:14250,pollingIntervalMs=5000")
186
187 sampler, ok, err := maybeJaegerRemoteSamplerFromEnv("test-service")
188 require.NoError(t, err)
189 require.True(t, ok)
190 require.NotNil(t, sampler)
191
192 // Clean up sampler to avoid goroutine leak. Don't check the type, it should always be closeable.
193 sampler.(interface{ Close() }).Close()
194 })
195
196 t.Run("missing sampler args", func(t *testing.T) {
197 defer saveEnvAndRestoreDeferred("OTEL_TRACES_SAMPLER", "OTEL_TRACES_SAMPLER_ARG")()
198
199 os.Setenv("OTEL_TRACES_SAMPLER", "jaeger_remote")
200 os.Unsetenv("OTEL_TRACES_SAMPLER_ARG")
201
202 sampler, ok, err := maybeJaegerRemoteSamplerFromEnv("test-service")
203 require.Error(t, err)
204 require.False(t, ok)
205 require.Nil(t, sampler)
206 require.Contains(t, err.Error(), "OTEL_TRACES_SAMPLER_ARG is not set")

Callers

nothing calls this directly

Calls 5

RunMethod · 0.80
CloseMethod · 0.65
ErrorMethod · 0.45

Tested by

no test coverage detected