Skip to content

Commit 33a0d15

Browse files
committed
refactoring
1 parent 883a163 commit 33a0d15

File tree

3 files changed

+93
-146
lines changed

3 files changed

+93
-146
lines changed

instrumentation/aws-sdk/aws-sdk-2.2/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AbstractAws2SqsBaseTest.java

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,30 @@
55

66
package io.opentelemetry.instrumentation.awssdk.v2_2;
77

8+
import static io.opentelemetry.api.common.AttributeKey.stringKey;
9+
import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo;
10+
import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies;
11+
import static io.opentelemetry.semconv.HttpAttributes.HTTP_REQUEST_METHOD;
12+
import static io.opentelemetry.semconv.HttpAttributes.HTTP_RESPONSE_STATUS_CODE;
13+
import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS;
14+
import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT;
15+
import static io.opentelemetry.semconv.UrlAttributes.URL_FULL;
16+
import static io.opentelemetry.semconv.incubating.AwsIncubatingAttributes.AWS_REQUEST_ID;
17+
import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME;
18+
import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID;
19+
import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_OPERATION;
20+
import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_SYSTEM;
21+
import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MessagingSystemIncubatingValues.AWS_SQS;
22+
import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_METHOD;
23+
import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_SERVICE;
24+
import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_SYSTEM;
825
import static org.assertj.core.api.Assertions.assertThat;
926

27+
import io.opentelemetry.api.trace.SpanKind;
1028
import io.opentelemetry.instrumentation.api.internal.ConfigPropertiesUtil;
1129
import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension;
30+
import io.opentelemetry.sdk.testing.assertj.SpanDataAssert;
31+
import io.opentelemetry.sdk.trace.data.SpanData;
1232
import java.net.URI;
1333
import java.net.URISyntaxException;
1434
import java.util.HashMap;
@@ -183,4 +203,70 @@ void testSimpleSqsProducerConsumerServicesAsync() throws Exception {
183203
response.messages().forEach(message -> getTesting().runWithSpan("process child", () -> {}));
184204
assertSqsTraces(false, false);
185205
}
206+
207+
static SpanDataAssert createQueueSpan(SpanDataAssert span) {
208+
return span.hasName("Sqs.CreateQueue")
209+
.hasKind(SpanKind.CLIENT)
210+
.hasNoParent()
211+
.hasAttributesSatisfyingExactly(
212+
equalTo(stringKey("aws.agent"), "java-aws-sdk"),
213+
equalTo(stringKey("aws.queue.name"), "testSdkSqs"),
214+
satisfies(
215+
AWS_REQUEST_ID,
216+
val -> val.matches("\\s*00000000-0000-0000-0000-000000000000\\s*|UNKNOWN")),
217+
equalTo(RPC_SYSTEM, "aws-api"),
218+
equalTo(RPC_SERVICE, "Sqs"),
219+
equalTo(RPC_METHOD, "CreateQueue"),
220+
equalTo(HTTP_REQUEST_METHOD, "POST"),
221+
equalTo(HTTP_RESPONSE_STATUS_CODE, 200),
222+
satisfies(URL_FULL, v -> v.startsWith("http://localhost:" + sqsPort)),
223+
equalTo(SERVER_ADDRESS, "localhost"),
224+
equalTo(SERVER_PORT, sqsPort));
225+
}
226+
227+
@SuppressWarnings("deprecation") // using deprecated semconv
228+
static SpanDataAssert processSpan(SpanDataAssert span, SpanData parent) {
229+
return span.hasName("testSdkSqs process")
230+
.hasKind(SpanKind.CONSUMER)
231+
.hasParent(parent)
232+
.hasTotalRecordedLinks(0)
233+
.hasAttributesSatisfyingExactly(
234+
equalTo(stringKey("aws.agent"), "java-aws-sdk"),
235+
equalTo(RPC_SYSTEM, "aws-api"),
236+
equalTo(RPC_SERVICE, "Sqs"),
237+
equalTo(RPC_METHOD, "ReceiveMessage"),
238+
equalTo(HTTP_REQUEST_METHOD, "POST"),
239+
equalTo(HTTP_RESPONSE_STATUS_CODE, 200),
240+
satisfies(URL_FULL, v -> v.startsWith("http://localhost:" + sqsPort)),
241+
equalTo(SERVER_ADDRESS, "localhost"),
242+
equalTo(SERVER_PORT, sqsPort),
243+
equalTo(MESSAGING_SYSTEM, AWS_SQS),
244+
equalTo(MESSAGING_DESTINATION_NAME, "testSdkSqs"),
245+
equalTo(MESSAGING_OPERATION, "process"),
246+
satisfies(MESSAGING_MESSAGE_ID, v -> v.isInstanceOf(String.class)));
247+
}
248+
249+
@SuppressWarnings("deprecation") // using deprecated semconv
250+
static SpanDataAssert publishSpan(SpanDataAssert span, String queueUrl) {
251+
return span.hasName("testSdkSqs publish")
252+
.hasKind(SpanKind.PRODUCER)
253+
.hasNoParent()
254+
.hasAttributesSatisfyingExactly(
255+
equalTo(stringKey("aws.agent"), "java-aws-sdk"),
256+
equalTo(stringKey("aws.queue.url"), queueUrl),
257+
satisfies(
258+
AWS_REQUEST_ID,
259+
val -> val.matches("\\s*00000000-0000-0000-0000-000000000000\\s*|UNKNOWN")),
260+
equalTo(RPC_SYSTEM, "aws-api"),
261+
equalTo(RPC_SERVICE, "Sqs"),
262+
equalTo(RPC_METHOD, "SendMessageBatch"),
263+
equalTo(HTTP_REQUEST_METHOD, "POST"),
264+
equalTo(HTTP_RESPONSE_STATUS_CODE, 200),
265+
satisfies(URL_FULL, v -> v.startsWith("http://localhost:" + sqsPort)),
266+
equalTo(SERVER_ADDRESS, "localhost"),
267+
equalTo(SERVER_PORT, sqsPort),
268+
equalTo(MESSAGING_SYSTEM, AWS_SQS),
269+
equalTo(MESSAGING_DESTINATION_NAME, "testSdkSqs"),
270+
equalTo(MESSAGING_OPERATION, "publish"));
271+
}
186272
}

instrumentation/aws-sdk/aws-sdk-2.2/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AbstractAws2SqsSuppressReceiveSpansTest.java

Lines changed: 6 additions & 123 deletions
Original file line numberDiff line numberDiff line change
@@ -42,83 +42,15 @@
4242
public abstract class AbstractAws2SqsSuppressReceiveSpansTest extends AbstractAws2SqsBaseTest {
4343

4444
@Override
45-
@SuppressWarnings("deprecation") // using deprecated semconv
4645
protected void assertSqsTraces(Boolean withParent, Boolean captureHeaders) {
4746
List<Consumer<TraceAssert>> traceAsserts =
4847
new ArrayList<>(
4948
Arrays.asList(
49+
trace -> trace.hasSpansSatisfyingExactly(span -> createQueueSpan(span)),
5050
trace ->
5151
trace.hasSpansSatisfyingExactly(
52-
span ->
53-
span.hasName("Sqs.CreateQueue")
54-
.hasKind(SpanKind.CLIENT)
55-
.hasNoParent()
56-
.hasAttributesSatisfyingExactly(
57-
equalTo(stringKey("aws.agent"), "java-aws-sdk"),
58-
equalTo(stringKey("aws.queue.name"), "testSdkSqs"),
59-
satisfies(
60-
AWS_REQUEST_ID,
61-
val ->
62-
val.matches(
63-
"\\s*00000000-0000-0000-0000-000000000000\\s*|UNKNOWN")),
64-
equalTo(RPC_SYSTEM, "aws-api"),
65-
equalTo(RPC_SERVICE, "Sqs"),
66-
equalTo(RPC_METHOD, "CreateQueue"),
67-
equalTo(HTTP_REQUEST_METHOD, "POST"),
68-
equalTo(HTTP_RESPONSE_STATUS_CODE, 200),
69-
satisfies(
70-
URL_FULL, v -> v.startsWith("http://localhost:" + sqsPort)),
71-
equalTo(SERVER_ADDRESS, "localhost"),
72-
equalTo(SERVER_PORT, sqsPort))),
73-
trace ->
74-
trace.hasSpansSatisfyingExactly(
75-
span ->
76-
span.hasName("testSdkSqs publish")
77-
.hasKind(SpanKind.PRODUCER)
78-
.hasNoParent()
79-
.hasAttributesSatisfyingExactly(
80-
equalTo(stringKey("aws.agent"), "java-aws-sdk"),
81-
equalTo(stringKey("aws.queue.url"), queueUrl),
82-
satisfies(
83-
AWS_REQUEST_ID,
84-
val ->
85-
val.matches(
86-
"\\s*00000000-0000-0000-0000-000000000000\\s*|UNKNOWN")),
87-
equalTo(RPC_SYSTEM, "aws-api"),
88-
equalTo(RPC_SERVICE, "Sqs"),
89-
equalTo(RPC_METHOD, "SendMessage"),
90-
equalTo(HTTP_REQUEST_METHOD, "POST"),
91-
equalTo(HTTP_RESPONSE_STATUS_CODE, 200),
92-
satisfies(
93-
URL_FULL, v -> v.startsWith("http://localhost:" + sqsPort)),
94-
equalTo(SERVER_ADDRESS, "localhost"),
95-
equalTo(SERVER_PORT, sqsPort),
96-
equalTo(MESSAGING_SYSTEM, AWS_SQS),
97-
equalTo(MESSAGING_DESTINATION_NAME, "testSdkSqs"),
98-
equalTo(MESSAGING_OPERATION, "publish"),
99-
satisfies(
100-
MESSAGING_MESSAGE_ID, v -> v.isInstanceOf(String.class))),
101-
span ->
102-
span.hasName("testSdkSqs process")
103-
.hasKind(SpanKind.CONSUMER)
104-
.hasParent(trace.getSpan(0))
105-
.hasTotalRecordedLinks(0)
106-
.hasAttributesSatisfyingExactly(
107-
equalTo(stringKey("aws.agent"), "java-aws-sdk"),
108-
equalTo(RPC_SYSTEM, "aws-api"),
109-
equalTo(RPC_SERVICE, "Sqs"),
110-
equalTo(RPC_METHOD, "ReceiveMessage"),
111-
equalTo(HTTP_REQUEST_METHOD, "POST"),
112-
equalTo(HTTP_RESPONSE_STATUS_CODE, 200),
113-
satisfies(
114-
URL_FULL, v -> v.startsWith("http://localhost:" + sqsPort)),
115-
equalTo(SERVER_ADDRESS, "localhost"),
116-
equalTo(SERVER_PORT, sqsPort),
117-
equalTo(MESSAGING_SYSTEM, AWS_SQS),
118-
equalTo(MESSAGING_DESTINATION_NAME, "testSdkSqs"),
119-
equalTo(MESSAGING_OPERATION, "process"),
120-
satisfies(
121-
MESSAGING_MESSAGE_ID, v -> v.isInstanceOf(String.class))),
52+
span -> publishSpan(span, queueUrl),
53+
span -> processSpan(span, trace.getSpan(0)),
12254
span ->
12355
span.hasName("process child")
12456
.hasParent(trace.getSpan(1))
@@ -186,62 +118,13 @@ void testBatchSqsProducerConsumerServicesSync() throws URISyntaxException {
186118
List<Consumer<TraceAssert>> traceAsserts =
187119
new ArrayList<>(
188120
Arrays.asList(
189-
trace ->
190-
trace.hasSpansSatisfyingExactly(
191-
span -> span.hasName("Sqs.CreateQueue").hasKind(SpanKind.CLIENT)),
121+
trace -> trace.hasSpansSatisfyingExactly(span -> createQueueSpan(span)),
192122
trace -> {
193123
List<Consumer<SpanDataAssert>> spanAsserts =
194-
new ArrayList<>(
195-
singletonList(
196-
span ->
197-
span.hasName("testSdkSqs publish")
198-
.hasKind(SpanKind.PRODUCER)
199-
.hasNoParent()
200-
.hasAttributesSatisfyingExactly(
201-
equalTo(stringKey("aws.agent"), "java-aws-sdk"),
202-
equalTo(stringKey("aws.queue.url"), queueUrl),
203-
satisfies(
204-
AWS_REQUEST_ID,
205-
val ->
206-
val.matches(
207-
"\\s*00000000-0000-0000-0000-000000000000\\s*|UNKNOWN")),
208-
equalTo(RPC_SYSTEM, "aws-api"),
209-
equalTo(RPC_SERVICE, "Sqs"),
210-
equalTo(RPC_METHOD, "SendMessageBatch"),
211-
equalTo(HTTP_REQUEST_METHOD, "POST"),
212-
equalTo(HTTP_RESPONSE_STATUS_CODE, 200),
213-
satisfies(
214-
URL_FULL,
215-
v -> v.startsWith("http://localhost:" + sqsPort)),
216-
equalTo(SERVER_ADDRESS, "localhost"),
217-
equalTo(SERVER_PORT, sqsPort),
218-
equalTo(MESSAGING_SYSTEM, AWS_SQS),
219-
equalTo(MESSAGING_DESTINATION_NAME, "testSdkSqs"),
220-
equalTo(MESSAGING_OPERATION, "publish"))));
124+
new ArrayList<>(singletonList(span -> publishSpan(span, queueUrl)));
221125

222126
for (int i = 0; i <= (isXrayInjectionEnabled() ? 2 : 1); i++) {
223-
spanAsserts.add(
224-
span ->
225-
span.hasName("testSdkSqs process")
226-
.hasKind(SpanKind.CONSUMER)
227-
.hasParent(trace.getSpan(0))
228-
.hasTotalRecordedLinks(0)
229-
.hasAttributesSatisfyingExactly(
230-
equalTo(stringKey("aws.agent"), "java-aws-sdk"),
231-
equalTo(RPC_SYSTEM, "aws-api"),
232-
equalTo(RPC_SERVICE, "Sqs"),
233-
equalTo(RPC_METHOD, "ReceiveMessage"),
234-
equalTo(HTTP_REQUEST_METHOD, "POST"),
235-
equalTo(HTTP_RESPONSE_STATUS_CODE, 200),
236-
satisfies(
237-
URL_FULL, v -> v.startsWith("http://localhost:" + sqsPort)),
238-
equalTo(SERVER_ADDRESS, "localhost"),
239-
equalTo(SERVER_PORT, sqsPort),
240-
equalTo(MESSAGING_SYSTEM, AWS_SQS),
241-
equalTo(MESSAGING_DESTINATION_NAME, "testSdkSqs"),
242-
equalTo(MESSAGING_OPERATION, "process"),
243-
satisfies(
244-
MESSAGING_MESSAGE_ID, v -> v.isInstanceOf(String.class))));
127+
spanAsserts.add(span -> processSpan(span, trace.getSpan(0)));
245128
}
246129
trace.hasSpansSatisfyingExactly(spanAsserts);
247130
}));

instrumentation/aws-sdk/aws-sdk-2.2/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AbstractAws2SqsTracingTest.java

Lines changed: 1 addition & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -58,29 +58,7 @@ protected void assertSqsTraces(Boolean withParent, Boolean captureHeaders) {
5858

5959
getTesting()
6060
.waitAndAssertTraces(
61-
trace ->
62-
trace.hasSpansSatisfyingExactly(
63-
span ->
64-
span.hasName("Sqs.CreateQueue")
65-
.hasKind(SpanKind.CLIENT)
66-
.hasNoParent()
67-
.hasAttributesSatisfyingExactly(
68-
equalTo(stringKey("aws.agent"), "java-aws-sdk"),
69-
equalTo(stringKey("aws.queue.name"), "testSdkSqs"),
70-
satisfies(
71-
AWS_REQUEST_ID,
72-
val ->
73-
val.matches(
74-
"\\s*00000000-0000-0000-0000-000000000000\\s*|UNKNOWN")),
75-
equalTo(RPC_SYSTEM, "aws-api"),
76-
equalTo(RPC_SERVICE, "Sqs"),
77-
equalTo(RPC_METHOD, "CreateQueue"),
78-
equalTo(HTTP_REQUEST_METHOD, "POST"),
79-
equalTo(HTTP_RESPONSE_STATUS_CODE, 200),
80-
satisfies(
81-
URL_FULL, v -> v.startsWith("http://localhost:" + sqsPort)),
82-
equalTo(SERVER_ADDRESS, "localhost"),
83-
equalTo(SERVER_PORT, sqsPort))),
61+
trace -> trace.hasSpansSatisfyingExactly(span -> createQueueSpan(span)),
8462
trace ->
8563
trace.hasSpansSatisfyingExactly(
8664
span -> {

0 commit comments

Comments
 (0)