Skip to content

Commit 90ef31c

Browse files
authored
Merge 252061f into 3d5a001
2 parents 3d5a001 + 252061f commit 90ef31c

File tree

48 files changed

+441
-10
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+441
-10
lines changed

sentry-samples/sentry-samples-console-opentelemetry-noagent/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ tasks.withType<KotlinCompile>().configureEach {
3434

3535
dependencies {
3636
implementation(projects.sentryOpentelemetry.sentryOpentelemetryAgentless)
37+
implementation(projects.sentryAsyncProfiler)
3738

3839
testImplementation(kotlin(Config.kotlinStdLib))
3940
testImplementation(projects.sentry)

sentry-samples/sentry-samples-console-opentelemetry-noagent/src/test/kotlin/sentry/systemtest/ConsoleApplicationSystemTest.kt

Lines changed: 11 additions & 1 deletion
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 java.util.concurrent.TimeUnit
56
import org.junit.Assert.assertEquals
@@ -24,10 +25,12 @@ class ConsoleApplicationSystemTest {
2425
jarFile,
2526
mapOf(
2627
"SENTRY_DSN" to testHelper.dsn,
27-
// "SENTRY_AUTO_INIT" to "false",
28+
// "SENTRY_AUTO_INIT" to "true",
2829
"SENTRY_TRACES_SAMPLE_RATE" to "1.0",
2930
"SENTRY_ENABLE_PRETTY_SERIALIZATION_OUTPUT" to "false",
3031
"SENTRY_DEBUG" to "true",
32+
"SENTRY_PROFILE_SESSION_SAMPLE_RATE" to "1.0",
33+
"SENTRY_PROFILE_LIFECYCLE" to "TRACE",
3134
"OTEL_METRICS_EXPORTER" to "none",
3235
"OTEL_LOGS_EXPORTER" to "none",
3336
"OTEL_TRACES_EXPORTER" to "none",
@@ -42,6 +45,8 @@ class ConsoleApplicationSystemTest {
4245
}
4346

4447
private fun verifyExpectedEvents() {
48+
var profilerId: SentryId? = null
49+
4550
// Verify we received a "Fatal message!" event
4651
testHelper.ensureErrorReceived { event ->
4752
event.message?.formatted == "Fatal message!" && event.level?.name == "FATAL"
@@ -67,10 +72,15 @@ class ConsoleApplicationSystemTest {
6772

6873
// Verify we received transaction events
6974
testHelper.ensureTransactionReceived { transaction, _ ->
75+
profilerId = transaction.contexts.profile?.profilerId
7076
transaction.transaction == "transaction name" &&
7177
transaction.spans?.any { span -> span.op == "child" } == true
7278
}
7379

80+
testHelper.ensureProfileChunkReceived { profileChunk, envelopeHeader ->
81+
profileChunk.profilerId == profilerId
82+
}
83+
7484
// Verify we received the loop messages (should be 10 of them)
7585
var loopMessageCount = 0
7686
try {

sentry-samples/sentry-samples-console/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ tasks.withType<KotlinCompile>().configureEach {
3434

3535
dependencies {
3636
implementation(projects.sentry)
37+
implementation(projects.sentryAsyncProfiler)
3738

3839
testImplementation(kotlin(Config.kotlinStdLib))
3940
testImplementation(projects.sentry)

sentry-samples/sentry-samples-console/src/test/kotlin/io/sentry/systemtest/ConsoleApplicationSystemTest.kt

Lines changed: 9 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 java.util.concurrent.TimeUnit
56
import org.junit.Assert.assertEquals
@@ -27,6 +28,8 @@ class ConsoleApplicationSystemTest {
2728
"SENTRY_TRACES_SAMPLE_RATE" to "1.0",
2829
"SENTRY_ENABLE_PRETTY_SERIALIZATION_OUTPUT" to "false",
2930
"SENTRY_DEBUG" to "true",
31+
"SENTRY_PROFILE_SESSION_SAMPLE_RATE" to "1.0",
32+
"SENTRY_PROFILE_LIFECYCLE" to "TRACE",
3033
),
3134
)
3235

@@ -38,6 +41,7 @@ class ConsoleApplicationSystemTest {
3841
}
3942

4043
private fun verifyExpectedEvents() {
44+
var profilerId: SentryId? = null
4145
// Verify we received a "Fatal message!" event
4246
testHelper.ensureErrorReceived { event ->
4347
event.message?.formatted == "Fatal message!" && event.level?.name == "FATAL"
@@ -63,10 +67,15 @@ class ConsoleApplicationSystemTest {
6367

6468
// Verify we received transaction events
6569
testHelper.ensureTransactionReceived { transaction, _ ->
70+
profilerId = transaction.contexts.profile?.profilerId
6671
transaction.transaction == "transaction name" &&
6772
transaction.spans?.any { span -> span.op == "child" } == true
6873
}
6974

75+
testHelper.ensureProfileChunkReceived { profileChunk, envelopeHeader ->
76+
profileChunk.profilerId == profilerId
77+
}
78+
7079
// Verify we received the loop messages (should be 10 of them)
7180
var loopMessageCount = 0
7281
try {

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-noagent/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
@@ -80,6 +81,26 @@ class PersonSystemTest {
8081
}
8182
}
8283

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

0 commit comments

Comments
 (0)