Skip to content

Commit 7779d26

Browse files
authored
Fix flaky aws sqs test (#10782)
1 parent d56c3a0 commit 7779d26

File tree

1 file changed

+34
-27
lines changed

1 file changed

+34
-27
lines changed

instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractSqsTracingTest.java

Lines changed: 34 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import io.opentelemetry.instrumentation.test.utils.PortUtils;
2929
import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension;
3030
import io.opentelemetry.sdk.testing.assertj.AttributeAssertion;
31+
import io.opentelemetry.sdk.trace.data.SpanData;
3132
import io.opentelemetry.semconv.SemanticAttributes;
3233
import java.util.ArrayList;
3334
import java.util.Arrays;
@@ -324,7 +325,7 @@ void testSimpleSqsProducerConsumerServicesWithParentSpan() {
324325
val -> val.isInstanceOf(String.class)),
325326
equalTo(SemanticAttributes.NETWORK_PROTOCOL_VERSION, "1.1"))),
326327
trace ->
327-
trace.hasSpansSatisfyingExactly(
328+
trace.hasSpansSatisfyingExactlyInAnyOrder(
328329
span -> span.hasName("parent").hasNoParent().hasAttributes(Attributes.empty()),
329330
span ->
330331
span.hasName("SQS.ReceiveMessage")
@@ -369,32 +370,38 @@ void testSimpleSqsProducerConsumerServicesWithParentSpan() {
369370
equalTo(SemanticAttributes.MESSAGING_OPERATION, "receive"),
370371
equalTo(SemanticAttributes.MESSAGING_BATCH_MESSAGE_COUNT, 1),
371372
equalTo(SemanticAttributes.NETWORK_PROTOCOL_VERSION, "1.1")),
372-
span ->
373-
span.hasName("testSdkSqs process")
374-
.hasKind(SpanKind.CONSUMER)
375-
.hasParent(trace.getSpan(2))
376-
.hasAttributesSatisfyingExactly(
377-
equalTo(stringKey("aws.agent"), "java-aws-sdk"),
378-
equalTo(stringKey("aws.endpoint"), "http://localhost:" + sqsPort),
379-
equalTo(
380-
stringKey("aws.queue.url"),
381-
"http://localhost:" + sqsPort + "/000000000000/testSdkSqs"),
382-
equalTo(SemanticAttributes.RPC_SYSTEM, "aws-api"),
383-
equalTo(SemanticAttributes.RPC_SERVICE, "AmazonSQS"),
384-
equalTo(SemanticAttributes.RPC_METHOD, "ReceiveMessage"),
385-
equalTo(SemanticAttributes.HTTP_REQUEST_METHOD, "POST"),
386-
equalTo(SemanticAttributes.HTTP_RESPONSE_STATUS_CODE, 200),
387-
equalTo(SemanticAttributes.URL_FULL, "http://localhost:" + sqsPort),
388-
equalTo(SemanticAttributes.SERVER_ADDRESS, "localhost"),
389-
equalTo(SemanticAttributes.SERVER_PORT, sqsPort),
390-
equalTo(SemanticAttributes.MESSAGING_SYSTEM, "AmazonSQS"),
391-
equalTo(
392-
SemanticAttributes.MESSAGING_DESTINATION_NAME, "testSdkSqs"),
393-
equalTo(SemanticAttributes.MESSAGING_OPERATION, "process"),
394-
satisfies(
395-
SemanticAttributes.MESSAGING_MESSAGE_ID,
396-
val -> val.isInstanceOf(String.class)),
397-
equalTo(SemanticAttributes.NETWORK_PROTOCOL_VERSION, "1.1")),
373+
span -> {
374+
// on jdk8 the order of the "SQS.ReceiveMessage" and "testSdkSqs receive"
375+
// spans can vary
376+
SpanData parent =
377+
"testSdkSqs receive".equals(trace.getSpan(2).getName())
378+
? trace.getSpan(2)
379+
: trace.getSpan(1);
380+
span.hasName("testSdkSqs process")
381+
.hasKind(SpanKind.CONSUMER)
382+
.hasParent(parent)
383+
.hasAttributesSatisfyingExactly(
384+
equalTo(stringKey("aws.agent"), "java-aws-sdk"),
385+
equalTo(stringKey("aws.endpoint"), "http://localhost:" + sqsPort),
386+
equalTo(
387+
stringKey("aws.queue.url"),
388+
"http://localhost:" + sqsPort + "/000000000000/testSdkSqs"),
389+
equalTo(SemanticAttributes.RPC_SYSTEM, "aws-api"),
390+
equalTo(SemanticAttributes.RPC_SERVICE, "AmazonSQS"),
391+
equalTo(SemanticAttributes.RPC_METHOD, "ReceiveMessage"),
392+
equalTo(SemanticAttributes.HTTP_REQUEST_METHOD, "POST"),
393+
equalTo(SemanticAttributes.HTTP_RESPONSE_STATUS_CODE, 200),
394+
equalTo(SemanticAttributes.URL_FULL, "http://localhost:" + sqsPort),
395+
equalTo(SemanticAttributes.SERVER_ADDRESS, "localhost"),
396+
equalTo(SemanticAttributes.SERVER_PORT, sqsPort),
397+
equalTo(SemanticAttributes.MESSAGING_SYSTEM, "AmazonSQS"),
398+
equalTo(SemanticAttributes.MESSAGING_DESTINATION_NAME, "testSdkSqs"),
399+
equalTo(SemanticAttributes.MESSAGING_OPERATION, "process"),
400+
satisfies(
401+
SemanticAttributes.MESSAGING_MESSAGE_ID,
402+
val -> val.isInstanceOf(String.class)),
403+
equalTo(SemanticAttributes.NETWORK_PROTOCOL_VERSION, "1.1"));
404+
},
398405
span ->
399406
span.hasName("process child")
400407
.hasParent(trace.getSpan(3))

0 commit comments

Comments
 (0)