Skip to content

Commit 258aea9

Browse files
authored
Merge branch 'aws-observability:main' into main
2 parents 53675d2 + 5cc5861 commit 258aea9

File tree

6 files changed

+105
-42
lines changed

6 files changed

+105
-42
lines changed

CONTRIBUTING.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@ Contributions via pull requests are much appreciated. Before sending us a pull r
2323
1. You are working against the latest source on the *main* branch.
2424
2. You check existing open, and recently merged, pull requests to make sure someone else hasn't addressed the problem already.
2525
3. You open an issue to discuss any significant work - we would hate for your time to be wasted.
26+
4. 4. You are not mixing substantial refactoring changes in with functional changes.
27+
1. If refactoring is desirable, publish a separate refactoring PR first, followed by a functional change PR. This will ensure safe and efficient reviews.
28+
2. PRs that do not meet these expectations will be rejected.
2629

2730
To send us a pull request, please:
2831

@@ -32,6 +35,7 @@ To send us a pull request, please:
3235
4. Commit to your fork using clear commit messages.
3336
5. Send us a pull request, answering any default questions in the pull request interface.
3437
6. Pay attention to any automated CI failures reported in the pull request, and stay involved in the conversation.
38+
7. Please do not squash commits between revisions, this makes review challenging, as the diff between revisions is harder to find and review.
3539

3640
GitHub provides additional document on [forking a repository](https://help.github.com/articles/fork-a-repo/) and
3741
[creating a pull request](https://help.github.com/articles/creating-a-pull-request/).

appsignals-tests/contract-tests/src/test/java/software/amazon/opentelemetry/appsignals/test/jdbc/JdbcContractTestBase.java

Lines changed: 53 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,11 @@
3030

3131
public class JdbcContractTestBase extends ContractTestBase {
3232
protected static final String DB_NAME = "testdb";
33-
protected static final String DB_USER = "sa";
33+
protected static final String CREATE_DB_NAME = "testdb2";
34+
protected static final String DB_USER = "root";
3435
protected static final String DB_PASSWORD = "password";
35-
protected static final String DB_OPERATION = "SELECT";
36+
protected static final String DB_SELECT_OPERATION = "SELECT";
37+
protected static final String DB_CREATE_DATABASE_OPERATION = "CREATE DATABASE";
3638
protected static final String DB_RESOURCE_TYPE = "DB::Connection";
3739

3840
@Override
@@ -136,20 +138,29 @@ protected void assertSemanticConventionsSpanAttributes(
136138
.satisfiesOnlyOnce(
137139
rss -> {
138140
assertThat(rss.getSpan().getKind()).isEqualTo(SPAN_KIND_CLIENT);
139-
assertThat(rss.getSpan().getName())
140-
.isEqualTo(String.format("%s %s.%s", dbOperation, dbName, dbSqlTable));
141141
assertThat(rss.getSpan().getStatus().getCode().toString()).isEqualTo(otelStatusCode);
142+
assertSemanticConventionForOperation(rss, dbOperation, dbName, dbSqlTable);
142143
var attributesList = rss.getSpan().getAttributesList();
143144
assertSemanticConventionsAttributes(
144-
attributesList, dbSqlTable, dbSystem, dbOperation, dbUser, dbName, jdbcUrl);
145+
attributesList, dbSystem, dbUser, dbName, jdbcUrl);
146+
assertSemanticConventionsAttributesForOperation(
147+
attributesList, dbOperation, dbSqlTable);
145148
});
146149
}
147150

151+
private void assertSemanticConventionForOperation(
152+
ResourceScopeSpan rss, String dbOperation, String dbName, String dbSqlTable) {
153+
if (dbOperation.equals(DB_CREATE_DATABASE_OPERATION)) {
154+
assertThat(rss.getSpan().getName()).isEqualTo(String.format("%s", dbName));
155+
} else if (dbOperation.equals(DB_SELECT_OPERATION)) {
156+
assertThat(rss.getSpan().getName())
157+
.isEqualTo(String.format("%s %s.%s", dbOperation, dbName, dbSqlTable));
158+
}
159+
}
160+
148161
protected void assertSemanticConventionsAttributes(
149162
List<KeyValue> attributesList,
150-
String dbSqlTable,
151163
String dbSystem,
152-
String dbOperation,
153164
String dbUser,
154165
String dbName,
155166
String jdbcUrl) {
@@ -173,35 +184,51 @@ protected void assertSemanticConventionsAttributes(
173184
assertThat(attribute.getKey()).isEqualTo(SemanticConventionsConstants.DB_NAME);
174185
assertThat(attribute.getValue().getStringValue()).isEqualTo(dbName);
175186
})
176-
.satisfiesOnlyOnce(
177-
attribute -> {
178-
assertThat(attribute.getKey()).isEqualTo(SemanticConventionsConstants.DB_SQL_TABLE);
179-
assertThat(attribute.getValue().getStringValue()).isEqualTo(dbSqlTable);
180-
})
181-
.satisfiesOnlyOnce(
182-
attribute -> {
183-
assertThat(attribute.getKey()).isEqualTo(SemanticConventionsConstants.DB_STATEMENT);
184-
assertThat(attribute.getValue().getStringValue())
185-
.isEqualTo(
186-
String.format("%s count(*) from %s", dbOperation.toLowerCase(), dbSqlTable));
187-
})
188187
.satisfiesOnlyOnce(
189188
attribute -> {
190189
assertThat(attribute.getKey()).isEqualTo(SemanticConventionsConstants.DB_USER);
191190
assertThat(attribute.getValue().getStringValue()).isEqualTo(dbUser);
192191
})
193-
.satisfiesOnlyOnce(
194-
attribute -> {
195-
assertThat(attribute.getKey()).isEqualTo(SemanticConventionsConstants.DB_OPERATION);
196-
assertThat(attribute.getValue().getStringValue()).isEqualTo(dbOperation);
197-
})
198192
.satisfiesOnlyOnce(
199193
attribute -> {
200194
assertThat(attribute.getKey()).isEqualTo(SemanticConventionsConstants.DB_SYSTEM);
201195
assertThat(attribute.getValue().getStringValue()).isEqualTo(dbSystem);
202196
});
203197
}
204198

199+
private void assertSemanticConventionsAttributesForOperation(
200+
List<KeyValue> attributesList, String dbOperation, String dbSqlTable) {
201+
if (dbOperation.equals(DB_CREATE_DATABASE_OPERATION)) {
202+
assertThat(attributesList)
203+
.satisfiesOnlyOnce(
204+
attribute -> {
205+
assertThat(attribute.getKey()).isEqualTo(SemanticConventionsConstants.DB_STATEMENT);
206+
assertThat(attribute.getValue().getStringValue())
207+
.isEqualTo(String.format("%s %s", dbOperation.toLowerCase(), CREATE_DB_NAME));
208+
});
209+
} else if (dbOperation.equals(DB_SELECT_OPERATION)) {
210+
assertThat(attributesList)
211+
.satisfiesOnlyOnce(
212+
attribute -> {
213+
assertThat(attribute.getKey()).isEqualTo(SemanticConventionsConstants.DB_SQL_TABLE);
214+
assertThat(attribute.getValue().getStringValue()).isEqualTo(dbSqlTable);
215+
})
216+
.satisfiesOnlyOnce(
217+
attribute -> {
218+
assertThat(attribute.getKey()).isEqualTo(SemanticConventionsConstants.DB_STATEMENT);
219+
assertThat(attribute.getValue().getStringValue())
220+
.isEqualTo(
221+
String.format(
222+
"%s count(*) from %s", dbOperation.toLowerCase(), dbSqlTable));
223+
})
224+
.satisfiesOnlyOnce(
225+
attribute -> {
226+
assertThat(attribute.getKey()).isEqualTo(SemanticConventionsConstants.DB_OPERATION);
227+
assertThat(attribute.getValue().getStringValue()).isEqualTo(dbOperation);
228+
});
229+
}
230+
}
231+
205232
protected void assertMetricAttributes(
206233
List<ResourceScopeMetric> resourceScopeMetrics,
207234
String method,
@@ -298,7 +325,7 @@ protected void assertSuccess(
298325
String jdbcUrl,
299326
String type,
300327
String identifier) {
301-
var path = "success";
328+
var path = "success/" + dbOperation;
302329
var method = "GET";
303330
var otelStatusCode = "STATUS_CODE_UNSET";
304331
var dbSqlTable = "employee";
@@ -357,7 +384,7 @@ protected void assertFault(
357384
String jdbcUrl,
358385
String type,
359386
String identifier) {
360-
var path = "fault";
387+
var path = "fault/" + dbOperation;
361388
var method = "GET";
362389
var otelStatusCode = "STATUS_CODE_ERROR";
363390
var dbSqlTable = "userrr";

appsignals-tests/contract-tests/src/test/java/software/amazon/opentelemetry/appsignals/test/jdbc/JdbcH2Test.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,14 @@ public class JdbcH2Test extends JdbcContractTestBase {
3131
private static final String DB_PLATFORM = "org.hibernate.dialect.H2Dialect";
3232

3333
@Test
34-
public void testSuccess() {
35-
assertSuccess(DB_SYSTEM, DB_OPERATION, DB_USER, DB_NAME, DB_CONNECTION_STRING, null, null);
34+
public void testSuccessSelect() {
35+
assertSuccess(
36+
DB_SYSTEM, DB_SELECT_OPERATION, DB_USER, DB_NAME, DB_CONNECTION_STRING, null, null);
3637
}
3738

3839
@Test
39-
public void testFault() {
40-
assertFault(DB_SYSTEM, DB_OPERATION, DB_USER, DB_NAME, DB_CONNECTION_STRING, null, null);
40+
public void testFaultSelect() {
41+
assertFault(DB_SYSTEM, DB_SELECT_OPERATION, DB_USER, DB_NAME, DB_CONNECTION_STRING, null, null);
4142
}
4243

4344
@Override

appsignals-tests/contract-tests/src/test/java/software/amazon/opentelemetry/appsignals/test/jdbc/JdbcMySQLTest.java

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,10 @@ public void afterEach() {
4949
}
5050

5151
@Test
52-
public void testSuccess() {
52+
public void testSuccessCreateDatabase() {
5353
assertSuccess(
5454
DB_SYSTEM,
55-
DB_OPERATION,
55+
DB_CREATE_DATABASE_OPERATION,
5656
DB_USER,
5757
DB_NAME,
5858
DB_CONNECTION_STRING,
@@ -61,10 +61,22 @@ public void testSuccess() {
6161
}
6262

6363
@Test
64-
public void testFault() {
64+
public void testSuccessSelect() {
65+
assertSuccess(
66+
DB_SYSTEM,
67+
DB_SELECT_OPERATION,
68+
DB_USER,
69+
DB_NAME,
70+
DB_CONNECTION_STRING,
71+
DB_RESOURCE_TYPE,
72+
MYSQL_IDENTIFIER);
73+
}
74+
75+
@Test
76+
public void testFaultSelect() {
6577
assertFault(
6678
DB_SYSTEM,
67-
DB_OPERATION,
79+
DB_SELECT_OPERATION,
6880
DB_USER,
6981
DB_NAME,
7082
DB_CONNECTION_STRING,

appsignals-tests/contract-tests/src/test/java/software/amazon/opentelemetry/appsignals/test/jdbc/JdbcPostgresTest.java

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,10 @@ public void afterEach() {
4949
}
5050

5151
@Test
52-
public void testSuccess() {
52+
public void testSuccessCreateDatabase() {
5353
assertSuccess(
5454
DB_SYSTEM,
55-
DB_OPERATION,
55+
DB_CREATE_DATABASE_OPERATION,
5656
DB_USER,
5757
DB_NAME,
5858
DB_CONNECTION_STRING,
@@ -61,10 +61,22 @@ public void testSuccess() {
6161
}
6262

6363
@Test
64-
public void testFault() {
64+
public void testSuccessSelect() {
65+
assertSuccess(
66+
DB_SYSTEM,
67+
DB_SELECT_OPERATION,
68+
DB_USER,
69+
DB_NAME,
70+
DB_CONNECTION_STRING,
71+
DB_RESOURCE_TYPE,
72+
POSTGRES_IDENTIFIER);
73+
}
74+
75+
@Test
76+
public void testFaultSelect() {
6577
assertFault(
6678
DB_SYSTEM,
67-
DB_OPERATION,
79+
DB_SELECT_OPERATION,
6880
DB_USER,
6981
DB_NAME,
7082
DB_CONNECTION_STRING,

appsignals-tests/images/jdbc/src/main/java/software/amazon/opentelemetry/AppController.java

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,18 +46,25 @@ public void prepareDB() {
4646
logger.info("Application Ready");
4747
}
4848

49-
@GetMapping("/success")
49+
@GetMapping("/success/CREATE DATABASE")
5050
@ResponseBody
51-
public ResponseEntity<String> success() {
51+
public ResponseEntity<String> successCreateDatabase() {
52+
jdbcTemplate.execute("create database testdb2");
53+
return ResponseEntity.ok().body("success");
54+
}
55+
56+
@GetMapping("/success/SELECT")
57+
@ResponseBody
58+
public ResponseEntity<String> successSelect() {
5259
int count = jdbcTemplate.queryForObject("select count(*) from employee", Integer.class);
5360
return (count == 1)
5461
? ResponseEntity.ok().body("success")
5562
: ResponseEntity.badRequest().body("failed");
5663
}
5764

58-
@GetMapping("/fault")
65+
@GetMapping("/fault/SELECT")
5966
@ResponseBody
60-
public ResponseEntity<String> failure() {
67+
public ResponseEntity<String> failureSelect() {
6168
int count = jdbcTemplate.queryForObject("select count(*) from userrr", Integer.class);
6269
return ResponseEntity.ok().body("success");
6370
}

0 commit comments

Comments
 (0)