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(":exporters:zipkin"))
implementation(project(":sdk:testing")) implementation(project(":sdk:testing"))
implementation(project(":sdk:trace-shaded-deps")) implementation(project(":sdk:trace-shaded-deps"))
implementation(project(":sdk-extensions:jaeger-remote-sampler"))
implementation(project(":semconv")) implementation(project(":semconv"))
implementation("com.google.guava:guava") implementation("com.google.guava:guava")

View File

@ -171,6 +171,13 @@ final class TracerProviderConfiguration {
config.getDouble("otel.traces.sampler.arg", DEFAULT_TRACEIDRATIO_SAMPLE_RATIO); config.getDouble("otel.traces.sampler.arg", DEFAULT_TRACEIDRATIO_SAMPLE_RATIO);
return Sampler.parentBased(Sampler.traceIdRatioBased(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: default:
Sampler spiSampler = spiSamplersManager.getByName(sampler); Sampler spiSampler = spiSamplersManager.getByName(sampler);
if (spiSampler == null) { if (spiSampler == null) {

View File

@ -246,5 +246,14 @@ class TracerProviderConfigurationTest {
"catsampler", EMPTY, TracerProviderConfiguration.class.getClassLoader())) "catsampler", EMPTY, TracerProviderConfiguration.class.getClassLoader()))
.isInstanceOf(ConfigurationException.class) .isInstanceOf(ConfigurationException.class)
.hasMessage("Unrecognized value for otel.traces.sampler: catsampler"); .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.ConfigProperties;
import io.opentelemetry.sdk.autoconfigure.spi.ConfigurationException; import io.opentelemetry.sdk.autoconfigure.spi.ConfigurationException;
import io.opentelemetry.sdk.autoconfigure.spi.internal.DefaultConfigProperties; 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 io.opentelemetry.sdk.trace.samplers.Sampler;
import java.net.URL; import java.net.URL;
import java.net.URLClassLoader; import java.net.URLClassLoader;
import java.util.Collections; import java.util.Collections;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
public class ConfigurableSamplerTest { public class TracerProviderConfigurationTest {
@Test @Test
void configuration() { void configuration() {
@ -58,4 +59,18 @@ public class ConfigurableSamplerTest {
.isInstanceOf(ConfigurationException.class) .isInstanceOf(ConfigurationException.class)
.hasMessageContaining("catSampler"); .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);
});
}
} }