Skip to content

Commit

Permalink
Add links based sample option to config (#903)
Browse files Browse the repository at this point in the history
Co-authored-by: Trask Stalnaker <[email protected]>
  • Loading branch information
atshaw43 and trask authored Jun 16, 2023
1 parent 047bd89 commit c4645f7
Show file tree
Hide file tree
Showing 4 changed files with 50 additions and 0 deletions.
2 changes: 2 additions & 0 deletions samplers/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,6 @@ otelJava.moduleName.set("io.opentelemetry.contrib.sampler")
dependencies {
api("io.opentelemetry:opentelemetry-sdk")
api("io.opentelemetry:opentelemetry-semconv")
testImplementation("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure")
api("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi")
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
/*
* Copyright The OpenTelemetry Authors
* SPDX-License-Identifier: Apache-2.0
*/

package io.opentelemetry.contrib.sampler;

import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
import io.opentelemetry.sdk.autoconfigure.spi.traces.ConfigurableSamplerProvider;
import io.opentelemetry.sdk.trace.samplers.Sampler;

public class LinksParentAlwaysOnSamplerProvider implements ConfigurableSamplerProvider {
@Override
public Sampler createSampler(ConfigProperties config) {
return LinksBasedSampler.create(Sampler.parentBased(Sampler.alwaysOn()));
}

@Override
public String getName() {
return "linksbased_parentbased_always_on";
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
io.opentelemetry.contrib.sampler.LinksParentAlwaysOnSamplerProvider
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,14 @@
import io.opentelemetry.api.trace.TraceFlags;
import io.opentelemetry.api.trace.TraceState;
import io.opentelemetry.context.Context;
import io.opentelemetry.sdk.autoconfigure.AutoConfiguredOpenTelemetrySdkBuilder;
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
import io.opentelemetry.sdk.autoconfigure.spi.internal.DefaultConfigProperties;
import io.opentelemetry.sdk.trace.IdGenerator;
import io.opentelemetry.sdk.trace.data.LinkData;
import io.opentelemetry.sdk.trace.samplers.Sampler;
import io.opentelemetry.sdk.trace.samplers.SamplingDecision;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
Expand Down Expand Up @@ -185,4 +189,25 @@ void testTwoUnsampled() {
.getDecision())
.isEqualTo(SamplingDecision.DROP);
}

@Test
void testProvider() throws Exception {
Method method =
Class.forName("io.opentelemetry.sdk.autoconfigure.TracerProviderConfiguration")
.getDeclaredMethod(
"configureSampler", String.class, ConfigProperties.class, ClassLoader.class);
method.setAccessible(true);

Sampler sampler =
(Sampler)
method.invoke(
null,
"linksbased_parentbased_always_on",
DefaultConfigProperties.createForTest(Collections.emptyMap()),
AutoConfiguredOpenTelemetrySdkBuilder.class.getClassLoader());

assertThat(sampler.getDescription())
.isEqualTo(
LinksBasedSampler.create(Sampler.parentBased(Sampler.alwaysOn())).getDescription());
}
}

0 comments on commit c4645f7

Please sign in to comment.