Support parentbased_jaeger_remote sampler. (#5123)
This commit is contained in:
parent
299cfad6e6
commit
f28e0ada45
|
|
@ -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")
|
||||||
|
|
|
||||||
|
|
@ -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) {
|
||||||
|
|
|
||||||
|
|
@ -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");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue