Skip to content

Commit 48b2008

Browse files
committed
Add more tests
1 parent 9a94762 commit 48b2008

File tree

11 files changed

+247
-6
lines changed

11 files changed

+247
-6
lines changed

sentry-apollo-3/src/test/java/io/sentry/apollo3/SentryApollo3InterceptorTest.kt

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import io.sentry.SpanStatus
2323
import io.sentry.TraceContext
2424
import io.sentry.TracesSamplingDecision
2525
import io.sentry.TransactionContext
26+
import io.sentry.W3CTraceparentHeader
2627
import io.sentry.apollo3.SentryApollo3HttpInterceptor.BeforeSpanCallback
2728
import io.sentry.mockServerRequestTimeoutMillis
2829
import io.sentry.protocol.SdkVersion
@@ -351,6 +352,26 @@ class SentryApollo3InterceptorTest {
351352
verify(fixture.scopes).span
352353
}
353354

355+
@Test
356+
fun `adds W3C traceparent header when propagateTraceparent is enabled`() {
357+
fixture.options.isPropagateTraceparent = true
358+
executeQuery()
359+
val recorderRequest =
360+
fixture.server.takeRequest(mockServerRequestTimeoutMillis, TimeUnit.MILLISECONDS)!!
361+
assertNotNull(recorderRequest.headers[SentryTraceHeader.SENTRY_TRACE_HEADER])
362+
assertNotNull(recorderRequest.headers[W3CTraceparentHeader.TRACEPARENT_HEADER])
363+
}
364+
365+
@Test
366+
fun `does not add W3C traceparent header when propagateTraceparent is disabled`() {
367+
fixture.options.isPropagateTraceparent = false
368+
executeQuery()
369+
val recorderRequest =
370+
fixture.server.takeRequest(mockServerRequestTimeoutMillis, TimeUnit.MILLISECONDS)!!
371+
assertNotNull(recorderRequest.headers[SentryTraceHeader.SENTRY_TRACE_HEADER])
372+
assertNull(recorderRequest.headers[W3CTraceparentHeader.TRACEPARENT_HEADER])
373+
}
374+
354375
private fun assertTransactionDetails(
355376
it: SentryTransaction,
356377
httpStatusCode: Int? = 200,

sentry-apollo-4/src/test/java/io/sentry/apollo4/SentryApollo4HttpInterceptorTest.kt

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import io.sentry.SpanStatus
2626
import io.sentry.TraceContext
2727
import io.sentry.TracesSamplingDecision
2828
import io.sentry.TransactionContext
29+
import io.sentry.W3CTraceparentHeader
2930
import io.sentry.apollo4.SentryApollo4HttpInterceptor.BeforeSpanCallback
3031
import io.sentry.apollo4.generated.LaunchDetailsQuery
3132
import io.sentry.mockServerRequestTimeoutMillis
@@ -363,6 +364,26 @@ abstract class SentryApollo4HttpInterceptorTest(
363364
verify(fixture.scopes).span
364365
}
365366

367+
@Test
368+
fun `adds W3C traceparent header when propagateTraceparent is enabled`() {
369+
fixture.options.isPropagateTraceparent = true
370+
executeQuery()
371+
val recorderRequest =
372+
fixture.server.takeRequest(mockServerRequestTimeoutMillis, TimeUnit.MILLISECONDS)!!
373+
assertNotNull(recorderRequest.headers[SentryTraceHeader.SENTRY_TRACE_HEADER])
374+
assertNotNull(recorderRequest.headers[W3CTraceparentHeader.TRACEPARENT_HEADER])
375+
}
376+
377+
@Test
378+
fun `does not add W3C traceparent header when propagateTraceparent is disabled`() {
379+
fixture.options.isPropagateTraceparent = false
380+
executeQuery()
381+
val recorderRequest =
382+
fixture.server.takeRequest(mockServerRequestTimeoutMillis, TimeUnit.MILLISECONDS)!!
383+
assertNotNull(recorderRequest.headers[SentryTraceHeader.SENTRY_TRACE_HEADER])
384+
assertNull(recorderRequest.headers[W3CTraceparentHeader.TRACEPARENT_HEADER])
385+
}
386+
366387
private fun assertTransactionDetails(
367388
it: SentryTransaction,
368389
httpStatusCode: Int? = 200,

sentry-ktor-client/src/test/java/io/sentry/ktorClient/SentryKtorClientPluginTest.kt

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import io.sentry.SentryTracer
2424
import io.sentry.SpanDataConvention
2525
import io.sentry.SpanStatus
2626
import io.sentry.TransactionContext
27+
import io.sentry.W3CTraceparentHeader
2728
import io.sentry.exception.SentryHttpClientException
2829
import io.sentry.mockServerRequestTimeoutMillis
2930
import java.util.concurrent.TimeUnit
@@ -426,4 +427,29 @@ class SentryKtorClientPluginTest {
426427
assertTrue(baggageHeaderValues[0].contains("sentry-transaction=name"))
427428
assertTrue(baggageHeaderValues[0].contains("sentry-trace_id"))
428429
}
430+
431+
@Test
432+
fun `adds W3C traceparent header when propagateTraceparent is enabled`(): Unit = runBlocking {
433+
val sut =
434+
fixture.getSut(optionsConfiguration = { options -> options.isPropagateTraceparent = true })
435+
sut.get(fixture.server.url("/hello").toString())
436+
437+
val recordedRequest =
438+
fixture.server.takeRequest(mockServerRequestTimeoutMillis, TimeUnit.MILLISECONDS)!!
439+
assertNotNull(recordedRequest.headers[SentryTraceHeader.SENTRY_TRACE_HEADER])
440+
assertNotNull(recordedRequest.headers[W3CTraceparentHeader.TRACEPARENT_HEADER])
441+
}
442+
443+
@Test
444+
fun `does not add W3C traceparent header when propagateTraceparent is disabled`(): Unit =
445+
runBlocking {
446+
val sut =
447+
fixture.getSut(optionsConfiguration = { options -> options.isPropagateTraceparent = false })
448+
sut.get(fixture.server.url("/hello").toString())
449+
450+
val recordedRequest =
451+
fixture.server.takeRequest(mockServerRequestTimeoutMillis, TimeUnit.MILLISECONDS)!!
452+
assertNotNull(recordedRequest.headers[SentryTraceHeader.SENTRY_TRACE_HEADER])
453+
assertNull(recordedRequest.headers[W3CTraceparentHeader.TRACEPARENT_HEADER])
454+
}
429455
}

sentry-okhttp/src/test/java/io/sentry/okhttp/SentryOkHttpInterceptorTest.kt

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import io.sentry.SpanDataConvention
1919
import io.sentry.SpanStatus
2020
import io.sentry.TransactionContext
2121
import io.sentry.TypeCheckHint
22+
import io.sentry.W3CTraceparentHeader
2223
import io.sentry.exception.SentryHttpClientException
2324
import io.sentry.mockServerRequestTimeoutMillis
2425
import java.io.IOException
@@ -659,8 +660,8 @@ class SentryOkHttpInterceptorTest {
659660
client.newCall(request).execute()
660661

661662
val recordedRequest = fixture.server.takeRequest()
662-
assertNotNull(recordedRequest.getHeader("sentry-trace"))
663-
assertNotNull(recordedRequest.getHeader("traceparent"))
663+
assertNotNull(recordedRequest.getHeader(SentryTraceHeader.SENTRY_TRACE_HEADER))
664+
assertNotNull(recordedRequest.getHeader(W3CTraceparentHeader.TRACEPARENT_HEADER))
664665
}
665666

666667
@Test
@@ -676,7 +677,7 @@ class SentryOkHttpInterceptorTest {
676677
client.newCall(request).execute()
677678

678679
val recordedRequest = fixture.server.takeRequest()
679-
assertNotNull(recordedRequest.getHeader("sentry-trace"))
680-
assertNull(recordedRequest.getHeader("traceparent"))
680+
assertNotNull(recordedRequest.getHeader(SentryTraceHeader.SENTRY_TRACE_HEADER))
681+
assertNull(recordedRequest.getHeader(W3CTraceparentHeader.TRACEPARENT_HEADER))
681682
}
682683
}

sentry-openfeign/src/test/kotlin/io/sentry/openfeign/SentryFeignClientTest.kt

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import io.sentry.SentryTracer
1616
import io.sentry.SpanDataConvention
1717
import io.sentry.SpanStatus
1818
import io.sentry.TransactionContext
19+
import io.sentry.W3CTraceparentHeader
1920
import io.sentry.mockServerRequestTimeoutMillis
2021
import java.util.concurrent.TimeUnit
2122
import kotlin.test.BeforeTest
@@ -316,6 +317,32 @@ class SentryFeignClientTest {
316317
assertNotNull(httpClientSpan.spanContext.sampled) { assertFalse(it) }
317318
}
318319

320+
@Test
321+
fun `adds W3C traceparent header when propagateTraceparent is enabled`() {
322+
fixture.sentryOptions.isTraceSampling = true
323+
fixture.sentryOptions.isPropagateTraceparent = true
324+
fixture.sentryOptions.dsn = "https://key@sentry.io/proj"
325+
val sut = fixture.getSut()
326+
sut.getOk()
327+
val recorderRequest =
328+
fixture.server.takeRequest(mockServerRequestTimeoutMillis, TimeUnit.MILLISECONDS)!!
329+
assertNotNull(recorderRequest.headers[SentryTraceHeader.SENTRY_TRACE_HEADER])
330+
assertNotNull(recorderRequest.headers[W3CTraceparentHeader.TRACEPARENT_HEADER])
331+
}
332+
333+
@Test
334+
fun `does not add W3C traceparent header when propagateTraceparent is disabled`() {
335+
fixture.sentryOptions.isTraceSampling = true
336+
fixture.sentryOptions.isPropagateTraceparent = false
337+
fixture.sentryOptions.dsn = "https://key@sentry.io/proj"
338+
val sut = fixture.getSut()
339+
sut.getOk()
340+
val recorderRequest =
341+
fixture.server.takeRequest(mockServerRequestTimeoutMillis, TimeUnit.MILLISECONDS)!!
342+
assertNotNull(recorderRequest.headers[SentryTraceHeader.SENTRY_TRACE_HEADER])
343+
assertNull(recorderRequest.headers[W3CTraceparentHeader.TRACEPARENT_HEADER])
344+
}
345+
319346
interface MockApi {
320347
@RequestLine("GET /status/200") fun getOk(): String
321348

sentry-spring-boot-4/src/test/kotlin/io/sentry/spring/boot4/SentrySpanRestClientCustomizerTest.kt

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import io.sentry.SentryTracer
1111
import io.sentry.SpanStatus
1212
import io.sentry.TracesSamplingDecision
1313
import io.sentry.TransactionContext
14+
import io.sentry.W3CTraceparentHeader
1415
import io.sentry.mockServerRequestTimeoutMillis
1516
import java.time.Duration
1617
import java.util.concurrent.TimeUnit
@@ -383,4 +384,36 @@ class SentrySpanRestClientCustomizerTest {
383384
anyOrNull(),
384385
)
385386
}
387+
388+
@Test
389+
fun `adds W3C traceparent header when propagateTraceparent is enabled`() {
390+
fixture.sentryOptions.isPropagateTraceparent = true
391+
fixture
392+
.getSut(isTransactionActive = true, includeMockServerInTracingOrigins = true)
393+
.build()
394+
.get()
395+
.uri(fixture.url)
396+
.retrieve()
397+
.toEntity(String::class.java)
398+
val recordedRequest =
399+
fixture.mockServer.takeRequest(mockServerRequestTimeoutMillis, TimeUnit.MILLISECONDS)!!
400+
assertNotNull(recordedRequest.headers[SentryTraceHeader.SENTRY_TRACE_HEADER])
401+
assertNotNull(recordedRequest.headers[W3CTraceparentHeader.TRACEPARENT_HEADER])
402+
}
403+
404+
@Test
405+
fun `does not add W3C traceparent header when propagateTraceparent is disabled`() {
406+
fixture.sentryOptions.isPropagateTraceparent = false
407+
fixture
408+
.getSut(isTransactionActive = true, includeMockServerInTracingOrigins = true)
409+
.build()
410+
.get()
411+
.uri(fixture.url)
412+
.retrieve()
413+
.toEntity(String::class.java)
414+
val recordedRequest =
415+
fixture.mockServer.takeRequest(mockServerRequestTimeoutMillis, TimeUnit.MILLISECONDS)!!
416+
assertNotNull(recordedRequest.headers[SentryTraceHeader.SENTRY_TRACE_HEADER])
417+
assertNull(recordedRequest.headers[W3CTraceparentHeader.TRACEPARENT_HEADER])
418+
}
386419
}

sentry-spring-boot-4/src/test/kotlin/io/sentry/spring/boot4/SentrySpanRestTemplateCustomizerTest.kt

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import io.sentry.SentryTracer
1111
import io.sentry.SpanStatus
1212
import io.sentry.TracesSamplingDecision
1313
import io.sentry.TransactionContext
14+
import io.sentry.W3CTraceparentHeader
1415
import io.sentry.mockServerRequestTimeoutMillis
1516
import java.time.Duration
1617
import java.util.concurrent.TimeUnit
@@ -328,4 +329,28 @@ class SentrySpanRestTemplateCustomizerTest {
328329
anyOrNull(),
329330
)
330331
}
332+
333+
@Test
334+
fun `adds W3C traceparent header when propagateTraceparent is enabled`() {
335+
fixture.sentryOptions.isPropagateTraceparent = true
336+
fixture
337+
.getSut(isTransactionActive = true, includeMockServerInTracingOrigins = true)
338+
.getForObject(fixture.url, String::class.java)
339+
val recordedRequest =
340+
fixture.mockServer.takeRequest(mockServerRequestTimeoutMillis, TimeUnit.MILLISECONDS)!!
341+
assertNotNull(recordedRequest.headers[SentryTraceHeader.SENTRY_TRACE_HEADER])
342+
assertNotNull(recordedRequest.headers[W3CTraceparentHeader.TRACEPARENT_HEADER])
343+
}
344+
345+
@Test
346+
fun `does not add W3C traceparent header when propagateTraceparent is disabled`() {
347+
fixture.sentryOptions.isPropagateTraceparent = false
348+
fixture
349+
.getSut(isTransactionActive = true, includeMockServerInTracingOrigins = true)
350+
.getForObject(fixture.url, String::class.java)
351+
val recordedRequest =
352+
fixture.mockServer.takeRequest(mockServerRequestTimeoutMillis, TimeUnit.MILLISECONDS)!!
353+
assertNotNull(recordedRequest.headers[SentryTraceHeader.SENTRY_TRACE_HEADER])
354+
assertNull(recordedRequest.headers[W3CTraceparentHeader.TRACEPARENT_HEADER])
355+
}
331356
}

sentry-spring-boot-jakarta/src/test/kotlin/io/sentry/spring/boot/jakarta/SentrySpanRestClientCustomizerTest.kt

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import io.sentry.SentryTracer
1111
import io.sentry.SpanStatus
1212
import io.sentry.TracesSamplingDecision
1313
import io.sentry.TransactionContext
14+
import io.sentry.W3CTraceparentHeader
1415
import io.sentry.mockServerRequestTimeoutMillis
1516
import java.time.Duration
1617
import java.util.concurrent.TimeUnit
@@ -383,4 +384,36 @@ class SentrySpanRestClientCustomizerTest {
383384
anyOrNull(),
384385
)
385386
}
387+
388+
@Test
389+
fun `adds W3C traceparent header when propagateTraceparent is enabled`() {
390+
fixture.sentryOptions.isPropagateTraceparent = true
391+
fixture
392+
.getSut(isTransactionActive = true, includeMockServerInTracingOrigins = true)
393+
.build()
394+
.get()
395+
.uri(fixture.url)
396+
.retrieve()
397+
.toEntity(String::class.java)
398+
val recordedRequest =
399+
fixture.mockServer.takeRequest(mockServerRequestTimeoutMillis, TimeUnit.MILLISECONDS)!!
400+
assertNotNull(recordedRequest.headers[SentryTraceHeader.SENTRY_TRACE_HEADER])
401+
assertNotNull(recordedRequest.headers[W3CTraceparentHeader.TRACEPARENT_HEADER])
402+
}
403+
404+
@Test
405+
fun `does not add W3C traceparent header when propagateTraceparent is disabled`() {
406+
fixture.sentryOptions.isPropagateTraceparent = false
407+
fixture
408+
.getSut(isTransactionActive = true, includeMockServerInTracingOrigins = true)
409+
.build()
410+
.get()
411+
.uri(fixture.url)
412+
.retrieve()
413+
.toEntity(String::class.java)
414+
val recordedRequest =
415+
fixture.mockServer.takeRequest(mockServerRequestTimeoutMillis, TimeUnit.MILLISECONDS)!!
416+
assertNotNull(recordedRequest.headers[SentryTraceHeader.SENTRY_TRACE_HEADER])
417+
assertNull(recordedRequest.headers[W3CTraceparentHeader.TRACEPARENT_HEADER])
418+
}
386419
}

sentry-spring-boot-jakarta/src/test/kotlin/io/sentry/spring/boot/jakarta/SentrySpanRestTemplateCustomizerTest.kt

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import io.sentry.SentryTracer
1111
import io.sentry.SpanStatus
1212
import io.sentry.TracesSamplingDecision
1313
import io.sentry.TransactionContext
14+
import io.sentry.W3CTraceparentHeader
1415
import io.sentry.mockServerRequestTimeoutMillis
1516
import java.time.Duration
1617
import java.util.concurrent.TimeUnit
@@ -328,4 +329,28 @@ class SentrySpanRestTemplateCustomizerTest {
328329
anyOrNull(),
329330
)
330331
}
332+
333+
@Test
334+
fun `adds W3C traceparent header when propagateTraceparent is enabled`() {
335+
fixture.sentryOptions.isPropagateTraceparent = true
336+
fixture
337+
.getSut(isTransactionActive = true, includeMockServerInTracingOrigins = true)
338+
.getForObject(fixture.url, String::class.java)
339+
val recordedRequest =
340+
fixture.mockServer.takeRequest(mockServerRequestTimeoutMillis, TimeUnit.MILLISECONDS)!!
341+
assertNotNull(recordedRequest.headers[SentryTraceHeader.SENTRY_TRACE_HEADER])
342+
assertNotNull(recordedRequest.headers[W3CTraceparentHeader.TRACEPARENT_HEADER])
343+
}
344+
345+
@Test
346+
fun `does not add W3C traceparent header when propagateTraceparent is disabled`() {
347+
fixture.sentryOptions.isPropagateTraceparent = false
348+
fixture
349+
.getSut(isTransactionActive = true, includeMockServerInTracingOrigins = true)
350+
.getForObject(fixture.url, String::class.java)
351+
val recordedRequest =
352+
fixture.mockServer.takeRequest(mockServerRequestTimeoutMillis, TimeUnit.MILLISECONDS)!!
353+
assertNotNull(recordedRequest.headers[SentryTraceHeader.SENTRY_TRACE_HEADER])
354+
assertNull(recordedRequest.headers[W3CTraceparentHeader.TRACEPARENT_HEADER])
355+
}
331356
}

sentry-spring-boot/src/test/kotlin/io/sentry/spring/boot/SentrySpanRestTemplateCustomizerTest.kt

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import io.sentry.SentryTracer
1111
import io.sentry.SpanStatus
1212
import io.sentry.TracesSamplingDecision
1313
import io.sentry.TransactionContext
14+
import io.sentry.W3CTraceparentHeader
1415
import io.sentry.mockServerRequestTimeoutMillis
1516
import java.time.Duration
1617
import java.util.concurrent.TimeUnit
@@ -328,4 +329,28 @@ class SentrySpanRestTemplateCustomizerTest {
328329
anyOrNull(),
329330
)
330331
}
332+
333+
@Test
334+
fun `adds W3C traceparent header when propagateTraceparent is enabled`() {
335+
fixture.sentryOptions.isPropagateTraceparent = true
336+
fixture
337+
.getSut(isTransactionActive = true, includeMockServerInTracingOrigins = true)
338+
.getForObject(fixture.url, String::class.java)
339+
val recordedRequest =
340+
fixture.mockServer.takeRequest(mockServerRequestTimeoutMillis, TimeUnit.MILLISECONDS)!!
341+
assertNotNull(recordedRequest.headers[SentryTraceHeader.SENTRY_TRACE_HEADER])
342+
assertNotNull(recordedRequest.headers[W3CTraceparentHeader.TRACEPARENT_HEADER])
343+
}
344+
345+
@Test
346+
fun `does not add W3C traceparent header when propagateTraceparent is disabled`() {
347+
fixture.sentryOptions.isPropagateTraceparent = false
348+
fixture
349+
.getSut(isTransactionActive = true, includeMockServerInTracingOrigins = true)
350+
.getForObject(fixture.url, String::class.java)
351+
val recordedRequest =
352+
fixture.mockServer.takeRequest(mockServerRequestTimeoutMillis, TimeUnit.MILLISECONDS)!!
353+
assertNotNull(recordedRequest.headers[SentryTraceHeader.SENTRY_TRACE_HEADER])
354+
assertNull(recordedRequest.headers[W3CTraceparentHeader.TRACEPARENT_HEADER])
355+
}
331356
}

0 commit comments

Comments
 (0)