Support parentbased_jaeger_remote sampler. (#5123)

This commit is contained in:
Fabio Salvini 2023-01-21 05:05:36 +01:00 committed by GitHub
parent 299cfad6e6
commit f28e0ada45
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 33 additions and 1 deletions

View File

@ -71,6 +71,7 @@ testing {
implementation(project(":exporters:zipkin"))
implementation(project(":sdk:testing"))
implementation(project(":sdk:trace-shaded-deps"))
implementation(project(":sdk-extensions:jaeger-remote-sampler"))
implementation(project(":semconv"))
implementation("com.google.guava:guava")

View File

@ -171,6 +171,13 @@ final class TracerProviderConfiguration {
config.getDouble("otel.traces.sampler.arg", DEFAULT_TRACEIDRATIO_SAMPLE_RATIO);
return Sampler.parentBased(Sampler.traceIdRatioBased(ratio));
}
case "parentbased_jaeger_remote":
Sampler jaegerRemote = spiSamplersManager.getByName("jaeger_remote");
if (jaegerRemote == null) {
throw new ConfigurationException(
"parentbased_jaeger_remote configured but opentelemetry-sdk-extension-jaeger-remote-sampler not on classpath");
}
return Sampler.parentBased(jaegerRemote);
default:
Sampler spiSampler = spiSamplersManager.getByName(sampler);
if (spiSampler == null) {

View File

@ -246,5 +246,14 @@ class TracerProviderConfigurationTest {
"catsampler", EMPTY, TracerProviderConfiguration.class.getClassLoader()))
.isInstanceOf(ConfigurationException.class)
.hasMessage("Unrecognized value for otel.traces.sampler: catsampler");
assertThatThrownBy(
() ->
TracerProviderConfiguration.configureSampler(
"parentbased_jaeger_remote",
EMPTY,
TracerProviderConfiguration.class.getClassLoader()))
.isInstanceOf(ConfigurationException.class)
.hasMessage(
"parentbased_jaeger_remote configured but opentelemetry-sdk-extension-jaeger-remote-sampler not on classpath");
}
}

View File

@ -13,13 +13,14 @@ import io.opentelemetry.sdk.autoconfigure.provider.TestConfigurableSamplerProvid
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
import io.opentelemetry.sdk.autoconfigure.spi.ConfigurationException;
import io.opentelemetry.sdk.autoconfigure.spi.internal.DefaultConfigProperties;
import io.opentelemetry.sdk.extension.trace.jaeger.sampler.JaegerRemoteSampler;
import io.opentelemetry.sdk.trace.samplers.Sampler;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.Collections;
import org.junit.jupiter.api.Test;
public class ConfigurableSamplerTest {
public class TracerProviderConfigurationTest {
@Test
void configuration() {
@ -58,4 +59,18 @@ public class ConfigurableSamplerTest {
.isInstanceOf(ConfigurationException.class)
.hasMessageContaining("catSampler");
}
@Test
void configureSampler_JaegerRemoteSampler() {
assertThat(
TracerProviderConfiguration.configureSampler(
"parentbased_jaeger_remote",
DefaultConfigProperties.createForTest(Collections.emptyMap()),
TracerProviderConfigurationTest.class.getClassLoader()))
.satisfies(
sampler -> {
assertThat(sampler.getClass().getSimpleName()).isEqualTo("ParentBasedSampler");
assertThat(sampler).extracting("root").isInstanceOf(JaegerRemoteSampler.class);
});
}
}