Skip to content

Commit 7606f3f

Browse files
Improve detail of E2E test assertions (#4543)
* Bump OTel SDK to 1.51.0, instrumentation to 2.17.0 and semconv to 1.34.0 * Restore span names for GraphQL on the new version of OpenTelemetry (by changing OpenTelemetry defaults) (#4537) * do not override span name if customized * Format code * log in case system property cannot be set * merge * changelog --------- Co-authored-by: Sentry Github Bot <bot+github-bot@sentry.io> * more assertions for e2e tests * Use non alpha version for semconv * fix changelog * Format code * api file and format --------- Co-authored-by: Sentry Github Bot <bot+github-bot@sentry.io>
1 parent 328d1a1 commit 7606f3f

File tree

36 files changed

+532
-67
lines changed

36 files changed

+532
-67
lines changed

sentry-samples/sentry-samples-spring-boot-jakarta-opentelemetry-noagent/src/test/kotlin/io/sentry/systemtest/GraphqlGreetingSystemTest.kt

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,11 @@ class GraphqlGreetingSystemTest {
1919

2020
testHelper.ensureNoErrors(response)
2121
testHelper.ensureTransactionReceived { transaction, envelopeHeader ->
22-
testHelper.doesTransactionContainSpanWithDescription(transaction, "Query.greeting")
22+
testHelper.doesTransactionContainSpanWithOpAndDescription(
23+
transaction,
24+
"graphql",
25+
"Query.greeting",
26+
)
2327
}
2428
}
2529

@@ -32,7 +36,11 @@ class GraphqlGreetingSystemTest {
3236
error.message?.message?.startsWith("Unresolved RuntimeException for executionId ") ?: false
3337
}
3438
testHelper.ensureTransactionReceived { transaction, envelopeHeader ->
35-
testHelper.doesTransactionContainSpanWithDescription(transaction, "Query.greeting")
39+
testHelper.doesTransactionContainSpanWithOpAndDescription(
40+
transaction,
41+
"graphql",
42+
"Query.greeting",
43+
)
3644
}
3745
}
3846
}

sentry-samples/sentry-samples-spring-boot-jakarta-opentelemetry-noagent/src/test/kotlin/io/sentry/systemtest/GraphqlProjectSystemTest.kt

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,11 @@ class GraphqlProjectSystemTest {
2323
testHelper.ensureNoErrors(response)
2424
assertEquals("proj-slug", response?.data?.project?.slug)
2525
testHelper.ensureTransactionReceived { transaction, envelopeHeader ->
26-
testHelper.doesTransactionContainSpanWithDescription(transaction, "Query.project")
26+
testHelper.doesTransactionContainSpanWithOpAndDescription(
27+
transaction,
28+
"graphql",
29+
"Query.project",
30+
)
2731
}
2832
}
2933

@@ -34,7 +38,11 @@ class GraphqlProjectSystemTest {
3438
testHelper.ensureNoErrors(response)
3539
assertNotNull(response?.data?.addProject)
3640
testHelper.ensureTransactionReceived { transaction, envelopeHeader ->
37-
testHelper.doesTransactionContainSpanWithDescription(transaction, "Mutation.addProject")
41+
testHelper.doesTransactionContainSpanWithOpAndDescription(
42+
transaction,
43+
"graphql",
44+
"Mutation.addProject",
45+
)
3846
}
3947
}
4048

@@ -48,7 +56,11 @@ class GraphqlProjectSystemTest {
4856
error.message?.message?.startsWith("Unresolved RuntimeException for executionId ") ?: false
4957
}
5058
testHelper.ensureTransactionReceived { transaction, envelopeHeader ->
51-
testHelper.doesTransactionContainSpanWithDescription(transaction, "Mutation.addProject")
59+
testHelper.doesTransactionContainSpanWithOpAndDescription(
60+
transaction,
61+
"graphql",
62+
"Mutation.addProject",
63+
)
5264
}
5365
}
5466
}

sentry-samples/sentry-samples-spring-boot-jakarta-opentelemetry-noagent/src/test/kotlin/io/sentry/systemtest/GraphqlTaskSystemTest.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,11 @@ class GraphqlTaskSystemTest {
3030
assertEquals("C3", firstTask.creator?.id)
3131

3232
testHelper.ensureTransactionReceived { transaction, envelopeHeader ->
33-
testHelper.doesTransactionContainSpanWithDescription(transaction, "Query.tasks")
33+
testHelper.doesTransactionContainSpanWithOpAndDescription(
34+
transaction,
35+
"graphql",
36+
"Query.tasks",
37+
)
3438
}
3539
}
3640
}

sentry-samples/sentry-samples-spring-boot-jakarta-opentelemetry-noagent/src/test/kotlin/io/sentry/systemtest/PersonSystemTest.kt

Lines changed: 64 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,70 @@ class PersonSystemTest {
4646

4747
testHelper.ensureTransactionReceived { transaction, envelopeHeader ->
4848
testHelper.doesTransactionContainSpanWithOp(transaction, "spanCreatedThroughOtelApi") &&
49-
testHelper.doesTransactionContainSpanWithOp(transaction, "spanCreatedThroughSentryApi")
49+
testHelper.doesTransactionContainSpanWithOp(transaction, "spanCreatedThroughSentryApi") &&
50+
testHelper.doesTransactionContainSpanWithOpAndDescription(
51+
transaction,
52+
"db",
53+
"insert into person (firstName, lastName) values (?, ?)",
54+
)
55+
}
56+
}
57+
58+
@Test
59+
fun `create person creates transaction if no sampled flag in sentry-trace header`() {
60+
val restClient = testHelper.restClient
61+
val person = Person("firstA", "lastB")
62+
val returnedPerson =
63+
restClient.createPerson(
64+
person,
65+
mapOf(
66+
"sentry-trace" to "f9118105af4a2d42b4124532cd1065ff-424cffc8f94feeee",
67+
"baggage" to
68+
"sentry-public_key=502f25099c204a2fbf4cb16edc5975d1,sentry-sample_rate=1,sentry-trace_id=f9118105af4a2d42b4124532cd1065ff,sentry-transaction=HTTP%20GET",
69+
),
70+
)
71+
assertEquals(200, restClient.lastKnownStatusCode)
72+
73+
assertEquals(person.firstName, returnedPerson!!.firstName)
74+
assertEquals(person.lastName, returnedPerson!!.lastName)
75+
76+
testHelper.ensureTransactionReceived { transaction, envelopeHeader ->
77+
testHelper.doesTransactionContainSpanWithOp(transaction, "spanCreatedThroughOtelApi") &&
78+
testHelper.doesTransactionContainSpanWithOp(transaction, "spanCreatedThroughSentryApi") &&
79+
testHelper.doesTransactionContainSpanWithOpAndDescription(
80+
transaction,
81+
"db",
82+
"insert into person (firstName, lastName) values (?, ?)",
83+
)
84+
}
85+
}
86+
87+
@Test
88+
fun `create person creates transaction if sampled true in sentry-trace header`() {
89+
val restClient = testHelper.restClient
90+
val person = Person("firstA", "lastB")
91+
val returnedPerson =
92+
restClient.createPerson(
93+
person,
94+
mapOf(
95+
"sentry-trace" to "f9118105af4a2d42b4124532cd1065ff-424cffc8f94feeee-1",
96+
"baggage" to
97+
"sentry-public_key=502f25099c204a2fbf4cb16edc5975d1,sentry-sample_rate=1,sentry-trace_id=f9118105af4a2d42b4124532cd1065ff,sentry-transaction=HTTP%20GET",
98+
),
99+
)
100+
assertEquals(200, restClient.lastKnownStatusCode)
101+
102+
assertEquals(person.firstName, returnedPerson!!.firstName)
103+
assertEquals(person.lastName, returnedPerson!!.lastName)
104+
105+
testHelper.ensureTransactionReceived { transaction, envelopeHeader ->
106+
testHelper.doesTransactionContainSpanWithOp(transaction, "spanCreatedThroughOtelApi") &&
107+
testHelper.doesTransactionContainSpanWithOp(transaction, "spanCreatedThroughSentryApi") &&
108+
testHelper.doesTransactionContainSpanWithOpAndDescription(
109+
transaction,
110+
"db",
111+
"insert into person (firstName, lastName) values (?, ?)",
112+
)
50113
}
51114
}
52115
}

sentry-samples/sentry-samples-spring-boot-jakarta-opentelemetry-noagent/src/test/kotlin/io/sentry/systemtest/TodoSystemTest.kt

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,11 @@ class TodoSystemTest {
2323
testHelper.ensureTransactionReceived { transaction, envelopeHeader ->
2424
testHelper.doesTransactionContainSpanWithOp(transaction, "todoSpanOtelApi") &&
2525
testHelper.doesTransactionContainSpanWithOp(transaction, "todoSpanSentryApi") &&
26-
testHelper.doesTransactionContainSpanWithOp(transaction, "http.client")
26+
testHelper.doesTransactionContainSpanWithOpAndDescription(
27+
transaction,
28+
"http.client",
29+
"GET https://jsonplaceholder.typicode.com/todos/1",
30+
)
2731
}
2832
}
2933

@@ -34,7 +38,11 @@ class TodoSystemTest {
3438
assertEquals(200, restClient.lastKnownStatusCode)
3539

3640
testHelper.ensureTransactionReceived { transaction, envelopeHeader ->
37-
testHelper.doesTransactionContainSpanWithOp(transaction, "http.client")
41+
testHelper.doesTransactionContainSpanWithOpAndDescription(
42+
transaction,
43+
"http.client",
44+
"GET https://jsonplaceholder.typicode.com/todos/1",
45+
)
3846
}
3947
}
4048

@@ -47,7 +55,11 @@ class TodoSystemTest {
4755
testHelper.ensureTransactionReceived { transaction, envelopeHeader ->
4856
testHelper.doesTransactionContainSpanWithOp(transaction, "todoRestClientSpanOtelApi") &&
4957
testHelper.doesTransactionContainSpanWithOp(transaction, "todoRestClientSpanSentryApi") &&
50-
testHelper.doesTransactionContainSpanWithOp(transaction, "http.client")
58+
testHelper.doesTransactionContainSpanWithOpAndDescription(
59+
transaction,
60+
"http.client",
61+
"GET https://jsonplaceholder.typicode.com/todos/1",
62+
)
5163
}
5264
}
5365
}

sentry-samples/sentry-samples-spring-boot-jakarta-opentelemetry/src/test/kotlin/io/sentry/systemtest/GraphqlGreetingSystemTest.kt

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,11 @@ class GraphqlGreetingSystemTest {
1919

2020
testHelper.ensureNoErrors(response)
2121
testHelper.ensureTransactionReceived { transaction, envelopeHeader ->
22-
testHelper.doesTransactionContainSpanWithOp(transaction, "query GreetingQuery")
22+
testHelper.doesTransactionContainSpanWithOpAndDescription(
23+
transaction,
24+
"query GreetingQuery",
25+
"query GreetingQuery",
26+
)
2327
}
2428
}
2529

@@ -32,7 +36,11 @@ class GraphqlGreetingSystemTest {
3236
error.message?.message?.startsWith("Unresolved RuntimeException for executionId ") ?: false
3337
}
3438
testHelper.ensureTransactionReceived { transaction, envelopeHeader ->
35-
testHelper.doesTransactionContainSpanWithOp(transaction, "query GreetingQuery")
39+
testHelper.doesTransactionContainSpanWithOpAndDescription(
40+
transaction,
41+
"query GreetingQuery",
42+
"query GreetingQuery",
43+
)
3644
}
3745
}
3846
}

sentry-samples/sentry-samples-spring-boot-jakarta-opentelemetry/src/test/kotlin/io/sentry/systemtest/GraphqlProjectSystemTest.kt

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,11 @@ class GraphqlProjectSystemTest {
2323
testHelper.ensureNoErrors(response)
2424
assertEquals("proj-slug", response?.data?.project?.slug)
2525
testHelper.ensureTransactionReceived { transaction, envelopeHeader ->
26-
testHelper.doesTransactionContainSpanWithOp(transaction, "query ProjectQuery")
26+
testHelper.doesTransactionContainSpanWithOpAndDescription(
27+
transaction,
28+
"query ProjectQuery",
29+
"query ProjectQuery",
30+
)
2731
}
2832
}
2933

@@ -34,7 +38,11 @@ class GraphqlProjectSystemTest {
3438
testHelper.ensureNoErrors(response)
3539
assertNotNull(response?.data?.addProject)
3640
testHelper.ensureTransactionReceived { transaction, envelopeHeader ->
37-
testHelper.doesTransactionContainSpanWithOp(transaction, "mutation AddProjectMutation")
41+
testHelper.doesTransactionContainSpanWithOpAndDescription(
42+
transaction,
43+
"mutation AddProjectMutation",
44+
"mutation AddProjectMutation",
45+
)
3846
}
3947
}
4048

@@ -48,7 +56,11 @@ class GraphqlProjectSystemTest {
4856
error.message?.message?.startsWith("Unresolved RuntimeException for executionId ") ?: false
4957
}
5058
testHelper.ensureTransactionReceived { transaction, envelopeHeader ->
51-
testHelper.doesTransactionContainSpanWithOp(transaction, "mutation AddProjectMutation")
59+
testHelper.doesTransactionContainSpanWithOpAndDescription(
60+
transaction,
61+
"mutation AddProjectMutation",
62+
"mutation AddProjectMutation",
63+
)
5264
}
5365
}
5466
}

sentry-samples/sentry-samples-spring-boot-jakarta-opentelemetry/src/test/kotlin/io/sentry/systemtest/GraphqlTaskSystemTest.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,11 @@ class GraphqlTaskSystemTest {
3030
assertEquals("C3", firstTask.creator?.id)
3131

3232
testHelper.ensureTransactionReceived { transaction, envelopeHeader ->
33-
testHelper.doesTransactionContainSpanWithOp(transaction, "query TasksAndAssigneesQuery")
33+
testHelper.doesTransactionContainSpanWithOpAndDescription(
34+
transaction,
35+
"query TasksAndAssigneesQuery",
36+
"query TasksAndAssigneesQuery",
37+
)
3438
}
3539
}
3640
}

sentry-samples/sentry-samples-spring-boot-jakarta-opentelemetry/src/test/kotlin/io/sentry/systemtest/PersonSystemTest.kt

Lines changed: 64 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,70 @@ class PersonSystemTest {
4646

4747
testHelper.ensureTransactionReceived { transaction, envelopeHeader ->
4848
testHelper.doesTransactionContainSpanWithOp(transaction, "spanCreatedThroughOtelApi") &&
49-
testHelper.doesTransactionContainSpanWithOp(transaction, "spanCreatedThroughSentryApi")
49+
testHelper.doesTransactionContainSpanWithOp(transaction, "spanCreatedThroughSentryApi") &&
50+
testHelper.doesTransactionContainSpanWithOpAndDescription(
51+
transaction,
52+
"db",
53+
"insert into person (firstName, lastName) values (?, ?)",
54+
)
55+
}
56+
}
57+
58+
@Test
59+
fun `create person creates transaction if no sampled flag in sentry-trace header`() {
60+
val restClient = testHelper.restClient
61+
val person = Person("firstA", "lastB")
62+
val returnedPerson =
63+
restClient.createPerson(
64+
person,
65+
mapOf(
66+
"sentry-trace" to "f9118105af4a2d42b4124532cd1065ff-424cffc8f94feeee",
67+
"baggage" to
68+
"sentry-public_key=502f25099c204a2fbf4cb16edc5975d1,sentry-sample_rate=1,sentry-trace_id=f9118105af4a2d42b4124532cd1065ff,sentry-transaction=HTTP%20GET",
69+
),
70+
)
71+
assertEquals(200, restClient.lastKnownStatusCode)
72+
73+
assertEquals(person.firstName, returnedPerson!!.firstName)
74+
assertEquals(person.lastName, returnedPerson!!.lastName)
75+
76+
testHelper.ensureTransactionReceived { transaction, envelopeHeader ->
77+
testHelper.doesTransactionContainSpanWithOp(transaction, "spanCreatedThroughOtelApi") &&
78+
testHelper.doesTransactionContainSpanWithOp(transaction, "spanCreatedThroughSentryApi") &&
79+
testHelper.doesTransactionContainSpanWithOpAndDescription(
80+
transaction,
81+
"db",
82+
"insert into person (firstName, lastName) values (?, ?)",
83+
)
84+
}
85+
}
86+
87+
@Test
88+
fun `create person creates transaction if sampled true in sentry-trace header`() {
89+
val restClient = testHelper.restClient
90+
val person = Person("firstA", "lastB")
91+
val returnedPerson =
92+
restClient.createPerson(
93+
person,
94+
mapOf(
95+
"sentry-trace" to "f9118105af4a2d42b4124532cd1065ff-424cffc8f94feeee-1",
96+
"baggage" to
97+
"sentry-public_key=502f25099c204a2fbf4cb16edc5975d1,sentry-sample_rate=1,sentry-trace_id=f9118105af4a2d42b4124532cd1065ff,sentry-transaction=HTTP%20GET",
98+
),
99+
)
100+
assertEquals(200, restClient.lastKnownStatusCode)
101+
102+
assertEquals(person.firstName, returnedPerson!!.firstName)
103+
assertEquals(person.lastName, returnedPerson!!.lastName)
104+
105+
testHelper.ensureTransactionReceived { transaction, envelopeHeader ->
106+
testHelper.doesTransactionContainSpanWithOp(transaction, "spanCreatedThroughOtelApi") &&
107+
testHelper.doesTransactionContainSpanWithOp(transaction, "spanCreatedThroughSentryApi") &&
108+
testHelper.doesTransactionContainSpanWithOpAndDescription(
109+
transaction,
110+
"db",
111+
"insert into person (firstName, lastName) values (?, ?)",
112+
)
50113
}
51114
}
52115
}

sentry-samples/sentry-samples-spring-boot-jakarta-opentelemetry/src/test/kotlin/io/sentry/systemtest/TodoSystemTest.kt

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,11 @@ class TodoSystemTest {
2323
testHelper.ensureTransactionReceived { transaction, envelopeHeader ->
2424
testHelper.doesTransactionContainSpanWithOp(transaction, "todoSpanOtelApi") &&
2525
testHelper.doesTransactionContainSpanWithOp(transaction, "todoSpanSentryApi") &&
26-
testHelper.doesTransactionContainSpanWithOp(transaction, "http.client")
26+
testHelper.doesTransactionContainSpanWithOpAndDescription(
27+
transaction,
28+
"http.client",
29+
"GET https://jsonplaceholder.typicode.com/todos/1",
30+
)
2731
}
2832
}
2933

@@ -34,7 +38,11 @@ class TodoSystemTest {
3438
assertEquals(200, restClient.lastKnownStatusCode)
3539

3640
testHelper.ensureTransactionReceived { transaction, envelopeHeader ->
37-
testHelper.doesTransactionContainSpanWithOp(transaction, "http.client")
41+
testHelper.doesTransactionContainSpanWithOpAndDescription(
42+
transaction,
43+
"http.client",
44+
"GET https://jsonplaceholder.typicode.com/todos/1",
45+
)
3846
}
3947
}
4048

0 commit comments

Comments
 (0)