Skip to content

Commit 9ed6325

Browse files
committed
add profiling to more samples, add initial system tests
1 parent 6aaaed4 commit 9ed6325

File tree

34 files changed

+213
-9
lines changed

34 files changed

+213
-9
lines changed

sentry-samples/sentry-samples-spring-7/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ dependencies {
3939
implementation(kotlin(Config.kotlinStdLib, KotlinCompilerVersion.VERSION))
4040
implementation(projects.sentrySpring7)
4141
implementation(projects.sentryLogback)
42+
implementation(projects.sentryAsyncProfiler)
4243
implementation(libs.jackson.databind)
4344
implementation(libs.logback.classic)
4445
implementation(libs.servlet.jakarta.api)
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,5 @@
11
debug=true
22
in-app-includes="io.sentry.samples"
3+
profile-session-sample-rate=1.0
4+
profiling-traces-dir-path=tmp/sentry/profiling-traces
5+
profile-lifecycle=TRACE

sentry-samples/sentry-samples-spring-7/src/test/kotlin/io/sentry/systemtest/PersonSystemTest.kt

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package io.sentry.systemtest
22

3+
import io.sentry.protocol.SentryId
34
import io.sentry.systemtest.util.TestHelper
45
import kotlin.test.Test
56
import kotlin.test.assertEquals
@@ -48,4 +49,24 @@ class PersonSystemTest {
4849
assertEquals(person.firstName, returnedPerson!!.firstName)
4950
assertEquals(person.lastName, returnedPerson!!.lastName)
5051
}
52+
53+
@Test
54+
fun `create person starts a profile linked to the transaction`() {
55+
var profilerId: SentryId? = null
56+
val restClient = testHelper.restClient
57+
val person = Person("firstA", "lastB")
58+
val returnedPerson = restClient.createPerson(person)
59+
assertEquals(200, restClient.lastKnownStatusCode)
60+
61+
assertEquals(person.firstName, returnedPerson!!.firstName)
62+
assertEquals(person.lastName, returnedPerson!!.lastName)
63+
64+
testHelper.ensureTransactionReceived { transaction, envelopeHeader ->
65+
profilerId = transaction.contexts.profile?.profilerId
66+
transaction.transaction == "POST /person/"
67+
}
68+
testHelper.ensureProfileChunkReceived { profileChunk, envelopeHeader ->
69+
profileChunk.profilerId == profilerId
70+
}
71+
}
5172
}

sentry-samples/sentry-samples-spring-boot-4-opentelemetry-noagent/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ dependencies {
5656
implementation(projects.sentryGraphql22)
5757
implementation(projects.sentryQuartz)
5858
implementation(projects.sentryOpentelemetry.sentryOpentelemetryAgentlessSpring)
59+
implementation(projects.sentryAsyncProfiler)
5960

6061
// database query tracing
6162
implementation(projects.sentryJdbc)

sentry-samples/sentry-samples-spring-boot-4-opentelemetry-noagent/src/main/resources/application.properties

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,10 @@ sentry.enable-backpressure-handling=true
1616
sentry.enable-spotlight=true
1717
sentry.enablePrettySerializationOutput=false
1818
sentry.logs.enabled=true
19-
in-app-includes="io.sentry.samples"
19+
sentry.in-app-includes="io.sentry.samples"
20+
sentry.profile-session-sample-rate=1.0
21+
sentry.profiling-traces-dir-path=tmp/sentry/profiling-traces
22+
sentry.profile-lifecycle=TRACE
2023

2124
# Uncomment and set to true to enable aot compatibility
2225
# This flag disables all AOP related features (i.e. @SentryTransaction, @SentrySpan)

sentry-samples/sentry-samples-spring-boot-4-opentelemetry/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ dependencies {
5656
implementation(projects.sentryLogback)
5757
implementation(projects.sentryGraphql22)
5858
implementation(projects.sentryQuartz)
59+
implementation(projects.sentryAsyncProfiler)
5960
implementation(libs.otel)
6061

6162
// database query tracing

sentry-samples/sentry-samples-spring-boot-4-opentelemetry/src/main/resources/application.properties

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,10 @@ sentry.enable-backpressure-handling=true
1616
sentry.enable-spotlight=true
1717
sentry.enablePrettySerializationOutput=false
1818
sentry.logs.enabled=true
19-
in-app-includes="io.sentry.samples"
19+
sentry.in-app-includes="io.sentry.samples"
20+
sentry.profile-session-sample-rate=1.0
21+
sentry.profiling-traces-dir-path=tmp/sentry/profiling-traces
22+
sentry.profile-lifecycle=TRACE
2023

2124
# Uncomment and set to true to enable aot compatibility
2225
# This flag disables all AOP related features (i.e. @SentryTransaction, @SentrySpan)

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

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package io.sentry.systemtest
22

33
import io.sentry.protocol.FeatureFlag
4+
import io.sentry.protocol.SentryId
45
import io.sentry.systemtest.util.TestHelper
56
import kotlin.test.Test
67
import kotlin.test.assertEquals
@@ -75,6 +76,26 @@ class PersonSystemTest {
7576
}
7677
}
7778

79+
@Test
80+
fun `create person starts a profile linked to the transaction`() {
81+
var profilerId: SentryId? = null
82+
val restClient = testHelper.restClient
83+
val person = Person("firstA", "lastB")
84+
val returnedPerson = restClient.createPerson(person)
85+
assertEquals(200, restClient.lastKnownStatusCode)
86+
87+
assertEquals(person.firstName, returnedPerson!!.firstName)
88+
assertEquals(person.lastName, returnedPerson!!.lastName)
89+
90+
testHelper.ensureTransactionReceived { transaction, envelopeHeader ->
91+
profilerId = transaction.contexts.profile?.profilerId
92+
transaction.transaction == "POST /person/"
93+
}
94+
testHelper.ensureProfileChunkReceived { profileChunk, envelopeHeader ->
95+
profileChunk.profilerId == profilerId
96+
}
97+
}
98+
7899
@Test
79100
fun `create person creates transaction if no sampled flag in sentry-trace header`() {
80101
val restClient = testHelper.restClient

sentry-samples/sentry-samples-spring-boot-4-webflux/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ dependencies {
2525
implementation(projects.sentryLogback)
2626
implementation(projects.sentryJdbc)
2727
implementation(projects.sentryGraphql22)
28+
implementation(projects.sentryAsyncProfiler)
2829
implementation(libs.context.propagation)
2930
implementation(libs.springboot4.starter.actuator)
3031
implementation(libs.springboot4.starter.graphql)

sentry-samples/sentry-samples-spring-boot-4-webflux/src/main/resources/application.properties

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,6 @@ sentry.traces-sample-rate=1.0
1212
sentry.enable-backpressure-handling=true
1313
sentry.logs.enabled=true
1414
sentry.enable-spotlight=true
15+
sentry.profile-session-sample-rate=1.0
16+
sentry.profiling-traces-dir-path=tmp/sentry/profiling-traces
17+
sentry.profile-lifecycle=TRACE

0 commit comments

Comments
 (0)