Skip to content

Commit a1c3408

Browse files
committed
simplify
1 parent d473a59 commit a1c3408

File tree

16 files changed

+122
-536
lines changed

16 files changed

+122
-536
lines changed

instrumentation/azure-core/azure-core-1.14/javaagent/build.gradle.kts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ dependencies {
2929
// Ensure no cross interference
3030
testInstrumentation(project(":instrumentation:azure-core:azure-core-1.19:javaagent"))
3131
testInstrumentation(project(":instrumentation:azure-core:azure-core-1.36:javaagent"))
32-
testInstrumentation(project(":instrumentation:azure-core:azure-core-1.53:javaagent"))
3332
}
3433

3534
val latestDepTest = findProperty("testLatestDeps") as Boolean

instrumentation/azure-core/azure-core-1.19/javaagent/build.gradle.kts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ dependencies {
2929
// Ensure no cross interference
3030
testInstrumentation(project(":instrumentation:azure-core:azure-core-1.14:javaagent"))
3131
testInstrumentation(project(":instrumentation:azure-core:azure-core-1.36:javaagent"))
32-
testInstrumentation(project(":instrumentation:azure-core:azure-core-1.53:javaagent"))
3332
}
3433

3534
val latestDepTest = findProperty("testLatestDeps") as Boolean

instrumentation/azure-core/azure-core-1.36/javaagent/build.gradle.kts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ muzzle {
66
pass {
77
group.set("com.azure")
88
module.set("azure-core")
9-
versions.set("[1.36.0,1.53.0)")
9+
versions.set("[1.36.0,)")
1010
assertInverse.set(true)
1111
}
1212
}
@@ -29,11 +29,16 @@ dependencies {
2929
// Ensure no cross interference
3030
testInstrumentation(project(":instrumentation:azure-core:azure-core-1.14:javaagent"))
3131
testInstrumentation(project(":instrumentation:azure-core:azure-core-1.19:javaagent"))
32-
testInstrumentation(project(":instrumentation:azure-core:azure-core-1.53:javaagent"))
3332
}
3433

3534
val latestDepTest = findProperty("testLatestDeps") as Boolean
3635

36+
tasks {
37+
withType<Test>().configureEach {
38+
systemProperty("testLatestDeps", findProperty("testLatestDeps") as Boolean)
39+
}
40+
}
41+
3742
testing {
3843
suites {
3944
// using a test suite to ensure that classes from library-instrumentation-shaded that were
@@ -42,8 +47,10 @@ testing {
4247
dependencies {
4348
if (latestDepTest) {
4449
implementation("com.azure:azure-core:+")
50+
implementation("com.azure:azure-core-test:+")
4551
} else {
4652
implementation("com.azure:azure-core:1.36.0")
53+
implementation("com.azure:azure-core-test:1.16.2")
4754
}
4855
}
4956
}

instrumentation/azure-core/azure-core-1.36/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/azurecore/v1_36/AzureSdkInstrumentationModule.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,7 @@ public void injectClasses(ClassInjector injector) {
5757
public ElementMatcher.Junction<ClassLoader> classLoaderMatcher() {
5858
// this class was introduced in azure-core 1.36
5959
return hasClassesNamed("com.azure.core.util.tracing.TracerProvider")
60-
.and(not(hasClassesNamed("com.azure.core.tracing.opentelemetry.OpenTelemetryTracer")))
61-
// this class was introduced in azure-core 1.53
62-
.and(not(hasClassesNamed("com.azure.core.util.LibraryTelemetryOptions")));
60+
.and(not(hasClassesNamed("com.azure.core.tracing.opentelemetry.OpenTelemetryTracer")));
6361
}
6462

6563
@Override

instrumentation/azure-core/azure-core-1.36/javaagent/src/testAzure/java/io/opentelemetry/javaagent/instrumentation/azurecore/v1_36/AzureSdkTest.java

Lines changed: 109 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,35 @@
77

88
import static org.assertj.core.api.Assertions.assertThat;
99

10+
import com.azure.core.annotation.ExpectedResponses;
11+
import com.azure.core.annotation.Get;
12+
import com.azure.core.annotation.Host;
13+
import com.azure.core.annotation.ServiceInterface;
14+
import com.azure.core.http.HttpClient;
15+
import com.azure.core.http.HttpPipeline;
16+
import com.azure.core.http.HttpPipelineBuilder;
17+
import com.azure.core.http.policy.HttpPipelinePolicy;
18+
import com.azure.core.http.policy.HttpPolicyProviders;
19+
import com.azure.core.http.rest.Response;
20+
import com.azure.core.http.rest.RestProxy;
21+
import com.azure.core.test.http.MockHttpResponse;
22+
import com.azure.core.util.ClientOptions;
1023
import com.azure.core.util.Context;
24+
import com.azure.core.util.TracingOptions;
25+
import io.opentelemetry.api.common.AttributeKey;
1126
import io.opentelemetry.api.common.Attributes;
1227
import io.opentelemetry.api.trace.SpanKind;
28+
import io.opentelemetry.instrumentation.api.internal.SpanKey;
1329
import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension;
1430
import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension;
1531
import io.opentelemetry.sdk.trace.data.StatusData;
32+
import java.util.ArrayList;
33+
import java.util.List;
34+
import java.util.concurrent.atomic.AtomicBoolean;
1635
import org.junit.jupiter.api.Test;
1736
import org.junit.jupiter.api.extension.RegisterExtension;
37+
import reactor.core.publisher.Mono;
38+
import reactor.test.StepVerifier;
1839

1940
class AzureSdkTest {
2041

@@ -27,7 +48,9 @@ void testHelperClassesInjected() {
2748
assertThat(azTracer.isEnabled()).isTrue();
2849

2950
assertThat(azTracer.getClass().getName())
30-
.endsWith("com.azure.core.tracing.opentelemetry.OpenTelemetryTracer");
51+
.isEqualTo(
52+
"io.opentelemetry.javaagent.instrumentation.azurecore.v1_36.shaded"
53+
+ ".com.azure.core.tracing.opentelemetry.OpenTelemetryTracer");
3154
}
3255

3356
@Test
@@ -46,9 +69,94 @@ void testSpan() {
4669
.hasAttributesSatisfying(Attributes::isEmpty)));
4770
}
4871

72+
@Test
73+
void testPipelineAndSuppression() {
74+
AtomicBoolean hasClientAndHttpKeys = new AtomicBoolean(false);
75+
76+
HttpClient mockClient =
77+
request ->
78+
Mono.defer(
79+
() -> {
80+
// check if suppression is working
81+
hasClientAndHttpKeys.set(hasClientAndHttpSpans());
82+
return Mono.just(new MockHttpResponse(request, 200));
83+
});
84+
85+
StepVerifier.create(createService(mockClient, true).testMethod())
86+
.expectNextCount(1)
87+
.expectComplete()
88+
.verify();
89+
90+
assertThat(hasClientAndHttpKeys.get()).isTrue();
91+
testing.waitAndAssertTracesWithoutScopeVersionVerification(
92+
trace ->
93+
trace.hasSpansSatisfyingExactly(
94+
span ->
95+
span.hasName("myService.testMethod")
96+
.hasKind(SpanKind.INTERNAL)
97+
.hasStatus(StatusData.unset())
98+
.hasAttributesSatisfyingExactly(),
99+
span ->
100+
span.hasKind(SpanKind.CLIENT)
101+
.hasName(Boolean.getBoolean("testLatestDeps") ? "GET" : "HTTP GET")
102+
.hasStatus(StatusData.unset())
103+
.hasAttribute(AttributeKey.longKey("http.response.status_code"), 200L)));
104+
}
105+
106+
@Test
107+
void testDisabledTracingNoSuppression() {
108+
AtomicBoolean hasClientAndHttpKeys = new AtomicBoolean(false);
109+
110+
HttpClient mockClient =
111+
request ->
112+
Mono.defer(
113+
() -> {
114+
// check no suppression
115+
hasClientAndHttpKeys.set(hasClientAndHttpSpans());
116+
return Mono.just(new MockHttpResponse(request, 200));
117+
});
118+
119+
StepVerifier.create(createService(mockClient, false).testMethod())
120+
.expectNextCount(1)
121+
.expectComplete()
122+
.verify();
123+
124+
assertThat(hasClientAndHttpKeys.get()).isFalse();
125+
}
126+
49127
private static com.azure.core.util.tracing.Tracer createAzTracer() {
50128
com.azure.core.util.tracing.TracerProvider azProvider =
51129
com.azure.core.util.tracing.TracerProvider.getDefaultProvider();
52130
return azProvider.createTracer("test-lib", "test-version", "otel.tests", null);
53131
}
132+
133+
private static TestInterface createService(HttpClient httpClient, boolean tracingEnabled) {
134+
List<HttpPipelinePolicy> policies = new ArrayList<>();
135+
HttpPolicyProviders.addAfterRetryPolicies(policies);
136+
137+
ClientOptions clientOptions =
138+
new ClientOptions().setTracingOptions(new TracingOptions().setEnabled(tracingEnabled));
139+
HttpPipeline pipeline =
140+
new HttpPipelineBuilder()
141+
.policies(policies.toArray(new HttpPipelinePolicy[0]))
142+
.httpClient(httpClient)
143+
.clientOptions(clientOptions)
144+
.build();
145+
146+
return RestProxy.create(TestInterface.class, pipeline);
147+
}
148+
149+
private static boolean hasClientAndHttpSpans() {
150+
io.opentelemetry.context.Context ctx = io.opentelemetry.context.Context.current();
151+
return SpanKey.KIND_CLIENT.fromContextOrNull(ctx) != null
152+
&& SpanKey.HTTP_CLIENT.fromContextOrNull(ctx) != null;
153+
}
154+
155+
@Host("https://azure.com")
156+
@ServiceInterface(name = "myService")
157+
interface TestInterface {
158+
@Get("path")
159+
@ExpectedResponses({200})
160+
Mono<Response<Void>> testMethod();
161+
}
54162
}

instrumentation/azure-core/azure-core-1.36/javaagent/src/testAzure/java/io/opentelemetry/javaagent/instrumentation/azurecore/v1_36/AzureSdkTestOld.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,9 @@ void testHelperClassesInjected() {
3232
assertThat(azTracer.isEnabled()).isTrue();
3333

3434
assertThat(azTracer.getClass().getName())
35-
.endsWith(".shaded.com.azure.core.tracing.opentelemetry.OpenTelemetryTracer");
35+
.isEqualTo(
36+
"io.opentelemetry.javaagent.instrumentation.azurecore.v1_36.shaded"
37+
+ ".com.azure.core.tracing.opentelemetry.OpenTelemetryTracer");
3638
}
3739

3840
@Test

instrumentation/azure-core/azure-core-1.53/javaagent/build.gradle.kts

Lines changed: 0 additions & 59 deletions
This file was deleted.

instrumentation/azure-core/azure-core-1.53/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/azurecore/v1_53/AzureHttpClientInstrumentation.java

Lines changed: 0 additions & 79 deletions
This file was deleted.

0 commit comments

Comments
 (0)