(t *testing.T)
| 147 | } |
| 148 | |
| 149 | func 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") |
nothing calls this directly
no test coverage detected