test: limit log level in some tests
This commit is contained in:
32
src/test/kotlin/eventDemo/LogHelper.kt
Normal file
32
src/test/kotlin/eventDemo/LogHelper.kt
Normal file
@@ -0,0 +1,32 @@
|
||||
package eventDemo
|
||||
|
||||
import ch.qos.logback.classic.Level
|
||||
import ch.qos.logback.classic.Logger
|
||||
import org.slf4j.LoggerFactory
|
||||
|
||||
inline fun <T> withLogLevel(
|
||||
vararg logs: Pair<String, Level>,
|
||||
block: () -> T,
|
||||
): T {
|
||||
val originalLevels =
|
||||
run {
|
||||
logs.toList().associate { (log, level) ->
|
||||
val logger = LoggerFactory.getLogger(log) as Logger
|
||||
log to logger.level
|
||||
}
|
||||
}
|
||||
|
||||
logs.forEach { (log, level) ->
|
||||
val logger = LoggerFactory.getLogger(log) as Logger
|
||||
logger.level = level
|
||||
}
|
||||
|
||||
val output = block()
|
||||
|
||||
logs.forEach { (log, level) ->
|
||||
val logger = LoggerFactory.getLogger(log) as Logger
|
||||
logger.level = originalLevels[log]
|
||||
}
|
||||
|
||||
return output
|
||||
}
|
||||
@@ -1,6 +1,10 @@
|
||||
package eventDemo.business.event.projection
|
||||
|
||||
import ch.qos.logback.classic.Level
|
||||
import com.rabbitmq.client.impl.ForgivingExceptionHandler
|
||||
import com.zaxxer.hikari.pool.ProxyConnection
|
||||
import eventDemo.Tag
|
||||
import eventDemo.business.command.GameCommandHandler
|
||||
import eventDemo.business.entity.GameId
|
||||
import eventDemo.business.entity.Player
|
||||
import eventDemo.business.event.GameEventHandler
|
||||
@@ -8,6 +12,7 @@ import eventDemo.business.event.event.NewPlayerEvent
|
||||
import eventDemo.business.event.projection.gameState.GameState
|
||||
import eventDemo.business.event.projection.gameState.GameStateRepository
|
||||
import eventDemo.testKoinApplicationWithConfig
|
||||
import eventDemo.withLogLevel
|
||||
import io.kotest.assertions.nondeterministic.eventually
|
||||
import io.kotest.assertions.nondeterministic.eventuallyConfig
|
||||
import io.kotest.common.KotestInternal
|
||||
@@ -19,6 +24,7 @@ import kotlinx.coroutines.DelicateCoroutinesApi
|
||||
import kotlinx.coroutines.GlobalScope
|
||||
import kotlinx.coroutines.joinAll
|
||||
import kotlinx.coroutines.launch
|
||||
import org.slf4j.Logger
|
||||
import kotlin.test.assertNotNull
|
||||
import kotlin.time.Duration.Companion.seconds
|
||||
|
||||
@@ -52,6 +58,10 @@ class GameStateRepositoryTest :
|
||||
}
|
||||
|
||||
test("get should build the last version of the state") {
|
||||
withLogLevel(
|
||||
GameCommandHandler::class.java.name to Level.ERROR,
|
||||
ForgivingExceptionHandler::class.java.name to Level.OFF,
|
||||
) {
|
||||
val aggregateId = GameId()
|
||||
testKoinApplicationWithConfig {
|
||||
val repo = get<GameStateRepository>()
|
||||
@@ -85,8 +95,15 @@ class GameStateRepositoryTest :
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
test("getUntil should build the state until the event") {
|
||||
withLogLevel(
|
||||
GameCommandHandler::class.java.name to Level.ERROR,
|
||||
ForgivingExceptionHandler::class.java.name to Level.OFF,
|
||||
ProxyConnection::class.java.name to Level.OFF,
|
||||
Logger.ROOT_LOGGER_NAME to Level.INFO,
|
||||
) {
|
||||
repeat(10) {
|
||||
val aggregateId = GameId()
|
||||
testKoinApplicationWithConfig {
|
||||
@@ -115,8 +132,13 @@ class GameStateRepositoryTest :
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
test("getUntil should be concurrently secure").config(tags = setOf(Tag.Concurrence)) {
|
||||
withLogLevel(
|
||||
Logger.ROOT_LOGGER_NAME to Level.ERROR,
|
||||
ForgivingExceptionHandler::class.java.name to Level.OFF,
|
||||
) {
|
||||
val aggregateId = GameId()
|
||||
testKoinApplicationWithConfig {
|
||||
val repo = get<GameStateRepository>()
|
||||
@@ -126,7 +148,7 @@ class GameStateRepositoryTest :
|
||||
.map { r ->
|
||||
GlobalScope
|
||||
.launch {
|
||||
repeat(100) { r2 ->
|
||||
repeat(20) { r2 ->
|
||||
val playerX = Player("player$r$r2")
|
||||
eventHandler
|
||||
.handle(aggregateId) {
|
||||
@@ -148,10 +170,11 @@ class GameStateRepositoryTest :
|
||||
},
|
||||
) {
|
||||
repo.getLast(aggregateId).run {
|
||||
lastEventVersion shouldBeEqual 1000
|
||||
players shouldHaveSize 1000
|
||||
lastEventVersion shouldBeEqual 200
|
||||
players shouldHaveSize 200
|
||||
}
|
||||
repo.count(aggregateId) shouldBe 39
|
||||
}
|
||||
repo.count(aggregateId) shouldBe 119
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user