Skip to content

Commit 8662adb

Browse files
committed
Speed up tests
1 parent d3164a3 commit 8662adb

18 files changed

Lines changed: 581 additions & 208 deletions

File tree

sentry-jul/src/test/kotlin/io/sentry/jul/SentryHandlerTest.kt

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import io.sentry.SentryLogLevel
77
import io.sentry.SentryOptions
88
import io.sentry.checkEvent
99
import io.sentry.checkLogs
10+
import io.sentry.test.applyTestOptions
1011
import io.sentry.test.initForTest
1112
import io.sentry.transport.ITransport
1213
import java.time.Instant
@@ -43,6 +44,7 @@ class SentryHandlerTest {
4344
val options = SentryOptions()
4445
options.dsn = "http://key@localhost/proj"
4546
options.setTransportFactory { _, _ -> transport }
47+
applyTestOptions(options)
4648
contextTags?.forEach { options.addContextTag(it) }
4749
logger = Logger.getLogger("jul.SentryHandlerTest")
4850
handler = SentryHandler(options, configureWithLogManager, true)
@@ -411,7 +413,7 @@ class SentryHandlerTest {
411413
fixture = Fixture(minimumLevel = Level.FINEST)
412414
fixture.logger.finest("testing trace level")
413415

414-
Sentry.flush(1000)
416+
Sentry.flush(10)
415417

416418
verify(fixture.transport)
417419
.send(
@@ -427,7 +429,7 @@ class SentryHandlerTest {
427429
fixture = Fixture(minimumLevel = Level.FINE)
428430
fixture.logger.fine("testing trace level")
429431

430-
Sentry.flush(1000)
432+
Sentry.flush(10)
431433

432434
verify(fixture.transport)
433435
.send(checkLogs { event -> assertEquals(SentryLogLevel.DEBUG, event.items.first().level) })
@@ -438,7 +440,7 @@ class SentryHandlerTest {
438440
fixture = Fixture(minimumLevel = Level.CONFIG)
439441
fixture.logger.config("testing debug level")
440442

441-
Sentry.flush(1000)
443+
Sentry.flush(10)
442444

443445
verify(fixture.transport)
444446
.send(checkLogs { event -> assertEquals(SentryLogLevel.DEBUG, event.items.first().level) })
@@ -449,7 +451,7 @@ class SentryHandlerTest {
449451
fixture = Fixture(minimumLevel = Level.INFO)
450452
fixture.logger.info("testing info level")
451453

452-
Sentry.flush(1000)
454+
Sentry.flush(10)
453455

454456
verify(fixture.transport)
455457
.send(checkLogs { event -> assertEquals(SentryLogLevel.INFO, event.items.first().level) })
@@ -460,7 +462,7 @@ class SentryHandlerTest {
460462
fixture = Fixture(minimumLevel = Level.WARNING)
461463
fixture.logger.warning("testing warn level")
462464

463-
Sentry.flush(1000)
465+
Sentry.flush(10)
464466

465467
verify(fixture.transport)
466468
.send(checkLogs { event -> assertEquals(SentryLogLevel.WARN, event.items.first().level) })
@@ -471,7 +473,7 @@ class SentryHandlerTest {
471473
fixture = Fixture(minimumLevel = Level.SEVERE)
472474
fixture.logger.severe("testing error level")
473475

474-
Sentry.flush(1000)
476+
Sentry.flush(10)
475477

476478
verify(fixture.transport)
477479
.send(checkLogs { event -> assertEquals(SentryLogLevel.ERROR, event.items.first().level) })

sentry-log4j2/src/test/kotlin/io/sentry/log4j2/SentryAppenderTest.kt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -248,7 +248,7 @@ class SentryAppenderTest {
248248
val logger = fixture.getSut(minimumLevel = Level.TRACE)
249249
logger.trace("testing trace level")
250250

251-
Sentry.flush(1000)
251+
Sentry.flush(10)
252252

253253
verify(fixture.transport)
254254
.send(
@@ -267,7 +267,7 @@ class SentryAppenderTest {
267267
val logger = fixture.getSut(minimumLevel = Level.DEBUG)
268268
logger.debug("testing debug level")
269269

270-
Sentry.flush(1000)
270+
Sentry.flush(10)
271271

272272
verify(fixture.transport)
273273
.send(checkLogs { event -> assertEquals(SentryLogLevel.DEBUG, event.items.first().level) })
@@ -278,7 +278,7 @@ class SentryAppenderTest {
278278
val logger = fixture.getSut(minimumLevel = Level.INFO)
279279
logger.info("testing info level")
280280

281-
Sentry.flush(1000)
281+
Sentry.flush(10)
282282

283283
verify(fixture.transport)
284284
.send(checkLogs { event -> assertEquals(SentryLogLevel.INFO, event.items.first().level) })
@@ -289,7 +289,7 @@ class SentryAppenderTest {
289289
val logger = fixture.getSut(minimumLevel = Level.WARN)
290290
logger.warn("testing warn level")
291291

292-
Sentry.flush(1000)
292+
Sentry.flush(10)
293293

294294
verify(fixture.transport)
295295
.send(checkLogs { event -> assertEquals(SentryLogLevel.WARN, event.items.first().level) })
@@ -300,7 +300,7 @@ class SentryAppenderTest {
300300
val logger = fixture.getSut(minimumLevel = Level.ERROR)
301301
logger.error("testing error level")
302302

303-
Sentry.flush(1000)
303+
Sentry.flush(10)
304304

305305
verify(fixture.transport)
306306
.send(checkLogs { event -> assertEquals(SentryLogLevel.ERROR, event.items.first().level) })
@@ -311,7 +311,7 @@ class SentryAppenderTest {
311311
val logger = fixture.getSut(minimumLevel = Level.FATAL)
312312
logger.fatal("testing fatal level")
313313

314-
Sentry.flush(1000)
314+
Sentry.flush(10)
315315

316316
verify(fixture.transport)
317317
.send(checkLogs { event -> assertEquals(SentryLogLevel.FATAL, event.items.first().level) })
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,4 @@
11
release=release from sentry.properties
22
logs.enabled=true
3+
shutdown-timeout=0
4+
session-flush-timeout=0

sentry-logback/src/test/kotlin/io/sentry/logback/SentryAppenderTest.kt

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import io.sentry.SentryLogLevel
1818
import io.sentry.SentryOptions
1919
import io.sentry.checkEvent
2020
import io.sentry.checkLogs
21+
import io.sentry.test.applyTestOptions
2122
import io.sentry.test.initForTest
2223
import io.sentry.transport.ITransport
2324
import java.time.Instant
@@ -68,6 +69,7 @@ class SentryAppenderTest {
6869
options.dsn = dsn
6970
options.isSendDefaultPii = sendDefaultPii
7071
options.logs.isEnabled = enableLogs
72+
applyTestOptions(options)
7173
contextTags?.forEach { options.addContextTag(it) }
7274
appender.setOptions(options)
7375
appender.setMinimumBreadcrumbLevel(minimumBreadcrumbLevel)
@@ -317,7 +319,7 @@ class SentryAppenderTest {
317319
fixture = Fixture(minimumLevel = Level.TRACE, enableLogs = true)
318320
fixture.logger.trace("testing trace level")
319321

320-
Sentry.flush(1000)
322+
Sentry.flush(10)
321323

322324
verify(fixture.transport)
323325
.send(checkLogs { logs -> assertEquals(SentryLogLevel.TRACE, logs.items.first().level) })
@@ -328,7 +330,7 @@ class SentryAppenderTest {
328330
fixture = Fixture(minimumLevel = Level.DEBUG, enableLogs = true)
329331
fixture.logger.debug("testing debug level")
330332

331-
Sentry.flush(1000)
333+
Sentry.flush(10)
332334

333335
verify(fixture.transport)
334336
.send(checkLogs { logs -> assertEquals(SentryLogLevel.DEBUG, logs.items.first().level) })
@@ -339,7 +341,7 @@ class SentryAppenderTest {
339341
fixture = Fixture(minimumLevel = Level.INFO, enableLogs = true)
340342
fixture.logger.info("testing info level")
341343

342-
Sentry.flush(1000)
344+
Sentry.flush(10)
343345

344346
verify(fixture.transport)
345347
.send(checkLogs { logs -> assertEquals(SentryLogLevel.INFO, logs.items.first().level) })
@@ -350,7 +352,7 @@ class SentryAppenderTest {
350352
fixture = Fixture(minimumLevel = Level.WARN, enableLogs = true)
351353
fixture.logger.warn("testing warn level")
352354

353-
Sentry.flush(1000)
355+
Sentry.flush(10)
354356

355357
verify(fixture.transport)
356358
.send(checkLogs { logs -> assertEquals(SentryLogLevel.WARN, logs.items.first().level) })
@@ -361,7 +363,7 @@ class SentryAppenderTest {
361363
fixture = Fixture(minimumLevel = Level.ERROR, enableLogs = true)
362364
fixture.logger.error("testing error level")
363365

364-
Sentry.flush(1000)
366+
Sentry.flush(10)
365367

366368
verify(fixture.transport)
367369
.send(checkLogs { logs -> assertEquals(SentryLogLevel.ERROR, logs.items.first().level) })
@@ -372,7 +374,7 @@ class SentryAppenderTest {
372374
fixture = Fixture(minimumLevel = Level.TRACE, enableLogs = true)
373375
fixture.logger.trace("Testing {} level", "TRACE")
374376

375-
Sentry.flush(1000)
377+
Sentry.flush(10)
376378

377379
verify(fixture.transport)
378380
.send(
@@ -394,7 +396,7 @@ class SentryAppenderTest {
394396
fixture = Fixture(minimumLevel = Level.TRACE, enableLogs = true, encoder = encoder)
395397
fixture.logger.trace("Testing {} level", "TRACE")
396398

397-
Sentry.flush(1000)
399+
Sentry.flush(10)
398400

399401
verify(fixture.transport)
400402
.send(
@@ -420,7 +422,7 @@ class SentryAppenderTest {
420422
)
421423
fixture.logger.trace("Testing {} level", "TRACE")
422424

423-
Sentry.flush(1000)
425+
Sentry.flush(10)
424426

425427
verify(fixture.transport)
426428
.send(
@@ -447,7 +449,7 @@ class SentryAppenderTest {
447449
)
448450
fixture.logger.trace("Testing {} level", "TRACE")
449451

450-
Sentry.flush(1000)
452+
Sentry.flush(10)
451453

452454
verify(fixture.transport)
453455
.send(

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

Lines changed: 55 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -81,14 +81,51 @@ import org.springframework.web.servlet.HandlerExceptionResolver
8181

8282
class SentryAutoConfigurationTest {
8383

84-
private val contextRunner =
84+
// Base context runner with performance optimizations
85+
private val baseContextRunner =
8586
WebApplicationContextRunner()
8687
.withConfiguration(
8788
AutoConfigurations.of(
8889
SentryAutoConfiguration::class.java,
8990
WebMvcAutoConfiguration::class.java,
9091
)
9192
)
93+
.withPropertyValues(
94+
// Speed up tests by reducing timeouts and disabling expensive operations
95+
"sentry.shutdownTimeoutMillis=0",
96+
"sentry.sessionFlushTimeoutMillis=0",
97+
"sentry.flushTimeoutMillis=0",
98+
"sentry.readTimeoutMillis=50",
99+
"sentry.connectionTimeoutMillis=50",
100+
"sentry.send-modules=false", // Disable expensive module sending
101+
"sentry.attach-stacktrace=false", // Disable expensive stacktrace collection
102+
"sentry.attach-threads=false", // Disable expensive thread info
103+
"sentry.enable-backpressure-handling=false",
104+
"sentry.enable-spotlight=false",
105+
"sentry.debug=false",
106+
"sentry.max-breadcrumbs=0", // Disable breadcrumb collection for performance
107+
)
108+
109+
// Use the optimized base runner by default
110+
private val contextRunner =
111+
baseContextRunner.withUserConfiguration(
112+
NoOpTransportConfiguration::class.java
113+
) // Use no-op transport to avoid network calls
114+
115+
// Specialized context runners for different test categories
116+
private val dsnEnabledRunner =
117+
baseContextRunner
118+
.withPropertyValues("sentry.dsn=http://key@localhost/proj")
119+
.withUserConfiguration(
120+
NoOpTransportConfiguration::class.java
121+
) // Use no-op transport to avoid network calls
122+
123+
private val tracingEnabledRunner =
124+
baseContextRunner
125+
.withPropertyValues("sentry.dsn=http://key@localhost/proj", "sentry.traces-sample-rate=1.0")
126+
.withUserConfiguration(
127+
NoOpTransportConfiguration::class.java
128+
) // Use no-op transport to avoid network calls
92129

93130
@Test
94131
fun `scopes is not created when auto-configuration dsn is not set`() {
@@ -97,22 +134,17 @@ class SentryAutoConfigurationTest {
97134

98135
@Test
99136
fun `scopes is created when dsn is provided`() {
100-
contextRunner.withPropertyValues("sentry.dsn=http://key@localhost/proj").run {
101-
assertThat(it).hasSingleBean(IScopes::class.java)
102-
}
137+
dsnEnabledRunner.run { assertThat(it).hasSingleBean(IScopes::class.java) }
103138
}
104139

105140
@Test
106141
fun `OptionsConfiguration is created if custom one with name sentryOptionsConfiguration is not provided`() {
107-
contextRunner.withPropertyValues("sentry.dsn=http://key@localhost/proj").run {
108-
assertThat(it).hasSingleBean(Sentry.OptionsConfiguration::class.java)
109-
}
142+
dsnEnabledRunner.run { assertThat(it).hasSingleBean(Sentry.OptionsConfiguration::class.java) }
110143
}
111144

112145
@Test
113146
fun `OptionsConfiguration with name sentryOptionsConfiguration is created if another one with different name is provided`() {
114-
contextRunner
115-
.withPropertyValues("sentry.dsn=http://key@localhost/proj")
147+
dsnEnabledRunner
116148
.withUserConfiguration(CustomOptionsConfigurationConfiguration::class.java)
117149
.run {
118150
assertThat(it).getBeans(Sentry.OptionsConfiguration::class.java).hasSize(2)
@@ -305,7 +337,7 @@ class SentryAutoConfigurationTest {
305337

306338
@Test
307339
fun `sets SDK version on sent events`() {
308-
contextRunner
340+
baseContextRunner
309341
.withPropertyValues("sentry.dsn=http://key@localhost/proj")
310342
.withUserConfiguration(MockTransportConfiguration::class.java)
311343
.run {
@@ -410,7 +442,7 @@ class SentryAutoConfigurationTest {
410442

411443
@Test
412444
fun `sets release on SentryEvents if Git integration is configured`() {
413-
contextRunner
445+
baseContextRunner
414446
.withPropertyValues("sentry.dsn=http://key@localhost/proj")
415447
.withUserConfiguration(
416448
MockTransportConfiguration::class.java,
@@ -429,7 +461,7 @@ class SentryAutoConfigurationTest {
429461

430462
@Test
431463
fun `sets custom release on SentryEvents if release property is set and Git integration is configured`() {
432-
contextRunner
464+
baseContextRunner
433465
.withPropertyValues("sentry.dsn=http://key@localhost/proj", "sentry.release=my-release")
434466
.withUserConfiguration(
435467
MockTransportConfiguration::class.java,
@@ -742,7 +774,7 @@ class SentryAutoConfigurationTest {
742774

743775
@Test
744776
fun `when sentry-apache-http-client-5 is on the classpath, creates apache transport factory`() {
745-
contextRunner.withPropertyValues("sentry.dsn=http://key@localhost/proj").run {
777+
baseContextRunner.withPropertyValues("sentry.dsn=http://key@localhost/proj").run {
746778
assertThat(it.getBean(SentryOptions::class.java).transportFactory)
747779
.isInstanceOf(ApacheHttpClientTransportFactory::class.java)
748780
}
@@ -761,7 +793,7 @@ class SentryAutoConfigurationTest {
761793

762794
@Test
763795
fun `when sentry-apache-http-client-5 is on the classpath and custom transport factory bean is set, does not create apache transport factory`() {
764-
contextRunner
796+
baseContextRunner
765797
.withPropertyValues("sentry.dsn=http://key@localhost/proj")
766798
.withUserConfiguration(MockTransportConfiguration::class.java)
767799
.run {
@@ -1097,6 +1129,15 @@ class SentryAutoConfigurationTest {
10971129
@Bean open fun sentryTransport() = transport
10981130
}
10991131

1132+
@Configuration(proxyBeanMethods = false)
1133+
open class NoOpTransportConfiguration {
1134+
1135+
@Bean
1136+
open fun noOpTransportFactory(): ITransportFactory {
1137+
return NoOpTransportFactory.getInstance()
1138+
}
1139+
}
1140+
11001141
@Configuration(proxyBeanMethods = false)
11011142
open class CustomBeforeSendCallbackConfiguration {
11021143

0 commit comments

Comments
 (0)