From f28e0ada45fbc88ad43457fbc63fbb7597b01aa1 Mon Sep 17 00:00:00 2001 From: Fabio Salvini Date: Sat, 21 Jan 2023 05:05:36 +0100 Subject: [PATCH] Support parentbased_jaeger_remote sampler. (#5123) --- sdk-extensions/autoconfigure/build.gradle.kts | 1 + .../TracerProviderConfiguration.java | 7 +++++++ .../TracerProviderConfigurationTest.java | 9 +++++++++ ...ava => TracerProviderConfigurationTest.java} | 17 ++++++++++++++++- 4 files changed, 33 insertions(+), 1 deletion(-) rename sdk-extensions/autoconfigure/src/testFullConfig/java/io/opentelemetry/sdk/autoconfigure/{ConfigurableSamplerTest.java => TracerProviderConfigurationTest.java} (75%) diff --git a/sdk-extensions/autoconfigure/build.gradle.kts b/sdk-extensions/autoconfigure/build.gradle.kts index 2a9fa1592a..9fb2ef5d01 100644 --- a/sdk-extensions/autoconfigure/build.gradle.kts +++ b/sdk-extensions/autoconfigure/build.gradle.kts @@ -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") diff --git a/sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/TracerProviderConfiguration.java b/sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/TracerProviderConfiguration.java index 8493fe1361..28d7be1741 100644 --- a/sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/TracerProviderConfiguration.java +++ b/sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/TracerProviderConfiguration.java @@ -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) { diff --git a/sdk-extensions/autoconfigure/src/test/java/io/opentelemetry/sdk/autoconfigure/TracerProviderConfigurationTest.java b/sdk-extensions/autoconfigure/src/test/java/io/opentelemetry/sdk/autoconfigure/TracerProviderConfigurationTest.java index db56602d21..9d082b0b26 100644 --- a/sdk-extensions/autoconfigure/src/test/java/io/opentelemetry/sdk/autoconfigure/TracerProviderConfigurationTest.java +++ b/sdk-extensions/autoconfigure/src/test/java/io/opentelemetry/sdk/autoconfigure/TracerProviderConfigurationTest.java @@ -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"); } } diff --git a/sdk-extensions/autoconfigure/src/testFullConfig/java/io/opentelemetry/sdk/autoconfigure/ConfigurableSamplerTest.java b/sdk-extensions/autoconfigure/src/testFullConfig/java/io/opentelemetry/sdk/autoconfigure/TracerProviderConfigurationTest.java similarity index 75% rename from sdk-extensions/autoconfigure/src/testFullConfig/java/io/opentelemetry/sdk/autoconfigure/ConfigurableSamplerTest.java rename to sdk-extensions/autoconfigure/src/testFullConfig/java/io/opentelemetry/sdk/autoconfigure/TracerProviderConfigurationTest.java index 43520c9ff8..7ae855b9d9 100644 --- a/sdk-extensions/autoconfigure/src/testFullConfig/java/io/opentelemetry/sdk/autoconfigure/ConfigurableSamplerTest.java +++ b/sdk-extensions/autoconfigure/src/testFullConfig/java/io/opentelemetry/sdk/autoconfigure/TracerProviderConfigurationTest.java @@ -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); + }); + } }