diff --git a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/SamplerFactoryTest.java b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/SamplerFactoryTest.java index 9a6a1f599bf..5377d092d39 100644 --- a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/SamplerFactoryTest.java +++ b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/SamplerFactoryTest.java @@ -235,4 +235,45 @@ void create_SpiExporter_Valid() { assertThat(((SamplerComponentProvider.TestSampler) sampler).config.getString("key1")) .isEqualTo("value1"); } + + @Test + void create_JaegerRemote_interval() { + Sampler sampler = + SamplerFactory.getInstance() + .create( + new SamplerModel() + .withJaegerRemoteDevelopment( + new ExperimentalJaegerRemoteSamplerModel() + .withEndpoint("http://jaeger-remote-endpoint") + .withInterval(10_000) + .withInitialSampler( + new SamplerModel().withAlwaysOff(new AlwaysOffSamplerModel()))), + context); + cleanup.addCloseable(sampler); + + assertThat(sampler) + .isInstanceOf(JaegerRemoteSampler.class) + .extracting("pollingIntervalMs") + .isEqualTo(10_000); + } + + @Test + void create_JaegerRemote_intervalDefault() { + Sampler sampler = + SamplerFactory.getInstance() + .create( + new SamplerModel() + .withJaegerRemoteDevelopment( + new ExperimentalJaegerRemoteSamplerModel() + .withEndpoint("http://jaeger-remote-endpoint") + .withInitialSampler( + new SamplerModel().withAlwaysOff(new AlwaysOffSamplerModel()))), + context); + cleanup.addCloseable(sampler); + + assertThat(sampler) + .isInstanceOf(JaegerRemoteSampler.class) + .extracting("pollingIntervalMs") + .isEqualTo(60_000); + } } diff --git a/sdk-extensions/jaeger-remote-sampler/src/main/java/io/opentelemetry/sdk/extension/trace/jaeger/sampler/JaegerRemoteSampler.java b/sdk-extensions/jaeger-remote-sampler/src/main/java/io/opentelemetry/sdk/extension/trace/jaeger/sampler/JaegerRemoteSampler.java index 543789d688e..6f23ee36ab5 100644 --- a/sdk-extensions/jaeger-remote-sampler/src/main/java/io/opentelemetry/sdk/extension/trace/jaeger/sampler/JaegerRemoteSampler.java +++ b/sdk-extensions/jaeger-remote-sampler/src/main/java/io/opentelemetry/sdk/extension/trace/jaeger/sampler/JaegerRemoteSampler.java @@ -38,6 +38,7 @@ public final class JaegerRemoteSampler implements Sampler { private static final String TYPE = "remoteSampling"; private final String serviceName; + private final int pollingIntervalMs; private final ScheduledExecutorService pollExecutor; private final ScheduledFuture pollFuture; @@ -56,6 +57,7 @@ public final class JaegerRemoteSampler implements Sampler { int pollingIntervalMs, Sampler initialSampler) { this.serviceName = serviceName != null ? serviceName : ""; + this.pollingIntervalMs = pollingIntervalMs; this.grpcSender = grpcSender; this.endpoint = endpoint; this.pollingIntervalMs = pollingIntervalMs; @@ -186,6 +188,11 @@ Sampler getSampler() { return this.sampler; } + // Visible for testing + int getPollingIntervalMs() { + return this.pollingIntervalMs; + } + public static JaegerRemoteSamplerBuilder builder() { return new JaegerRemoteSamplerBuilder(); }