Skip to content

Commit 3c0acac

Browse files
committed
Updated v1_11 tests to account for dynamodb
1 parent 9857868 commit 3c0acac

File tree

8 files changed

+107
-19
lines changed

8 files changed

+107
-19
lines changed

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

+9-3
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,13 @@
2828
import com.amazonaws.auth.AnonymousAWSCredentials;
2929
import com.amazonaws.client.builder.AwsClientBuilder;
3030
import com.amazonaws.handlers.RequestHandler2;
31+
import io.opentelemetry.api.common.AttributeType;
3132
import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension;
3233
import io.opentelemetry.sdk.testing.assertj.AttributeAssertion;
3334
import io.opentelemetry.testing.internal.armeria.testing.junit5.server.mock.MockWebServerExtension;
3435
import java.lang.reflect.Field;
3536
import java.util.ArrayList;
3637
import java.util.List;
37-
import java.util.Map;
3838
import org.junit.jupiter.api.AfterAll;
3939
import org.junit.jupiter.api.BeforeAll;
4040
import org.junit.jupiter.api.BeforeEach;
@@ -75,7 +75,7 @@ public void assertRequestWithMockedResponse(
7575
String service,
7676
String operation,
7777
String method,
78-
Map<String, String> additionalAttributes)
78+
List<AttributeKeyPair<?>> additionalAttributes)
7979
throws Exception {
8080

8181
assertThat(response).isNotNull();
@@ -114,7 +114,13 @@ public void assertRequestWithMockedResponse(
114114
}
115115

116116
additionalAttributes.forEach(
117-
(k, v) -> attributes.add(equalTo(stringKey(k), v)));
117+
(att) -> {
118+
if (att.getType() == AttributeType.STRING) {
119+
attributes.add(equalTo(att.getStringKey(), att.getStringVal()));
120+
} else if (att.getType() == AttributeType.STRING_ARRAY) {
121+
attributes.add(equalTo(att.getStringArrayKey(), att.getStringArrayVal()));
122+
}
123+
});
118124

119125
span.hasName(service + "." + operation)
120126
.hasKind(operation.equals("SendMessage") ? PRODUCER : CLIENT)

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

+15-2
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,16 @@
88
import com.amazonaws.services.dynamodbv2.AmazonDynamoDB;
99
import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClientBuilder;
1010
import com.amazonaws.services.dynamodbv2.model.CreateTableRequest;
11-
import com.google.common.collect.ImmutableMap;
1211
import io.opentelemetry.testing.internal.armeria.common.HttpResponse;
1312
import io.opentelemetry.testing.internal.armeria.common.HttpStatus;
1413
import io.opentelemetry.testing.internal.armeria.common.MediaType;
1514
import org.junit.jupiter.api.Test;
15+
import java.util.Arrays;
16+
import java.util.Collections;
17+
import java.util.List;
18+
19+
import static io.opentelemetry.instrumentation.awssdk.v1_11.AttributeKeyPair.createStringArrayKeyPair;
20+
import static io.opentelemetry.instrumentation.awssdk.v1_11.AttributeKeyPair.createStringKeyPair;
1621

1722
public abstract class AbstractDynamoDbClientTest extends AbstractBaseAwsClientTest {
1823

@@ -34,13 +39,21 @@ public void sendRequestWithMockedResponse() throws Exception {
3439

3540
server.enqueue(HttpResponse.of(HttpStatus.OK, MediaType.PLAIN_TEXT_UTF_8, ""));
3641

42+
List<String> tableList = Collections.singletonList("sometable");
43+
44+
List<AttributeKeyPair<?>> additionalAttributes = Arrays.asList(
45+
createStringKeyPair("aws.table.name", "sometable"),
46+
createStringKeyPair("db.system", "dynamodb"),
47+
createStringArrayKeyPair("aws.dynamodb.table_names", tableList)
48+
);
49+
3750
Object response = client.createTable(new CreateTableRequest("sometable", null));
3851
assertRequestWithMockedResponse(
3952
response,
4053
client,
4154
"DynamoDBv2",
4255
"CreateTable",
4356
"POST",
44-
ImmutableMap.of("aws.table.name", "sometable"));
57+
additionalAttributes);
4558
}
4659
}

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,6 @@ public void sendRequestWithMockedResponse() throws Exception {
4141

4242
Object response = client.allocateAddress();
4343
assertRequestWithMockedResponse(
44-
response, client, "EC2", "AllocateAddress", "POST", Collections.emptyMap());
44+
response, client, "EC2", "AllocateAddress", "POST", Collections.emptyList());
4545
}
4646
}

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

+8-3
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,20 @@
88
import com.amazonaws.services.kinesis.AmazonKinesis;
99
import com.amazonaws.services.kinesis.AmazonKinesisClientBuilder;
1010
import com.amazonaws.services.kinesis.model.DeleteStreamRequest;
11-
import com.google.common.collect.ImmutableMap;
11+
1212
import io.opentelemetry.testing.internal.armeria.common.HttpResponse;
1313
import io.opentelemetry.testing.internal.armeria.common.HttpStatus;
1414
import io.opentelemetry.testing.internal.armeria.common.MediaType;
15-
import java.util.Map;
15+
import java.util.Arrays;
16+
import java.util.List;
1617
import java.util.function.Function;
1718
import java.util.stream.Stream;
1819
import org.junit.jupiter.params.ParameterizedTest;
1920
import org.junit.jupiter.params.provider.Arguments;
2021
import org.junit.jupiter.params.provider.MethodSource;
2122

23+
import static io.opentelemetry.instrumentation.awssdk.v1_11.AttributeKeyPair.createStringKeyPair;
24+
2225
public abstract class AbstractKinesisClientTest extends AbstractBaseAwsClientTest {
2326

2427
public abstract AmazonKinesisClientBuilder configureClient(AmazonKinesisClientBuilder client);
@@ -42,7 +45,9 @@ public void testSendRequestWithMockedResponse(
4245

4346
server.enqueue(HttpResponse.of(HttpStatus.OK, MediaType.PLAIN_TEXT_UTF_8, ""));
4447

45-
Map<String, String> additionalAttributes = ImmutableMap.of("aws.stream.name", "somestream");
48+
List<AttributeKeyPair<?>> additionalAttributes = Arrays.asList(
49+
createStringKeyPair("aws.stream.name", "somestream")
50+
);
4651
Object response = call.apply(client);
4752
assertRequestWithMockedResponse(
4853
response, client, "Kinesis", operation, "POST", additionalAttributes);

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,6 @@ public void sendRequestWithMockedResponse() throws Exception {
4242

4343
Object response = client.deleteOptionGroup(new DeleteOptionGroupRequest());
4444
assertRequestWithMockedResponse(
45-
response, client, "RDS", "DeleteOptionGroup", "POST", Collections.emptyMap());
45+
response, client, "RDS", "DeleteOptionGroup", "POST", Collections.emptyList());
4646
}
4747
}

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

+5-5
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
import static io.opentelemetry.api.common.AttributeKey.stringKey;
99
import static io.opentelemetry.api.trace.SpanKind.CLIENT;
10+
import static io.opentelemetry.instrumentation.awssdk.v1_11.AttributeKeyPair.createStringKeyPair;
1011
import static io.opentelemetry.instrumentation.test.utils.PortUtils.UNUSABLE_PORT;
1112
import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo;
1213
import static io.opentelemetry.semconv.ErrorAttributes.ERROR_TYPE;
@@ -27,14 +28,13 @@
2728
import com.amazonaws.retry.PredefinedRetryPolicies;
2829
import com.amazonaws.services.s3.AmazonS3;
2930
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
30-
import com.google.common.collect.ImmutableMap;
3131
import io.opentelemetry.api.trace.Span;
3232
import io.opentelemetry.sdk.trace.data.StatusData;
3333
import io.opentelemetry.testing.internal.armeria.common.HttpResponse;
3434
import io.opentelemetry.testing.internal.armeria.common.HttpStatus;
3535
import io.opentelemetry.testing.internal.armeria.common.MediaType;
3636
import java.time.Duration;
37-
import java.util.Map;
37+
import java.util.List;
3838
import java.util.function.Function;
3939
import java.util.stream.Stream;
4040
import org.junit.jupiter.api.Test;
@@ -60,7 +60,7 @@ public void testSendRequestWithMockedResponse(
6060
String operation,
6161
String method,
6262
Function<AmazonS3, Object> call,
63-
Map<String, String> additionalAttributes)
63+
List<AttributeKeyPair<?>> additionalAttributes)
6464
throws Exception {
6565

6666
AmazonS3 client =
@@ -82,12 +82,12 @@ private static Stream<Arguments> provideArguments() {
8282
"CreateBucket",
8383
"PUT",
8484
(Function<AmazonS3, Object>) c -> c.createBucket("testbucket"),
85-
ImmutableMap.of("aws.bucket.name", "testbucket")),
85+
createStringKeyPair("aws.bucket.name", "testbucket")),
8686
Arguments.of(
8787
"GetObject",
8888
"GET",
8989
(Function<AmazonS3, Object>) c -> c.getObject("someBucket", "someKey"),
90-
ImmutableMap.of("aws.bucket.name", "someBucket")));
90+
createStringKeyPair("aws.bucket.name", "somebucket")));
9191
}
9292

9393
@Test

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

+5-4
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,17 @@
55

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

8+
import static io.opentelemetry.instrumentation.awssdk.v1_11.AttributeKeyPair.createStringKeyPair;
89
import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME;
910

1011
import com.amazonaws.services.sns.AmazonSNS;
1112
import com.amazonaws.services.sns.AmazonSNSClientBuilder;
1213
import com.amazonaws.services.sns.model.PublishRequest;
13-
import com.google.common.collect.ImmutableMap;
1414
import io.opentelemetry.testing.internal.armeria.common.HttpResponse;
1515
import io.opentelemetry.testing.internal.armeria.common.HttpStatus;
1616
import io.opentelemetry.testing.internal.armeria.common.MediaType;
17-
import java.util.Map;
17+
import java.util.Arrays;
18+
import java.util.List;
1819
import java.util.function.Function;
1920
import java.util.stream.Stream;
2021
import org.junit.jupiter.params.ParameterizedTest;
@@ -52,8 +53,8 @@ public void testSendRequestWithMockedResponse(Function<AmazonSNS, Object> call)
5253

5354
server.enqueue(HttpResponse.of(HttpStatus.OK, MediaType.PLAIN_TEXT_UTF_8, body));
5455

55-
Map<String, String> additionalAttributes =
56-
ImmutableMap.of(MESSAGING_DESTINATION_NAME.toString(), "somearn");
56+
List<AttributeKeyPair<?>> additionalAttributes = Arrays.asList(
57+
createStringKeyPair(MESSAGING_DESTINATION_NAME.toString(), "somearn"));
5758

5859
Object response = call.apply(client);
5960
assertRequestWithMockedResponse(
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
package io.opentelemetry.instrumentation.awssdk.v1_11;
2+
3+
import groovyjarjarantlr4.v4.runtime.misc.Nullable;
4+
import io.opentelemetry.api.common.AttributeKey;
5+
import io.opentelemetry.api.common.AttributeType;
6+
import java.util.List;
7+
8+
public class AttributeKeyPair<T> {
9+
10+
private final AttributeKey<T> key;
11+
private final T value;
12+
13+
AttributeKeyPair(AttributeKey<T> key, T value) {
14+
this.key = key;
15+
this.value = value;
16+
}
17+
18+
public static AttributeKeyPair<String> createStringKeyPair(String keyString, String val) {
19+
return new AttributeKeyPair<>(AttributeKey.stringKey(keyString), val);
20+
}
21+
22+
public static AttributeKeyPair<List<String>> createStringArrayKeyPair(String keyString, List<String> val) {
23+
return new AttributeKeyPair<>(AttributeKey.stringArrayKey(keyString), val);
24+
}
25+
26+
public AttributeType getType() {
27+
return key.getType();
28+
}
29+
30+
@SuppressWarnings("unchecked")
31+
public AttributeKey<String> getStringKey() {
32+
if (key.getType() != AttributeType.STRING){
33+
return null;
34+
}
35+
return (AttributeKey<String>) key;
36+
}
37+
38+
@SuppressWarnings("unchecked")
39+
@Nullable
40+
public AttributeKey<List<String>> getStringArrayKey() {
41+
if (key.getType() != AttributeType.STRING_ARRAY) {
42+
return null;
43+
}
44+
return (AttributeKey<List<String>>) key;
45+
}
46+
47+
@SuppressWarnings("unchecked")
48+
public String getStringVal(){
49+
if (key.getType() != AttributeType.STRING){
50+
return null;
51+
}
52+
return (String) value;
53+
}
54+
55+
@SuppressWarnings("unchecked")
56+
@Nullable
57+
public List<String> getStringArrayVal(){
58+
if (key.getType() != AttributeType.STRING_ARRAY){
59+
return null;
60+
}
61+
return (List<String>)value;
62+
}
63+
}

0 commit comments

Comments
 (0)