WARNING: A restricted method in java.lang.System has been called
WARNING: java.lang.System::load has been called by org.fusesource.jansi.internal.JansiLoader in an unnamed module (file:/root/.m2/wrapper/dists/apache-maven-3.8.7-bin/678cc9d4/apache-maven-3.8.7/lib/jansi-2.4.0.jar)
WARNING: Use --enable-native-access=ALL-UNNAMED to avoid a warning for callers in this module
WARNING: Restricted methods will be blocked in a future release unless native access is enabled
WARNING: A terminally deprecated method in sun.misc.Unsafe has been called
WARNING: sun.misc.Unsafe::objectFieldOffset has been called by com.google.common.util.concurrent.AbstractFuture$UnsafeAtomicHelper (file:/root/.m2/wrapper/dists/apache-maven-3.8.7-bin/678cc9d4/apache-maven-3.8.7/lib/guava-25.1-android.jar)
WARNING: Please consider reporting this to the maintainers of class com.google.common.util.concurrent.AbstractFuture$UnsafeAtomicHelper
WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release
[INFO] Scanning for projects...
[INFO]
[INFO] ---------------< org.jointhefreeworld.symbanta:symbanta >---------------
[INFO] Building symbanta 0.0.1-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-clean-plugin:3.5.0:clean (clean-stale-output) @ symbanta ---
[INFO] Deleting /etc/byggsteg/job-clone/symbanta/trunk/target
[INFO]
[INFO] --- maven-dependency-plugin:3.10.0:properties (default) @ symbanta ---
[INFO]
[INFO] --- exec-maven-plugin:3.3.0:java (generate-fabrikt-server-sources) @ symbanta ---
Nov 10, 2026 8:48:33 PM com.cjbooms.fabrikt.cli.CodeGen generate
INFO: Generating code and dumping to /etc/byggsteg/job-clone/symbanta/trunk/target/generated-sources/server/
[INFO]
[INFO] --- ktlint-maven-plugin:3.5.0:format (format-and-check) @ symbanta ---
[INFO] 0 file(s) formatted.
[INFO]
[INFO] --- maven-resources-plugin:3.5.0:resources (default-resources) @ symbanta ---
[INFO] Copying 2 resources from src/main/resources to target/classes
[INFO] Copying 7 resources from src/main/resources to target/classes
[INFO]
[INFO] --- kotlin-maven-plugin:2.4.10:compile (compile) @ symbanta ---
[INFO] Applied plugin: 'spring'
[INFO] Options for KOTLIN DAEMON: CompilationOptions(compilerMode=NON_INCREMENTAL_COMPILER, targetPlatform=JVM, reportCategories=[0], reportSeverity=2, requestedCompilationResults=[0], kotlinScriptExtensions=null, generateCompilerRefIndex=false)
[INFO]
[INFO] --- maven-compiler-plugin:3.5.1:compile (java-compile) @ symbanta ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-resources-plugin:3.5.0:testResources (default-testResources) @ symbanta ---
[INFO] skip non existing resourceDirectory /etc/byggsteg/job-clone/symbanta/trunk/src/test/resources
[INFO]
[INFO] --- kotlin-maven-plugin:2.4.10:test-compile (test-compile) @ symbanta ---
[INFO] Applied plugin: 'spring'
[INFO] Options for KOTLIN DAEMON: CompilationOptions(compilerMode=NON_INCREMENTAL_COMPILER, targetPlatform=JVM, reportCategories=[0], reportSeverity=2, requestedCompilationResults=[0], kotlinScriptExtensions=null, generateCompilerRefIndex=false)
[INFO]
[INFO] --- maven-compiler-plugin:3.5.1:testCompile (java-test-compile) @ symbanta ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-surefire-plugin:3.5.6:test (default-test) @ symbanta ---
[INFO] Using auto detected provider org.apache.maven.surefire.junitplatform.JUnitPlatformProvider
[INFO]
[INFO] -------------------------------------------------------
[INFO] T E S T S
[INFO] -------------------------------------------------------
[INFO] Running org.jointhefreeworld.symbanta.ApplicationContextSpec
20:49:32.525 [main @spec-scope-2121491280#27] INFO org.testcontainers.images.PullPolicy -- Image pull policy will be performed by: DefaultPullPolicy()
20:49:32.586 [main @spec-scope-2121491280#27] INFO org.testcontainers.utility.ImageNameSubstitutor -- Image name substitution will be performed by: DefaultImageNameSubstitutor (composite of 'ConfigurationFileImageNameSubstitutor' and 'PrefixingImageNameSubstitutor')
20:49:37.054 [main @spec-scope-2121491280#27] INFO org.testcontainers.dockerclient.DockerClientProviderStrategy -- Found Docker environment with Environment variables, system properties and defaults. Resolved dockerHost=unix:///run/user/1003/podman/podman.sock
20:49:37.057 [main @spec-scope-2121491280#27] INFO org.testcontainers.DockerClientFactory -- Docker host IP address is localhost
20:49:37.204 [main @spec-scope-2121491280#27] INFO org.testcontainers.DockerClientFactory -- Connected to docker:
Server Version: 6.1.4
API Version: 1.44
Operating System: guix
Total Memory: 7748 MB
20:49:37.229 [main @spec-scope-2121491280#27] WARN org.testcontainers.utility.ResourceReaper --
********************************************************************************
Ryuk has been disabled. This can cause unexpected behavior in your environment.
********************************************************************************
20:49:37.257 [main @spec-scope-2121491280#27] INFO org.testcontainers.DockerClientFactory -- Checking the system...
20:49:37.257 [main @spec-scope-2121491280#27] INFO org.testcontainers.DockerClientFactory -- ✔︎ Docker server version should be at least 1.6.0
20:49:37.682 [main @spec-scope-2121491280#27] INFO tc.postgres:16-alpine -- Creating container for image: postgres:16-alpine
20:49:37.733 [main @spec-scope-2121491280#27] INFO org.testcontainers.utility.RegistryAuthLocator -- Failure when attempting to lookup auth config. Please ignore if you don't have images in an authenticated registry. Details: (dockerImageName: postgres:16-alpine, configFile: /root/.docker/config.json, configEnv: DOCKER_AUTH_CONFIG). Falling back to docker-java default behaviour. Exception message: Status 404: No config supplied. Checked in order: /root/.docker/config.json (file not found), DOCKER_AUTH_CONFIG (not set)
20:49:38.363 [main @spec-scope-2121491280#27] INFO tc.postgres:16-alpine -- Container postgres:16-alpine is starting: 556c44c481e4d26ff1d4acf1333466eade7a5b029bf29e6545b2a56236fcb054
20:49:41.629 [main @spec-scope-2121491280#27] INFO tc.postgres:16-alpine -- Container postgres:16-alpine started in PT3.947065936S
20:49:41.632 [main @spec-scope-2121491280#27] INFO tc.postgres:16-alpine -- Container is started (JDBC URL: jdbc:postgresql://localhost:33973/symbanta_test?loggerLevel=OFF)
20:49:45.521 [main @spec-scope-2121491280#27] INFO org.flywaydb.core.FlywayExecutor -- Database: jdbc:postgresql://localhost:33973/symbanta_test?loggerLevel=OFF (PostgreSQL 16.15)
20:49:46.129 [main @spec-scope-2121491280#27] INFO org.flywaydb.core.internal.schemahistory.JdbcTableSchemaHistory -- Schema history table "public"."flyway_schema_history" does not exist yet
20:49:46.169 [main @spec-scope-2121491280#27] INFO org.flywaydb.core.internal.command.DbValidate -- Successfully validated 4 migrations (execution time 00:00.209s)
20:49:46.256 [main @spec-scope-2121491280#27] INFO org.flywaydb.core.internal.schemahistory.JdbcTableSchemaHistory -- Creating Schema History table "public"."flyway_schema_history" ...
20:49:46.881 [main @spec-scope-2121491280#27] INFO org.flywaydb.core.internal.command.DbMigrate -- Current version of schema "public": << Empty Schema >>
20:49:47.051 [main @spec-scope-2121491280#27] INFO org.flywaydb.core.internal.command.DbMigrate -- Migrating schema "public" to version "1 - create symbanta schema"
20:49:47.327 [main @spec-scope-2121491280#27] INFO org.flywaydb.core.internal.command.DbMigrate -- Migrating schema "public" to version "3 - add users table"
20:49:47.473 [main @spec-scope-2121491280#27] INFO org.flywaydb.core.internal.command.DbMigrate -- Migrating schema "public" to version "4 - event context and event types"
20:49:47.690 [main @spec-scope-2121491280#27] INFO org.flywaydb.core.internal.command.DbMigrate -- Migrating schema "public" to version "5 - stats rollup tables"
20:49:47.857 [main @spec-scope-2121491280#27] INFO org.flywaydb.core.internal.command.DbMigrate -- Successfully applied 4 migrations to schema "public", now at version v5 (execution time 00:00.431s)
{"@timestamp":"2026-11-10T20:49:53.572861594+01:00","level":"INFO","logger_name":"org.apache.maven.surefire.booter.ForkedBooter","thread_name":"main @spec-scope-2121491280#27","message":"Starting ForkedBooter v3.5.6 using Java 25.0.4 with PID 28606 (started by root in /etc/byggsteg/job-clone/symbanta/trunk)"}
{"@timestamp":"2026-11-10T20:49:53.624748369+01:00","level":"INFO","logger_name":"org.apache.maven.surefire.booter.ForkedBooter","thread_name":"main @spec-scope-2121491280#27","message":"No active profile set, falling back to 1 default profile: \"seeder\""}
{"@timestamp":"2026-11-10T20:50:07.97261424+01:00","level":"INFO","logger_name":"org.springframework.data.repository.config.RepositoryConfigurationDelegate","thread_name":"main @spec-scope-2121491280#27","message":"Bootstrapping Spring Data JPA repositories in DEFAULT mode."}
{"@timestamp":"2026-11-10T20:50:08.455757419+01:00","level":"INFO","logger_name":"org.springframework.data.repository.config.RepositoryConfigurationDelegate","thread_name":"main @spec-scope-2121491280#27","message":"Finished Spring Data repository scanning in 461 ms. Found 4 JPA repository interfaces."}
{"@timestamp":"2026-11-10T20:50:10.578681728+01:00","level":"INFO","logger_name":"org.springframework.boot.tomcat.TomcatWebServer","thread_name":"main @spec-scope-2121491280#27","message":"Tomcat initialized with port 0 (http)"}
{"@timestamp":"2026-11-10T20:50:10.617491431+01:00","level":"INFO","logger_name":"org.apache.catalina.core.StandardService","thread_name":"main @spec-scope-2121491280#27","message":"Starting service [Tomcat]"}
{"@timestamp":"2026-11-10T20:50:10.617926553+01:00","level":"INFO","logger_name":"org.apache.catalina.core.StandardEngine","thread_name":"main @spec-scope-2121491280#27","message":"Starting Servlet engine: [Apache Tomcat/11.0.22]"}
{"@timestamp":"2026-11-10T20:50:10.804262694+01:00","level":"INFO","logger_name":"org.springframework.boot.web.context.servlet.WebApplicationContextInitializer","thread_name":"main @spec-scope-2121491280#27","message":"Root WebApplicationContext: initialization completed in 16670 ms"}
{"@timestamp":"2026-11-10T20:50:12.495002096+01:00","level":"INFO","logger_name":"org.hibernate.orm.jpa","thread_name":"main @spec-scope-2121491280#27","message":"HHH008540: Processing PersistenceUnitInfo [name: default]"}
{"@timestamp":"2026-11-10T20:50:12.641349665+01:00","level":"INFO","logger_name":"org.hibernate.orm.core","thread_name":"main @spec-scope-2121491280#27","message":"HHH000001: Hibernate ORM core version 7.4.1.Final"}
{"@timestamp":"2026-11-10T20:50:13.718308091+01:00","level":"INFO","logger_name":"org.springframework.orm.jpa.persistenceunit.SpringPersistenceUnitInfo","thread_name":"main @spec-scope-2121491280#27","message":"No LoadTimeWeaver setup: ignoring JPA class transformer"}
{"@timestamp":"2026-11-10T20:50:13.796483881+01:00","level":"INFO","logger_name":"com.zaxxer.hikari.HikariDataSource","thread_name":"main @spec-scope-2121491280#27","message":"HikariPool-1 - Starting..."}
{"@timestamp":"2026-11-10T20:50:13.866192427+01:00","level":"INFO","logger_name":"com.zaxxer.hikari.pool.HikariPool","thread_name":"main @spec-scope-2121491280#27","message":"HikariPool-1 - Added connection org.postgresql.jdbc.PgConnection@99a8a49"}
{"@timestamp":"2026-11-10T20:50:13.867309462+01:00","level":"INFO","logger_name":"com.zaxxer.hikari.HikariDataSource","thread_name":"main @spec-scope-2121491280#27","message":"HikariPool-1 - Start completed."}
{"@timestamp":"2026-11-10T20:50:14.056593976+01:00","level":"INFO","logger_name":"org.hibernate.orm.connections.pooling","thread_name":"main @spec-scope-2121491280#27","message":"HHH10001005: Database info:\n\tDatabase JDBC URL [jdbc:postgresql://localhost:33973/symbanta_test?loggerLevel=OFF]\n\tDatabase driver: PostgreSQL JDBC Driver\n\tDatabase dialect: PostgreSQLDialect\n\tDatabase version: 16.15\n\tDefault catalog/schema: symbanta_test/public\n\tAutocommit mode: undefined/unknown\n\tIsolation level: READ_COMMITTED [default READ_COMMITTED]\n\tJDBC fetch size: none\n\tPool: DataSourceConnectionProvider\n\tMinimum pool size: undefined/unknown\n\tMaximum pool size: undefined/unknown"}
{"@timestamp":"2026-11-10T20:50:16.555249156+01:00","level":"INFO","logger_name":"org.hibernate.orm.core","thread_name":"main @spec-scope-2121491280#27","message":"HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration)"}
{"@timestamp":"2026-11-10T20:50:16.56270243+01:00","level":"INFO","logger_name":"org.hibernate.orm.jdbc.batch","thread_name":"main @spec-scope-2121491280#27","message":"HHH100501: Automatic JDBC statement batching enabled (maximum batch size 500)"}
{"@timestamp":"2026-11-10T20:50:16.575359021+01:00","level":"INFO","logger_name":"org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean","thread_name":"main @spec-scope-2121491280#27","message":"Initialized JPA EntityManagerFactory for persistence unit 'default'"}
kotlin-logging: initializing... active logger factory: Slf4jLoggerFactory
{"@timestamp":"2026-11-10T20:50:16.996857934+01:00","level":"INFO","logger_name":"org.springframework.data.jpa.repository.query.QueryEnhancerFactories","thread_name":"main @spec-scope-2121491280#27","message":"Hibernate is in classpath; If applicable, HQL parser will be used."}
{"@timestamp":"2026-11-10T20:50:17.903056481+01:00","level":"INFO","logger_name":"org.springframework.security.config.annotation.authentication.configuration.InitializeAuthenticationProviderBeanManagerConfigurer$InitializeAuthenticationProviderManagerConfigurer","thread_name":"main @spec-scope-2121491280#27","message":"Global AuthenticationManager configured with AuthenticationProvider bean with name daoAuthenticationProvider"}
{"@timestamp":"2026-11-10T20:50:17.913034023+01:00","level":"WARN","logger_name":"org.springframework.security.config.annotation.authentication.configuration.InitializeUserDetailsBeanManagerConfigurer$InitializeUserDetailsManagerConfigurer","thread_name":"main @spec-scope-2121491280#27","message":"Global AuthenticationManager configured with an AuthenticationProvider bean. UserDetailsService beans will not be used by Spring Security for automatically configuring username/password login. Consider removing the AuthenticationProvider bean. Alternatively, consider using the UserDetailsService in a manually instantiated DaoAuthenticationProvider. If the current configuration is intentional, to turn off this warning, increase the logging level of 'org.springframework.security.config.annotation.authentication.configuration.InitializeUserDetailsBeanManagerConfigurer' to ERROR"}
{"@timestamp":"2026-11-10T20:50:21.249839435+01:00","level":"INFO","logger_name":"org.flywaydb.core.FlywayExecutor","thread_name":"main @spec-scope-2121491280#27","message":"Database: jdbc:postgresql://localhost:33973/symbanta_test?loggerLevel=OFF (PostgreSQL 16.15)"}
{"@timestamp":"2026-11-10T20:50:21.302191948+01:00","level":"INFO","logger_name":"org.flywaydb.core.internal.command.DbValidate","thread_name":"main @spec-scope-2121491280#27","message":"Successfully validated 4 migrations (execution time 00:00.019s)"}
{"@timestamp":"2026-11-10T20:50:21.3209939+01:00","level":"INFO","logger_name":"org.flywaydb.core.internal.command.DbMigrate","thread_name":"main @spec-scope-2121491280#27","message":"Current version of schema \"public\": 5"}
{"@timestamp":"2026-11-10T20:50:21.323536685+01:00","level":"INFO","logger_name":"org.flywaydb.core.internal.command.DbMigrate","thread_name":"main @spec-scope-2121491280#27","message":"Schema \"public\" is up to date. No migration necessary."}
{"@timestamp":"2026-11-10T20:50:23.029975614+01:00","level":"INFO","logger_name":"org.springframework.boot.actuate.endpoint.web.EndpointLinksResolver","thread_name":"main @spec-scope-2121491280#27","message":"Exposing 3 endpoints beneath base path '/actuator'"}
{"@timestamp":"2026-11-10T20:50:23.187494975+01:00","level":"INFO","logger_name":"org.springframework.boot.tomcat.TomcatWebServer","thread_name":"main @spec-scope-2121491280#27","message":"Tomcat started on port 45117 (http) with context path '/'"}
{"@timestamp":"2026-11-10T20:50:23.234862669+01:00","level":"INFO","logger_name":"org.apache.maven.surefire.booter.ForkedBooter","thread_name":"main @spec-scope-2121491280#27","message":"Started ForkedBooter in 34.56 seconds (process running for 63.059)"}
{"@timestamp":"2026-11-10T20:50:23.472131151+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.inbound.seeder.PropertySeeder","thread_name":"main @spec-scope-2121491280#27","message":"Seeding 5 properties..."}
{"@timestamp":"2026-11-10T20:50:23.763458247+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-2121491280#27","message":"Saving property with ID: 7132c5e3-08ee-4958-9d96-d7cd5c44bd3b"}
{"@timestamp":"2026-11-10T20:50:23.885005154+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.inbound.seeder.PropertySeeder","thread_name":"main @spec-scope-2121491280#27","message":"Property created: wikimusic.jointhefreeworld.org"}
{"@timestamp":"2026-11-10T20:50:23.894080811+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-2121491280#27","message":"Saving property with ID: 189dac7f-c704-42b4-9015-ab39a7b734bc"}
{"@timestamp":"2026-11-10T20:50:23.901268817+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.inbound.seeder.PropertySeeder","thread_name":"main @spec-scope-2121491280#27","message":"Property created: jointhefreeworld.org"}
{"@timestamp":"2026-11-10T20:50:23.906701708+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-2121491280#27","message":"Saving property with ID: 66816a4f-1a24-447f-9054-62ed5107ddc5"}
{"@timestamp":"2026-11-10T20:50:23.918203827+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.inbound.seeder.PropertySeeder","thread_name":"main @spec-scope-2121491280#27","message":"Property created: byggsteg.jointhefreeworld.org"}
{"@timestamp":"2026-11-10T20:50:23.921834826+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-2121491280#27","message":"Saving property with ID: 05aa3195-6f88-4290-85d8-1f519fdc5445"}
{"@timestamp":"2026-11-10T20:50:23.930372936+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.inbound.seeder.PropertySeeder","thread_name":"main @spec-scope-2121491280#27","message":"Property created: lucidplan.jointhefreeworld.org"}
{"@timestamp":"2026-11-10T20:50:23.933926028+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-2121491280#27","message":"Saving property with ID: 5fe16b03-a839-431c-b00d-bce7ceb43234"}
{"@timestamp":"2026-11-10T20:50:23.940702796+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.inbound.seeder.PropertySeeder","thread_name":"main @spec-scope-2121491280#27","message":"Property created: carvoeirowaterfun.com"}
{"@timestamp":"2026-11-10T20:50:23.941161844+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.auth.adapter.inbound.seeder.UserSeeder","thread_name":"main @spec-scope-2121491280#27","message":"Seeding 0 users..."}
{"@timestamp":"2026-11-10T20:50:24.026613081+01:00","level":"INFO","logger_name":"org.springframework.boot.tomcat.GracefulShutdown","thread_name":"main @spec-scope-2121491280#27","message":"Commencing graceful shutdown. Waiting for active requests to complete"}
{"@timestamp":"2026-11-10T20:50:24.034130411+01:00","level":"INFO","logger_name":"org.springframework.boot.tomcat.GracefulShutdown","thread_name":"tomcat-shutdown","message":"Graceful shutdown complete"}
{"@timestamp":"2026-11-10T20:50:24.061311135+01:00","level":"INFO","logger_name":"org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean","thread_name":"main @spec-scope-2121491280#27","message":"Closing JPA EntityManagerFactory for persistence unit 'default'"}
{"@timestamp":"2026-11-10T20:50:24.073211831+01:00","level":"INFO","logger_name":"com.zaxxer.hikari.HikariDataSource","thread_name":"main @spec-scope-2121491280#27","message":"HikariPool-1 - Shutdown initiated..."}
{"@timestamp":"2026-11-10T20:50:24.078152754+01:00","level":"INFO","logger_name":"com.zaxxer.hikari.HikariDataSource","thread_name":"main @spec-scope-2121491280#27","message":"HikariPool-1 - Shutdown completed."}
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 53.54 s -- in org.jointhefreeworld.symbanta.ApplicationContextSpec
[INFO] Running org.jointhefreeworld.symbanta.feature.console.adapter.inbound.web.LogsControllerSpec
OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended
{"@timestamp":"2026-11-10T20:50:24.815828009+01:00","level":"INFO","logger_name":"org.springframework.mock.web.MockServletContext","thread_name":"main @coroutine#3","message":"Initializing Spring TestDispatcherServlet ''"}
{"@timestamp":"2026-11-10T20:50:24.820326759+01:00","level":"INFO","logger_name":"org.springframework.test.web.servlet.TestDispatcherServlet","thread_name":"main @coroutine#3","message":"Initializing Servlet ''"}
{"@timestamp":"2026-11-10T20:50:24.820751877+01:00","level":"INFO","logger_name":"org.springframework.test.web.servlet.TestDispatcherServlet","thread_name":"main @coroutine#3","message":"Completed initialization in 0 ms"}
[INFO] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.295 s -- in org.jointhefreeworld.symbanta.feature.console.adapter.inbound.web.LogsControllerSpec
[INFO] Running org.jointhefreeworld.symbanta.feature.console.adapter.outbound.persistence.JpaConsoleLogAdapterSpec
{"@timestamp":"2026-11-10T20:50:25.518341414+01:00","level":"INFO","logger_name":"org.springframework.data.repository.config.RepositoryConfigurationDelegate","thread_name":"main @coroutine#4","message":"Bootstrapping Spring Data JPA repositories in DEFAULT mode."}
{"@timestamp":"2026-11-10T20:50:25.760202699+01:00","level":"INFO","logger_name":"org.springframework.data.repository.config.RepositoryConfigurationDelegate","thread_name":"main @coroutine#4","message":"Finished Spring Data repository scanning in 232 ms. Found 4 JPA repository interfaces."}
{"@timestamp":"2026-11-10T20:50:25.838590977+01:00","level":"INFO","logger_name":"org.hibernate.orm.jpa","thread_name":"main @coroutine#4","message":"HHH008540: Processing PersistenceUnitInfo [name: default]"}
{"@timestamp":"2026-11-10T20:50:25.882763947+01:00","level":"INFO","logger_name":"org.springframework.orm.jpa.persistenceunit.SpringPersistenceUnitInfo","thread_name":"main @coroutine#4","message":"No LoadTimeWeaver setup: ignoring JPA class transformer"}
{"@timestamp":"2026-11-10T20:50:25.927050837+01:00","level":"INFO","logger_name":"org.hibernate.orm.connections.pooling","thread_name":"main @coroutine#4","message":"HHH10001005: Database info:\n\tDatabase JDBC URL [jdbc:postgresql://localhost:33973/symbanta_test?loggerLevel=OFF]\n\tDatabase driver: PostgreSQL JDBC Driver\n\tDatabase dialect: PostgreSQLDialect\n\tDatabase version: 16.15\n\tDefault catalog/schema: symbanta_test/public\n\tAutocommit mode: undefined/unknown\n\tIsolation level: READ_COMMITTED [default READ_COMMITTED]\n\tJDBC fetch size: none\n\tPool: DataSourceConnectionProvider\n\tMinimum pool size: undefined/unknown\n\tMaximum pool size: undefined/unknown"}
{"@timestamp":"2026-11-10T20:50:26.046427649+01:00","level":"INFO","logger_name":"org.hibernate.orm.core","thread_name":"main @coroutine#4","message":"HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration)"}
{"@timestamp":"2026-11-10T20:50:26.051658778+01:00","level":"INFO","logger_name":"org.hibernate.orm.jdbc.batch","thread_name":"main @coroutine#4","message":"HHH100501: Automatic JDBC statement batching enabled (maximum batch size 500)"}
{"@timestamp":"2026-11-10T20:50:26.052121963+01:00","level":"INFO","logger_name":"org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean","thread_name":"main @coroutine#4","message":"Initialized JPA EntityManagerFactory for persistence unit 'default'"}
{"@timestamp":"2026-11-10T20:50:26.413446697+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-35828722#40","message":"Saving property with ID: 733b3c91-1e26-45e9-a05b-eb6a3c75f88f"}
[INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.311 s -- in org.jointhefreeworld.symbanta.feature.console.adapter.outbound.persistence.JpaConsoleLogAdapterSpec
[INFO] Running org.jointhefreeworld.symbanta.feature.console.service.ConsoleLogServiceSpec
[INFO] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.206 s -- in org.jointhefreeworld.symbanta.feature.console.service.ConsoleLogServiceSpec
[INFO] Running org.jointhefreeworld.symbanta.feature.events.adapter.outbound.persistence.JpaEventStoreColumnsSpec
{"@timestamp":"2026-11-10T20:50:27.166284052+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-99681584#45","message":"Saving property with ID: 95d1ba36-a403-44a5-b3c4-4d1e5f7c9fec"}
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.224 s -- in org.jointhefreeworld.symbanta.feature.events.adapter.outbound.persistence.JpaEventStoreColumnsSpec
[INFO] Running org.jointhefreeworld.symbanta.feature.events.adapter.outbound.persistence.JpaEventStoreSpec
{"@timestamp":"2026-11-10T20:50:27.317204281+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1043884407#46","message":"Saving property with ID: 88d9854d-5eef-45ab-9974-50c39ba86eb3"}
{"@timestamp":"2026-11-10T20:50:27.51934756+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1043884407#48","message":"Saving property with ID: ee7037cc-b8c9-4bca-b9cd-bbb6b79decb2"}
[INFO] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.367 s -- in org.jointhefreeworld.symbanta.feature.events.adapter.outbound.persistence.JpaEventStoreSpec
[INFO] Running org.jointhefreeworld.symbanta.feature.events.adapter.outbound.queue.BatchingEventDispatcherSpec
[INFO] Running org.jointhefreeworld.symbanta.feature.events.adapter.outbound.queue.BatchingEventDispatcherSpec
[INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.612 s -- in org.jointhefreeworld.symbanta.feature.events.adapter.outbound.queue.BatchingEventDispatcherSpec
[INFO] Running org.jointhefreeworld.symbanta.feature.events.adapter.outbound.queue.BatchingEventDispatcherSpec
{"@timestamp":"2026-11-10T20:50:28.358806547+01:00","level":"ERROR","logger_name":"org.jointhefreeworld.symbanta.feature.events.adapter.outbound.queue.BatchingEventDispatcher","thread_name":"DefaultDispatcher-worker-6 @coroutine#56","message":"Failed to persist a batch of 3 event(s)","stack_trace":"java.lang.IllegalStateException: database is down\n\tat org.jointhefreeworld.symbanta.feature.events.adapter.outbound.queue.BatchingEventDispatcherSpec$1$3$1$dispatcher$1.persist(BatchingEventDispatcherSpec.kt:151)\n\tat org.jointhefreeworld.symbanta.feature.events.adapter.outbound.queue.BatchingEventDispatcher.flush(BatchingEventDispatcher.kt:182)\n\tat org.jointhefreeworld.symbanta.feature.events.adapter.outbound.queue.BatchingEventDispatcher.consume(BatchingEventDispatcher.kt:146)\n\tat org.jointhefreeworld.symbanta.feature.events.adapter.outbound.queue.BatchingEventDispatcher.access$consume(BatchingEventDispatcher.kt:50)\n\tat org.jointhefreeworld.symbanta.feature.events.adapter.outbound.queue.BatchingEventDispatcher$consume$1.invokeSuspend(BatchingEventDispatcher.kt)\n\tat kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:34)\n\tat kotlinx.coroutines.internal.ScopeCoroutine.afterResume(Scopes.kt:35)\n\tat kotlinx.coroutines.AbstractCoroutine.resumeWith(AbstractCoroutine.kt:101)\n\tat kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:47)\n\tat kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:98)\n\tat kotlinx.coroutines.internal.LimitedDispatcher$Worker.run(LimitedDispatcher.kt:124)\n\tat kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:89)\n\tat kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:586)\n\tat kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:820)\n\tat kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:717)\n\tat kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:704)\n"}
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.028 s -- in org.jointhefreeworld.symbanta.feature.events.adapter.outbound.queue.BatchingEventDispatcherSpec
[INFO] Running org.jointhefreeworld.symbanta.feature.events.adapter.outbound.queue.BatchingEventDispatcherSpec
{"@timestamp":"2026-11-10T20:50:28.396074987+01:00","level":"WARN","logger_name":"org.jointhefreeworld.symbanta.feature.events.adapter.outbound.queue.BatchingEventDispatcher","thread_name":"main @spec-scope-1373703521#51","message":"Event queue is full (1 slots); dropped 1 event(s) so far. Consider raising application.ingestion.queue-capacity or the database pool size."}
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.034 s -- in org.jointhefreeworld.symbanta.feature.events.adapter.outbound.queue.BatchingEventDispatcherSpec
[INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.804 s -- in org.jointhefreeworld.symbanta.feature.events.adapter.outbound.queue.BatchingEventDispatcherSpec
[INFO] Running org.jointhefreeworld.symbanta.feature.events.service.EventIngestionServiceSpec
[INFO] Running org.jointhefreeworld.symbanta.feature.events.service.EventIngestionServiceSpec
[INFO] Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.098 s -- in org.jointhefreeworld.symbanta.feature.events.service.EventIngestionServiceSpec
[INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.131 s -- in org.jointhefreeworld.symbanta.feature.events.service.EventIngestionServiceSpec
[INFO] Running org.jointhefreeworld.symbanta.feature.events.service.EventPersistenceServiceSpec
[INFO] Running org.jointhefreeworld.symbanta.feature.events.service.EventPersistenceServiceSpec
{"@timestamp":"2026-11-10T20:50:28.607299662+01:00","level":"WARN","logger_name":"org.jointhefreeworld.symbanta.feature.events.service.EventPersistenceService","thread_name":"main @spec-scope-1439005620#61","message":"Discarded 1 event(s) of a batch of 2 for unregistered domain(s): [unknown.example]"}
{"@timestamp":"2026-11-10T20:50:28.612729619+01:00","level":"WARN","logger_name":"org.jointhefreeworld.symbanta.feature.events.service.EventPersistenceService","thread_name":"main @spec-scope-1439005620#61","message":"Discarded 1 event(s) of a batch of 1 for unregistered domain(s): [unknown.example]"}
[INFO] Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.055 s -- in org.jointhefreeworld.symbanta.feature.events.service.EventPersistenceServiceSpec
[INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.085 s -- in org.jointhefreeworld.symbanta.feature.events.service.EventPersistenceServiceSpec
[INFO] Running org.jointhefreeworld.symbanta.feature.eventtypes.adapter.inbound.web.EventTypesControllerSpec
{"@timestamp":"2026-11-10T20:50:28.930736578+01:00","level":"INFO","logger_name":"org.springframework.mock.web.MockServletContext","thread_name":"main @coroutine#11","message":"Initializing Spring TestDispatcherServlet ''"}
{"@timestamp":"2026-11-10T20:50:28.930879582+01:00","level":"INFO","logger_name":"org.springframework.test.web.servlet.TestDispatcherServlet","thread_name":"main @coroutine#11","message":"Initializing Servlet ''"}
{"@timestamp":"2026-11-10T20:50:28.937427947+01:00","level":"INFO","logger_name":"org.springframework.test.web.servlet.TestDispatcherServlet","thread_name":"main @coroutine#11","message":"Completed initialization in 0 ms"}
[INFO] Running org.jointhefreeworld.symbanta.feature.eventtypes.adapter.inbound.web.EventTypesControllerSpec
[INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.067 s -- in org.jointhefreeworld.symbanta.feature.eventtypes.adapter.inbound.web.EventTypesControllerSpec
[INFO] Running org.jointhefreeworld.symbanta.feature.eventtypes.adapter.inbound.web.EventTypesControllerSpec
[INFO] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.167 s -- in org.jointhefreeworld.symbanta.feature.eventtypes.adapter.inbound.web.EventTypesControllerSpec
[INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.564 s -- in org.jointhefreeworld.symbanta.feature.eventtypes.adapter.inbound.web.EventTypesControllerSpec
[INFO] Running org.jointhefreeworld.symbanta.feature.eventtypes.adapter.outbound.persistence.JpaEventTypeRepositorySpec
{"@timestamp":"2026-11-10T20:50:29.303032933+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-406962353#64","message":"Saving property with ID: ac492e88-21be-46fe-a9c8-2fab4d1c0fb2"}
{"@timestamp":"2026-11-10T20:50:29.547492016+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-406962353#65","message":"Saving property with ID: 9e42c069-e06a-41f5-a51e-2240f1ce8fc0"}
{"@timestamp":"2026-11-10T20:50:29.674590863+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-406962353#66","message":"Saving property with ID: c956d977-603c-422f-ace4-ecf4aeaf792b"}
{"@timestamp":"2026-11-10T20:50:29.864974968+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-406962353#67","message":"Saving property with ID: aaaeb514-e3d9-4dad-850b-ffc488ad3d05"}
{"@timestamp":"2026-11-10T20:50:29.888319585+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-406962353#67","message":"Saving property with ID: 530b37c6-365b-4151-9b2f-f89441bf4aeb"}
[INFO] Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.878 s -- in org.jointhefreeworld.symbanta.feature.eventtypes.adapter.outbound.persistence.JpaEventTypeRepositorySpec
[INFO] Running org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepositorySpec
Warning, type class java.time.Instant used in data testing does not have a stable toString()
Warning, type class java.time.Instant used in data testing does not have a stable toString()
Warning, type class org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepositorySpec$1$3$SaveTestCase used in data testing does not have a stable toString()
[INFO] Running org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepositorySpec
{"@timestamp":"2026-11-10T20:50:30.275524212+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-2045982110#68","message":"Saving property with ID: ea08cc08-e82c-40b4-bf87-f93897af3949"}
Warning, type class java.time.Instant used in data testing does not have a stable toString()
Warning, type class java.time.Instant used in data testing does not have a stable toString()
Warning, type class org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepositorySpec$1$3$SaveTestCase used in data testing does not have a stable toString()
WARN: Duplicated test name SaveTestCase. To disable this message, set DuplicateTestNameMode to Silent.
{"@timestamp":"2026-11-10T20:50:30.386924383+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-2045982110#68","message":"Saving property with ID: b22c37fc-7e8a-42e6-8345-257207a9be6d"}
Warning, type class java.time.Instant used in data testing does not have a stable toString()
Warning, type class java.time.Instant used in data testing does not have a stable toString()
Warning, type class org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepositorySpec$1$3$SaveTestCase used in data testing does not have a stable toString()
WARN: Duplicated test name SaveTestCase. To disable this message, set DuplicateTestNameMode to Silent.
{"@timestamp":"2026-11-10T20:50:30.467220034+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-2045982110#68","message":"Saving property with ID: 730ad6c2-dfb7-44a4-ab15-2c14f6bdf983"}
Warning, type class java.time.Instant used in data testing does not have a stable toString()
Warning, type class java.time.Instant used in data testing does not have a stable toString()
Warning, type class org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepositorySpec$1$3$SaveTestCase used in data testing does not have a stable toString()
WARN: Duplicated test name SaveTestCase. To disable this message, set DuplicateTestNameMode to Silent.
{"@timestamp":"2026-11-10T20:50:30.565634681+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-2045982110#68","message":"Saving property with ID: 3602e201-9f53-4b6d-8052-47549b08c363"}
[INFO] Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.379 s -- in org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepositorySpec
Warning, type class java.time.Instant used in data testing does not have a stable toString()
Warning, type class org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepositorySpec$1$4$UpsertTestCase used in data testing does not have a stable toString()
[INFO] Running org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepositorySpec
{"@timestamp":"2026-11-10T20:50:30.704321146+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-2045982110#69","message":"Saving property with ID: 42f674ac-df30-4f3b-80af-2c5c5616dd40"}
Warning, type class java.time.Instant used in data testing does not have a stable toString()
Warning, type class java.time.Instant used in data testing does not have a stable toString()
Warning, type class org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepositorySpec$1$4$UpsertTestCase used in data testing does not have a stable toString()
WARN: Duplicated test name UpsertTestCase. To disable this message, set DuplicateTestNameMode to Silent.
{"@timestamp":"2026-11-10T20:50:30.789155686+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-2045982110#69","message":"Saving property with ID: 42f674ac-df30-4f3b-80af-2c5c5616dd40"}
[INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.163 s -- in org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepositorySpec
{"@timestamp":"2026-11-10T20:50:30.871936255+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-2045982110#70","message":"Saving property with ID: 8985710f-b4cf-440c-9647-5e31a76d96fc"}
{"@timestamp":"2026-11-10T20:50:30.896761615+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-2045982110#70","message":"Saving property with ID: 7e132730-4686-422d-8638-0f4faa6c86c7"}
{"@timestamp":"2026-11-10T20:50:31.010462809+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-2045982110#71","message":"Saving property with ID: da3fbe91-ce23-42a4-a900-32ded6da59eb"}
{"@timestamp":"2026-11-10T20:50:31.033461558+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-2045982110#71","message":"Saving property with ID: 0c46f6c1-b591-426e-8186-e026e6c616c9"}
[INFO] Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.107 s -- in org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepositorySpec
[INFO] Running org.jointhefreeworld.symbanta.feature.statistics.adapter.inbound.web.StatsRoutesControllerSpec
{"@timestamp":"2026-11-10T20:50:31.411308864+01:00","level":"INFO","logger_name":"org.springframework.mock.web.MockServletContext","thread_name":"main @coroutine#14","message":"Initializing Spring TestDispatcherServlet ''"}
{"@timestamp":"2026-11-10T20:50:31.416155135+01:00","level":"INFO","logger_name":"org.springframework.test.web.servlet.TestDispatcherServlet","thread_name":"main @coroutine#14","message":"Initializing Servlet ''"}
{"@timestamp":"2026-11-10T20:50:31.416285051+01:00","level":"INFO","logger_name":"org.springframework.test.web.servlet.TestDispatcherServlet","thread_name":"main @coroutine#14","message":"Completed initialization in 0 ms"}
[INFO] Running org.jointhefreeworld.symbanta.feature.statistics.adapter.inbound.web.StatsRoutesControllerSpec
[INFO] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.121 s -- in org.jointhefreeworld.symbanta.feature.statistics.adapter.inbound.web.StatsRoutesControllerSpec
[INFO] Running org.jointhefreeworld.symbanta.feature.statistics.adapter.inbound.web.StatsRoutesControllerSpec
[INFO] Running org.jointhefreeworld.symbanta.feature.statistics.adapter.inbound.web.StatsRoutesControllerSpec
[INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.044 s -- in org.jointhefreeworld.symbanta.feature.statistics.adapter.inbound.web.StatsRoutesControllerSpec
{"@timestamp":"2026-11-10T20:50:31.679819995+01:00","level":"ERROR","logger_name":"org.jointhefreeworld.symbanta.shared.adapter.inbound.web.GlobalExceptionControllerAdvice","thread_name":"main @spec-scope-1848700215#75","message":"Unhandled error while serving request","stack_trace":"java.lang.RuntimeException: Database connection failed\n\tat org.jointhefreeworld.symbanta.feature.statistics.adapter.inbound.web.StatsRoutesController.getRouteStats(StatsRoutesController.kt:28)\n\tat java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\n\tat java.base/java.lang.reflect.Method.invoke(Method.java:565)\n\tat kotlin.reflect.jvm.internal.calls.CallerImpl$Method.callMethod(CallerImpl.kt:90)\n\tat kotlin.reflect.jvm.internal.calls.CallerImpl$Method$Instance.call(CallerImpl.kt:106)\n\tat kotlin.reflect.jvm.internal.ReflectKCallableKt.callDefaultMethod(ReflectKCallable.kt:165)\n\tat kotlin.reflect.jvm.internal.ReflectKCallableImpl.default$callBy(ReflectKCallableImpl.kt:70)\n\tat kotlin.reflect.jvm.internal.ReflectKCallableImpl.callBy(ReflectKCallableImpl.kt:10)\n\tat org.springframework.web.method.support.InvocableHandlerMethod$KotlinDelegate.invokeFunction(InvocableHandlerMethod.java:331)\n\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:250)\n\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:184)\n\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)\n\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:934)\n\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:853)\n\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:86)\n\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)\n\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:866)\n\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1000)\n\tat org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:892)\n\tat jakarta.servlet.http.HttpServlet.service(HttpServlet.java:622)\n\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:874)\n\tat org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:72)\n\tat jakarta.servlet.http.HttpServlet.service(HttpServlet.java:710)\n\tat org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:160)\n\tat org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:127)\n\tat org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:199)\n\tat org.springframework.test.web.servlet.MockHttpServletRequestDsl.perform$spring_test(MockHttpServletRequestDsl.kt:237)\n\tat org.springframework.test.web.servlet.MockMvcExtensionsKt.get(MockMvcExtensions.kt:32)\n\tat org.jointhefreeworld.symbanta.feature.statistics.adapter.inbound.web.StatsRoutesControllerSpec._init_$lambda$0$performGetRoutes(StatsRoutesControllerSpec.kt:50)\n\tat org.jointhefreeworld.symbanta.feature.statistics.adapter.inbound.web.StatsRoutesControllerSpec._init_$lambda$0$performGetRoutes$default(StatsRoutesControllerSpec.kt:44)\n\tat org.jointhefreeworld.symbanta.feature.statistics.adapter.inbound.web.StatsRoutesControllerSpec$1$3$3.invokeSuspend(StatsRoutesControllerSpec.kt:175)\n\tat org.jointhefreeworld.symbanta.feature.statistics.adapter.inbound.web.StatsRoutesControllerSpec$1$3$3.invoke(StatsRoutesControllerSpec.kt)\n\tat org.jointhefreeworld.symbanta.feature.statistics.adapter.inbound.web.StatsRoutesControllerSpec$1$3$3.invoke(StatsRoutesControllerSpec.kt)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$base$1.invoke(TestCaseExecutor.kt:118)\n\tat io.kotest.engine.test.TestInvocationInterceptor$runBeforeTestAfter$executeWithBeforeAfter$1.invoke(TestInvocationInterceptor.kt:93)\n\tat io.kotest.engine.test.interceptors.InvocationTimeoutInterceptor$intercept$3.invokeSuspend(InvocationTimeoutInterceptor.kt:49)\n\tat io.kotest.engine.test.interceptors.InvocationTimeoutInterceptor$intercept$3.invoke(InvocationTimeoutInterceptor.kt)\n\tat io.kotest.engine.test.interceptors.InvocationTimeoutInterceptor$intercept$3.invoke(InvocationTimeoutInterceptor.kt)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndspatched(Undispatched.kt:66)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturnIgnoreTimeout(Undispatched.kt:50)\n\tat kotlinx.coroutines.TimeoutKt.setupTimeout(Timeout.kt:149)\n\tat kotlinx.coroutines.TimeoutKt.withTimeoutOrNull(Timeout.kt:105)\n\tat kotlinx.coroutines.TimeoutKt.withTimeoutOrNull-KLykuaI(Timeout.kt:137)\n\tat io.kotest.engine.test.interceptors.TimeoutInterceptorKt.withAppropriateTimeoutOrNull-KLykuaI(TimeoutInterceptor.kt:103)\n\tat io.kotest.engine.test.interceptors.InvocationTimeoutInterceptor.intercept(InvocationTimeoutInterceptor.kt:48)\n\tat io.kotest.engine.test.TestInvocationInterceptor$runBeforeTestAfter$wrappedTest$1$1.invoke(TestInvocationInterceptor.kt:102)\n\tat io.kotest.engine.test.TestInvocationInterceptor.runBeforeTestAfter(TestInvocationInterceptor.kt:105)\n\tat io.kotest.engine.test.TestInvocationInterceptor.access$runBeforeTestAfter(TestInvocationInterceptor.kt:18)\n\tat io.kotest.engine.test.TestInvocationInterceptor$invokeWithRetry$2.invokeSuspend(TestInvocationInterceptor.kt:53)\n\tat io.kotest.engine.test.TestInvocationInterceptor$invokeWithRetry$2.invoke(TestInvocationInterceptor.kt)\n\tat io.kotest.engine.test.TestInvocationInterceptor$invokeWithRetry$2.invoke(TestInvocationInterceptor.kt)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndspatched(Undispatched.kt:66)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:43)\n\tat kotlinx.coroutines.CoroutineScopeKt.coroutineScope(CoroutineScope.kt:286)\n\tat io.kotest.engine.test.TestInvocationInterceptor.invokeWithRetry(TestInvocationInterceptor.kt:51)\n\tat io.kotest.engine.test.TestInvocationInterceptor.intercept(TestInvocationInterceptor.kt:33)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.MarkOpenTest4jAbortedExceptionsAsSkippedTestInterceptor.intercept(MarkOpenTest4jAbortedExceptionsAsSkippedTestInterceptor.kt:22)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.HandleSkippedExceptionsTestInterceptor.intercept(HandleSkippedExceptionsTestInterceptor.kt:15)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.TimeoutInterceptor$intercept$3.invokeSuspend(TimeoutInterceptor.kt:61)\n\tat io.kotest.engine.test.interceptors.TimeoutInterceptor$intercept$3.invoke(TimeoutInterceptor.kt)\n\tat io.kotest.engine.test.interceptors.TimeoutInterceptor$intercept$3.invoke(TimeoutInterceptor.kt)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndspatched(Undispatched.kt:66)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturnIgnoreTimeout(Undispatched.kt:50)\n\tat kotlinx.coroutines.TimeoutKt.setupTimeout(Timeout.kt:149)\n\tat kotlinx.coroutines.TimeoutKt.withTimeout(Timeout.kt:44)\n\tat kotlinx.coroutines.TimeoutKt.withTimeout-KLykuaI(Timeout.kt:72)\n\tat io.kotest.engine.test.interceptors.TimeoutInterceptorKt.withAppropriateTimeout-KLykuaI(TimeoutInterceptor.kt:90)\n\tat io.kotest.engine.test.interceptors.TimeoutInterceptor.intercept(TimeoutInterceptor.kt:60)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.CoroutineDebugProbeInterceptor.intercept(CoroutineDebugProbeInterceptor.kt:33)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.BlockedThreadTimeoutInterceptor.intercept(BlockedThreadTimeoutInterceptor.kt:87)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.CoroutineLoggingInterceptor.intercept(CoroutineLoggingInterceptor.kt:38)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.SoftAssertInterceptor.intercept(SoftAssertInterceptor.kt:26)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.AssertionModeInterceptor.intercept(AssertionModeInterceptor.kt:29)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.LifecycleInterceptor.intercept(LifecycleInterceptor.kt:48)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.TestCaseExtensionInterceptor$intercept$2.invoke(TestCaseExtensionInterceptor.kt:21)\n\tat io.kotest.engine.test.TestExtensions.intercept(TestExtensions.kt:151)\n\tat io.kotest.engine.test.interceptors.TestCaseExtensionInterceptor.intercept(TestCaseExtensionInterceptor.kt:21)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.TestEnabledCheckInterceptor.intercept(TestEnabledCheckInterceptor.kt:41)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.CoroutineErrorCollectorInterceptor$intercept$3.invokeSuspend(CoroutineErrorCollectorInterceptor.kt:39)\n\tat io.kotest.engine.test.interceptors.CoroutineErrorCollectorInterceptor$intercept$3.invoke(CoroutineErrorCollectorInterceptor.kt)\n\tat io.kotest.engine.test.interceptors.CoroutineErrorCollectorInterceptor$intercept$3.invoke(CoroutineErrorCollectorInterceptor.kt)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndspatched(Undispatched.kt:66)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:43)\n\tat kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:165)\n\tat kotlinx.coroutines.BuildersKt.withContext(Unknown Source)\n\tat io.kotest.engine.test.interceptors.CoroutineErrorCollectorInterceptor.intercept(CoroutineErrorCollectorInterceptor.kt:38)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.CoroutineDispatcherFactoryTestInterceptor.intercept(CoroutineDispatcherFactoryTestInterceptor.kt:41)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.SupervisorScopeInterceptor$intercept$2.invokeSuspend(SupervisorScopeInterceptor.kt:23)\n\tat io.kotest.engine.test.interceptors.SupervisorScopeInterceptor$intercept$2.invoke(SupervisorScopeInterceptor.kt)\n\tat io.kotest.engine.test.interceptors.SupervisorScopeInterceptor$intercept$2.invoke(SupervisorScopeInterceptor.kt)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndspatched(Undispatched.kt:66)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:43)\n\tat kotlinx.coroutines.SupervisorKt.supervisorScope(Supervisor.kt:56)\n\tat io.kotest.engine.test.interceptors.SupervisorScopeInterceptor.intercept(SupervisorScopeInterceptor.kt:22)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.InvocationCountCheckInterceptor.intercept(InvocationCountCheckInterceptor.kt:33)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.TestFinishedInterceptor.intercept(TestFinishedInterceptor.kt:23)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.FailFastInterceptor.intercept(FailFastInterceptor.kt:24)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.TestNameContextInterceptor$intercept$2.invokeSuspend(TestNameContextInterceptor.kt:21)\n\tat io.kotest.engine.test.interceptors.TestNameContextInterceptor$intercept$2.invoke(TestNameContextInterceptor.kt)\n\tat io.kotest.engine.test.interceptors.TestNameContextInterceptor$intercept$2.invoke(TestNameContextInterceptor.kt)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndspatched(Undispatched.kt:66)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:43)\n\tat kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:165)\n\tat kotlinx.coroutines.BuildersKt.withContext(Unknown Source)\n\tat io.kotest.engine.test.interceptors.TestNameContextInterceptor.intercept(TestNameContextInterceptor.kt:20)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.DescriptorPathContextInterceptor$intercept$2.invokeSuspend(DescriptorPathContextInterceptor.kt:21)\n\tat io.kotest.engine.test.interceptors.DescriptorPathContextInterceptor$intercept$2.invoke(DescriptorPathContextInterceptor.kt)\n\tat io.kotest.engine.test.interceptors.DescriptorPathContextInterceptor$intercept$2.invoke(DescriptorPathContextInterceptor.kt)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndspatched(Undispatched.kt:66)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:43)\n\tat kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:165)\n\tat kotlinx.coroutines.BuildersKt.withContext(Unknown Source)\n\tat io.kotest.engine.test.interceptors.DescriptorPathContextInterceptor.intercept(DescriptorPathContextInterceptor.kt:20)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.TestCaseExecutor.execute(TestCaseExecutor.kt:124)\n\tat io.kotest.engine.spec.execution.SingleInstanceSpecExecutor.executeTest(SingleInstanceSpecExecutor.kt:76)\n\tat io.kotest.engine.spec.execution.SingleInstanceSpecExecutor.access$executeTest(SingleInstanceSpecExecutor.kt:26)\n\tat io.kotest.engine.spec.execution.SingleInstanceSpecExecutor$executeTest$result$1.invokeSuspend(SingleInstanceSpecExecutor.kt:82)\n\tat io.kotest.engine.spec.execution.SingleInstanceSpecExecutor$executeTest$result$1.invoke(SingleInstanceSpecExecutor.kt)\n\tat io.kotest.engine.spec.execution.SingleInstanceSpecExecutor$executeTest$result$1.invoke(SingleInstanceSpecExecutor.kt)\n\tat io.kotest.core.test.DefaultTestScope.registerTest(TestScope.kt:75)\n\tat io.kotest.engine.test.scopes.TestScopeWithCoroutineContext.registerTest(scopes.kt)\n\tat io.kotest.core.spec.style.scopes.AbstractContainerScope.registerTest$suspendImpl(ContainerScope.kt:260)\n\tat io.kotest.core.spec.style.scopes.AbstractContainerScope.registerTest(ContainerScope.kt)\n\tat io.kotest.core.spec.style.scopes.FunSpecContainerScope.test(FunSpecContainerScope.kt:126)\n\tat org.jointhefreeworld.symbanta.feature.statistics.adapter.inbound.web.StatsRoutesControllerSpec$1$3.invokeSuspend(StatsRoutesControllerSpec.kt:171)\n\tat org.jointhefreeworld.symbanta.feature.statistics.adapter.inbound.web.StatsRoutesControllerSpec$1$3.invoke(StatsRoutesControllerSpec.kt)\n\tat org.jointhefreeworld.symbanta.feature.statistics.adapter.inbound.web.StatsRoutesControllerSpec$1$3.invoke(StatsRoutesControllerSpec.kt)\n\tat io.kotest.core.spec.style.scopes.FunSpecRootScope$context$1.invokeSuspend(FunSpecRootScope.kt:96)\n\tat io.kotest.core.spec.style.scopes.FunSpecRootScope$context$1.invoke(FunSpecRootScope.kt)\n\tat io.kotest.core.spec.style.scopes.FunSpecRootScope$context$1.invoke(FunSpecRootScope.kt)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$base$1.invoke(TestCaseExecutor.kt:118)\n\tat io.kotest.engine.test.TestInvocationInterceptor$runBeforeTestAfter$executeWithBeforeAfter$1.invoke(TestInvocationInterceptor.kt:93)\n\tat io.kotest.engine.test.interceptors.InvocationTimeoutInterceptor.intercept(InvocationTimeoutInterceptor.kt:30)\n\tat io.kotest.engine.test.TestInvocationInterceptor$runBeforeTestAfter$wrappedTest$1$1.invoke(TestInvocationInterceptor.kt:102)\n\tat io.kotest.engine.test.TestInvocationInterceptor.runBeforeTestAfter(TestInvocationInterceptor.kt:105)\n\tat io.kotest.engine.test.TestInvocationInterceptor.access$runBeforeTestAfter(TestInvocationInterceptor.kt:18)\n\tat io.kotest.engine.test.TestInvocationInterceptor$invokeWithRetry$2.invokeSuspend(TestInvocationInterceptor.kt:53)\n\tat io.kotest.engine.test.TestInvocationInterceptor$invokeWithRetry$2.invoke(TestInvocationInterceptor.kt)\n\tat io.kotest.engine.test.TestInvocationInterceptor$invokeWithRetry$2.invoke(TestInvocationInterceptor.kt)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndspatched(Undispatched.kt:66)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:43)\n\tat kotlinx.coroutines.CoroutineScopeKt.coroutineScope(CoroutineScope.kt:286)\n\tat io.kotest.engine.test.TestInvocationInterceptor.invokeWithRetry(TestInvocationInterceptor.kt:51)\n\tat io.kotest.engine.test.TestInvocationInterceptor.intercept(TestInvocationInterceptor.kt:33)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.MarkOpenTest4jAbortedExceptionsAsSkippedTestInterceptor.intercept(MarkOpenTest4jAbortedExceptionsAsSkippedTestInterceptor.kt:22)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.HandleSkippedExceptionsTestInterceptor.intercept(HandleSkippedExceptionsTestInterceptor.kt:15)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.TimeoutInterceptor$intercept$3.invokeSuspend(TimeoutInterceptor.kt:61)\n\tat io.kotest.engine.test.interceptors.TimeoutInterceptor$intercept$3.invoke(TimeoutInterceptor.kt)\n\tat io.kotest.engine.test.interceptors.TimeoutInterceptor$intercept$3.invoke(TimeoutInterceptor.kt)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndspatched(Undispatched.kt:66)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturnIgnoreTimeout(Undispatched.kt:50)\n\tat kotlinx.coroutines.TimeoutKt.setupTimeout(Timeout.kt:149)\n\tat kotlinx.coroutines.TimeoutKt.withTimeout(Timeout.kt:44)\n\tat kotlinx.coroutines.TimeoutKt.withTimeout-KLykuaI(Timeout.kt:72)\n\tat io.kotest.engine.test.interceptors.TimeoutInterceptorKt.withAppropriateTimeout-KLykuaI(TimeoutInterceptor.kt:90)\n\tat io.kotest.engine.test.interceptors.TimeoutInterceptor.intercept(TimeoutInterceptor.kt:60)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.CoroutineDebugProbeInterceptor.intercept(CoroutineDebugProbeInterceptor.kt:33)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.BlockedThreadTimeoutInterceptor.intercept(BlockedThreadTimeoutInterceptor.kt:87)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.CoroutineLoggingInterceptor.intercept(CoroutineLoggingInterceptor.kt:38)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.SoftAssertInterceptor.intercept(SoftAssertInterceptor.kt:26)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.AssertionModeInterceptor.intercept(AssertionModeInterceptor.kt:26)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.LifecycleInterceptor.intercept(LifecycleInterceptor.kt:48)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.TestCaseExtensionInterceptor$intercept$2.invoke(TestCaseExtensionInterceptor.kt:21)\n\tat io.kotest.engine.test.TestExtensions.intercept(TestExtensions.kt:151)\n\tat io.kotest.engine.test.interceptors.TestCaseExtensionInterceptor.intercept(TestCaseExtensionInterceptor.kt:21)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.TestEnabledCheckInterceptor.intercept(TestEnabledCheckInterceptor.kt:41)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.CoroutineErrorCollectorInterceptor$intercept$3.invokeSuspend(CoroutineErrorCollectorInterceptor.kt:39)\n\tat io.kotest.engine.test.interceptors.CoroutineErrorCollectorInterceptor$intercept$3.invoke(CoroutineErrorCollectorInterceptor.kt)\n\tat io.kotest.engine.test.interceptors.CoroutineErrorCollectorInterceptor$intercept$3.invoke(CoroutineErrorCollectorInterceptor.kt)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndspatched(Undispatched.kt:66)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:43)\n\tat kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:165)\n\tat kotlinx.coroutines.BuildersKt.withContext(Unknown Source)\n\tat io.kotest.engine.test.interceptors.CoroutineErrorCollectorInterceptor.intercept(CoroutineErrorCollectorInterceptor.kt:38)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.CoroutineDispatcherFactoryTestInterceptor.intercept(CoroutineDispatcherFactoryTestInterceptor.kt:41)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.SupervisorScopeInterceptor$intercept$2.invokeSuspend(SupervisorScopeInterceptor.kt:23)\n\tat io.kotest.engine.test.interceptors.SupervisorScopeInterceptor$intercept$2.invoke(SupervisorScopeInterceptor.kt)\n\tat io.kotest.engine.test.interceptors.SupervisorScopeInterceptor$intercept$2.invoke(SupervisorScopeInterceptor.kt)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndspatched(Undispatched.kt:66)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:43)\n\tat kotlinx.coroutines.SupervisorKt.supervisorScope(Supervisor.kt:56)\n\tat io.kotest.engine.test.interceptors.SupervisorScopeInterceptor.intercept(SupervisorScopeInterceptor.kt:22)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.InvocationCountCheckInterceptor.intercept(InvocationCountCheckInterceptor.kt:33)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.TestFinishedInterceptor.intercept(TestFinishedInterceptor.kt:23)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.FailFastInterceptor.intercept(FailFastInterceptor.kt:24)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.TestNameContextInterceptor$intercept$2.invokeSuspend(TestNameContextInterceptor.kt:21)\n\tat io.kotest.engine.test.interceptors.TestNameContextInterceptor$intercept$2.invoke(TestNameContextInterceptor.kt)\n\tat io.kotest.engine.test.interceptors.TestNameContextInterceptor$intercept$2.invoke(TestNameContextInterceptor.kt)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndspatched(Undispatched.kt:66)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:43)\n\tat kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:165)\n\tat kotlinx.coroutines.BuildersKt.withContext(Unknown Source)\n\tat io.kotest.engine.test.interceptors.TestNameContextInterceptor.intercept(TestNameContextInterceptor.kt:20)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.DescriptorPathContextInterceptor$intercept$2.invokeSuspend(DescriptorPathContextInterceptor.kt:21)\n\tat io.kotest.engine.test.interceptors.DescriptorPathContextInterceptor$intercept$2.invoke(DescriptorPathContextInterceptor.kt)\n\tat io.kotest.engine.test.interceptors.DescriptorPathContextInterceptor$intercept$2.invoke(DescriptorPathContextInterceptor.kt)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndspatched(Undispatched.kt:66)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:43)\n\tat kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:165)\n\tat kotlinx.coroutines.BuildersKt.withContext(Unknown Source)\n\tat io.kotest.engine.test.interceptors.DescriptorPathContextInterceptor.intercept(DescriptorPathContextInterceptor.kt:20)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.TestCaseExecutor.execute(TestCaseExecutor.kt:124)\n\tat io.kotest.engine.spec.execution.SingleInstanceSpecExecutor.executeTest(SingleInstanceSpecExecutor.kt:76)\n\tat io.kotest.engine.spec.execution.SingleInstanceSpecExecutor.access$executeTest(SingleInstanceSpecExecutor.kt:26)\n\tat io.kotest.engine.spec.execution.SingleInstanceSpecExecutor$launchRootTests$2$1$1.invokeSuspend(SingleInstanceSpecExecutor.kt:57)\n\tat kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:34)\n\tat kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:100)\n\tat kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:263)\n\tat kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:94)\n\tat kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(Builders.kt:70)\n\tat kotlinx.coroutines.BuildersKt.runBlocking(Unknown Source)\n\tat kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking$default(Builders.kt:48)\n\tat kotlinx.coroutines.BuildersKt.runBlocking$default(Unknown Source)\n\tat io.kotest.runner.junit.platform.KotestJunitPlatformTestEngine.execute(KotestJunitPlatformTestEngine.kt:86)\n\tat io.kotest.runner.junit.platform.KotestJunitPlatformTestEngine.execute(KotestJunitPlatformTestEngine.kt:56)\n\tat org.junit.platform.launcher.core.EngineExecutionOrchestrator.executeEngine(EngineExecutionOrchestrator.java:246)\n\tat org.junit.platform.launcher.core.EngineExecutionOrchestrator.failOrExecuteEngine(EngineExecutionOrchestrator.java:218)\n\tat org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:179)\n\tat org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:108)\n\tat org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:66)\n\tat org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:157)\n\tat org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:65)\n\tat org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:125)\n\tat org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)\n\tat org.junit.platform.launcher.core.DelegatingLauncher.execute(DelegatingLauncher.java:58)\n\tat org.junit.platform.launcher.core.InterceptingLauncher.lambda$execute$2(InterceptingLauncher.java:57)\n\tat org.junit.platform.launcher.core.ClasspathAlignmentCheckingLauncherInterceptor.intercept(ClasspathAlignmentCheckingLauncherInterceptor.java:25)\n\tat org.junit.platform.launcher.core.InterceptingLauncher.execute(InterceptingLauncher.java:56)\n\tat org.junit.platform.launcher.core.DelegatingLauncher.execute(DelegatingLauncher.java:58)\n\tat java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\n\tat java.base/java.lang.reflect.Method.invoke(Method.java:565)\n\tat org.apache.maven.surefire.api.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:125)\n\tat org.apache.maven.surefire.junitplatform.LauncherAdapter.executeWithCancellationToken(LauncherAdapter.java:68)\n\tat org.apache.maven.surefire.junitplatform.LauncherAdapter.execute(LauncherAdapter.java:54)\n\tat org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.execute(JUnitPlatformProvider.java:203)\n\tat org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invokeAllTests(JUnitPlatformProvider.java:168)\n\tat org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invoke(JUnitPlatformProvider.java:136)\n\tat org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:385)\n\tat org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:162)\n\tat org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:507)\n\tat org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:495)\n"}
[INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.145 s -- in org.jointhefreeworld.symbanta.feature.statistics.adapter.inbound.web.StatsRoutesControllerSpec
[INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.498 s -- in org.jointhefreeworld.symbanta.feature.statistics.adapter.inbound.web.StatsRoutesControllerSpec
[INFO] Running org.jointhefreeworld.symbanta.feature.statistics.adapter.inbound.web.StatsTimeseriesControllerSpec
{"@timestamp":"2026-11-10T20:50:31.879003142+01:00","level":"INFO","logger_name":"org.springframework.mock.web.MockServletContext","thread_name":"main @coroutine#15","message":"Initializing Spring TestDispatcherServlet ''"}
{"@timestamp":"2026-11-10T20:50:31.879157344+01:00","level":"INFO","logger_name":"org.springframework.test.web.servlet.TestDispatcherServlet","thread_name":"main @coroutine#15","message":"Initializing Servlet ''"}
{"@timestamp":"2026-11-10T20:50:31.879256823+01:00","level":"INFO","logger_name":"org.springframework.test.web.servlet.TestDispatcherServlet","thread_name":"main @coroutine#15","message":"Completed initialization in 0 ms"}
[INFO] Running org.jointhefreeworld.symbanta.feature.statistics.adapter.inbound.web.StatsTimeseriesControllerSpec
[INFO] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.102 s -- in org.jointhefreeworld.symbanta.feature.statistics.adapter.inbound.web.StatsTimeseriesControllerSpec
[INFO] Running org.jointhefreeworld.symbanta.feature.statistics.adapter.inbound.web.StatsTimeseriesControllerSpec
[INFO] Running org.jointhefreeworld.symbanta.feature.statistics.adapter.inbound.web.StatsTimeseriesControllerSpec
[INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.043 s -- in org.jointhefreeworld.symbanta.feature.statistics.adapter.inbound.web.StatsTimeseriesControllerSpec
{"@timestamp":"2026-11-10T20:50:32.111372263+01:00","level":"ERROR","logger_name":"org.jointhefreeworld.symbanta.shared.adapter.inbound.web.GlobalExceptionControllerAdvice","thread_name":"main @spec-scope-1738100779#77","message":"Unhandled error while serving request","stack_trace":"java.lang.RuntimeException: Database connection failed\n\tat org.jointhefreeworld.symbanta.feature.statistics.adapter.inbound.web.StatsTimeseriesController.getTimeSeriesStats(StatsTimeseriesController.kt:30)\n\tat java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\n\tat java.base/java.lang.reflect.Method.invoke(Method.java:565)\n\tat kotlin.reflect.jvm.internal.calls.CallerImpl$Method.callMethod(CallerImpl.kt:90)\n\tat kotlin.reflect.jvm.internal.calls.CallerImpl$Method$Instance.call(CallerImpl.kt:106)\n\tat kotlin.reflect.jvm.internal.ReflectKCallableKt.callDefaultMethod(ReflectKCallable.kt:165)\n\tat kotlin.reflect.jvm.internal.ReflectKCallableImpl.default$callBy(ReflectKCallableImpl.kt:70)\n\tat kotlin.reflect.jvm.internal.ReflectKCallableImpl.callBy(ReflectKCallableImpl.kt:10)\n\tat org.springframework.web.method.support.InvocableHandlerMethod$KotlinDelegate.invokeFunction(InvocableHandlerMethod.java:331)\n\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:250)\n\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:184)\n\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)\n\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:934)\n\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:853)\n\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:86)\n\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)\n\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:866)\n\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1000)\n\tat org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:892)\n\tat jakarta.servlet.http.HttpServlet.service(HttpServlet.java:622)\n\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:874)\n\tat org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:72)\n\tat jakarta.servlet.http.HttpServlet.service(HttpServlet.java:710)\n\tat org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:160)\n\tat org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:127)\n\tat org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:199)\n\tat org.springframework.test.web.servlet.MockHttpServletRequestDsl.perform$spring_test(MockHttpServletRequestDsl.kt:237)\n\tat org.springframework.test.web.servlet.MockMvcExtensionsKt.get(MockMvcExtensions.kt:32)\n\tat org.jointhefreeworld.symbanta.feature.statistics.adapter.inbound.web.StatsTimeseriesControllerSpec._init_$lambda$0$performGetTimeseries(StatsTimeseriesControllerSpec.kt:53)\n\tat org.jointhefreeworld.symbanta.feature.statistics.adapter.inbound.web.StatsTimeseriesControllerSpec._init_$lambda$0$performGetTimeseries$default(StatsTimeseriesControllerSpec.kt:47)\n\tat org.jointhefreeworld.symbanta.feature.statistics.adapter.inbound.web.StatsTimeseriesControllerSpec$1$3$3.invokeSuspend(StatsTimeseriesControllerSpec.kt:187)\n\tat org.jointhefreeworld.symbanta.feature.statistics.adapter.inbound.web.StatsTimeseriesControllerSpec$1$3$3.invoke(StatsTimeseriesControllerSpec.kt)\n\tat org.jointhefreeworld.symbanta.feature.statistics.adapter.inbound.web.StatsTimeseriesControllerSpec$1$3$3.invoke(StatsTimeseriesControllerSpec.kt)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$base$1.invoke(TestCaseExecutor.kt:118)\n\tat io.kotest.engine.test.TestInvocationInterceptor$runBeforeTestAfter$executeWithBeforeAfter$1.invoke(TestInvocationInterceptor.kt:93)\n\tat io.kotest.engine.test.interceptors.InvocationTimeoutInterceptor$intercept$3.invokeSuspend(InvocationTimeoutInterceptor.kt:49)\n\tat io.kotest.engine.test.interceptors.InvocationTimeoutInterceptor$intercept$3.invoke(InvocationTimeoutInterceptor.kt)\n\tat io.kotest.engine.test.interceptors.InvocationTimeoutInterceptor$intercept$3.invoke(InvocationTimeoutInterceptor.kt)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndspatched(Undispatched.kt:66)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturnIgnoreTimeout(Undispatched.kt:50)\n\tat kotlinx.coroutines.TimeoutKt.setupTimeout(Timeout.kt:149)\n\tat kotlinx.coroutines.TimeoutKt.withTimeoutOrNull(Timeout.kt:105)\n\tat kotlinx.coroutines.TimeoutKt.withTimeoutOrNull-KLykuaI(Timeout.kt:137)\n\tat io.kotest.engine.test.interceptors.TimeoutInterceptorKt.withAppropriateTimeoutOrNull-KLykuaI(TimeoutInterceptor.kt:103)\n\tat io.kotest.engine.test.interceptors.InvocationTimeoutInterceptor.intercept(InvocationTimeoutInterceptor.kt:48)\n\tat io.kotest.engine.test.TestInvocationInterceptor$runBeforeTestAfter$wrappedTest$1$1.invoke(TestInvocationInterceptor.kt:102)\n\tat io.kotest.engine.test.TestInvocationInterceptor.runBeforeTestAfter(TestInvocationInterceptor.kt:105)\n\tat io.kotest.engine.test.TestInvocationInterceptor.access$runBeforeTestAfter(TestInvocationInterceptor.kt:18)\n\tat io.kotest.engine.test.TestInvocationInterceptor$invokeWithRetry$2.invokeSuspend(TestInvocationInterceptor.kt:53)\n\tat io.kotest.engine.test.TestInvocationInterceptor$invokeWithRetry$2.invoke(TestInvocationInterceptor.kt)\n\tat io.kotest.engine.test.TestInvocationInterceptor$invokeWithRetry$2.invoke(TestInvocationInterceptor.kt)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndspatched(Undispatched.kt:66)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:43)\n\tat kotlinx.coroutines.CoroutineScopeKt.coroutineScope(CoroutineScope.kt:286)\n\tat io.kotest.engine.test.TestInvocationInterceptor.invokeWithRetry(TestInvocationInterceptor.kt:51)\n\tat io.kotest.engine.test.TestInvocationInterceptor.intercept(TestInvocationInterceptor.kt:33)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.MarkOpenTest4jAbortedExceptionsAsSkippedTestInterceptor.intercept(MarkOpenTest4jAbortedExceptionsAsSkippedTestInterceptor.kt:22)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.HandleSkippedExceptionsTestInterceptor.intercept(HandleSkippedExceptionsTestInterceptor.kt:15)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.TimeoutInterceptor$intercept$3.invokeSuspend(TimeoutInterceptor.kt:61)\n\tat io.kotest.engine.test.interceptors.TimeoutInterceptor$intercept$3.invoke(TimeoutInterceptor.kt)\n\tat io.kotest.engine.test.interceptors.TimeoutInterceptor$intercept$3.invoke(TimeoutInterceptor.kt)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndspatched(Undispatched.kt:66)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturnIgnoreTimeout(Undispatched.kt:50)\n\tat kotlinx.coroutines.TimeoutKt.setupTimeout(Timeout.kt:149)\n\tat kotlinx.coroutines.TimeoutKt.withTimeout(Timeout.kt:44)\n\tat kotlinx.coroutines.TimeoutKt.withTimeout-KLykuaI(Timeout.kt:72)\n\tat io.kotest.engine.test.interceptors.TimeoutInterceptorKt.withAppropriateTimeout-KLykuaI(TimeoutInterceptor.kt:90)\n\tat io.kotest.engine.test.interceptors.TimeoutInterceptor.intercept(TimeoutInterceptor.kt:60)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.CoroutineDebugProbeInterceptor.intercept(CoroutineDebugProbeInterceptor.kt:33)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.BlockedThreadTimeoutInterceptor.intercept(BlockedThreadTimeoutInterceptor.kt:87)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.CoroutineLoggingInterceptor.intercept(CoroutineLoggingInterceptor.kt:38)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.SoftAssertInterceptor.intercept(SoftAssertInterceptor.kt:26)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.AssertionModeInterceptor.intercept(AssertionModeInterceptor.kt:29)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.LifecycleInterceptor.intercept(LifecycleInterceptor.kt:48)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.TestCaseExtensionInterceptor$intercept$2.invoke(TestCaseExtensionInterceptor.kt:21)\n\tat io.kotest.engine.test.TestExtensions.intercept(TestExtensions.kt:151)\n\tat io.kotest.engine.test.interceptors.TestCaseExtensionInterceptor.intercept(TestCaseExtensionInterceptor.kt:21)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.TestEnabledCheckInterceptor.intercept(TestEnabledCheckInterceptor.kt:41)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.CoroutineErrorCollectorInterceptor$intercept$3.invokeSuspend(CoroutineErrorCollectorInterceptor.kt:39)\n\tat io.kotest.engine.test.interceptors.CoroutineErrorCollectorInterceptor$intercept$3.invoke(CoroutineErrorCollectorInterceptor.kt)\n\tat io.kotest.engine.test.interceptors.CoroutineErrorCollectorInterceptor$intercept$3.invoke(CoroutineErrorCollectorInterceptor.kt)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndspatched(Undispatched.kt:66)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:43)\n\tat kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:165)\n\tat kotlinx.coroutines.BuildersKt.withContext(Unknown Source)\n\tat io.kotest.engine.test.interceptors.CoroutineErrorCollectorInterceptor.intercept(CoroutineErrorCollectorInterceptor.kt:38)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.CoroutineDispatcherFactoryTestInterceptor.intercept(CoroutineDispatcherFactoryTestInterceptor.kt:41)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.SupervisorScopeInterceptor$intercept$2.invokeSuspend(SupervisorScopeInterceptor.kt:23)\n\tat io.kotest.engine.test.interceptors.SupervisorScopeInterceptor$intercept$2.invoke(SupervisorScopeInterceptor.kt)\n\tat io.kotest.engine.test.interceptors.SupervisorScopeInterceptor$intercept$2.invoke(SupervisorScopeInterceptor.kt)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndspatched(Undispatched.kt:66)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:43)\n\tat kotlinx.coroutines.SupervisorKt.supervisorScope(Supervisor.kt:56)\n\tat io.kotest.engine.test.interceptors.SupervisorScopeInterceptor.intercept(SupervisorScopeInterceptor.kt:22)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.InvocationCountCheckInterceptor.intercept(InvocationCountCheckInterceptor.kt:33)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.TestFinishedInterceptor.intercept(TestFinishedInterceptor.kt:23)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.FailFastInterceptor.intercept(FailFastInterceptor.kt:24)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.TestNameContextInterceptor$intercept$2.invokeSuspend(TestNameContextInterceptor.kt:21)\n\tat io.kotest.engine.test.interceptors.TestNameContextInterceptor$intercept$2.invoke(TestNameContextInterceptor.kt)\n\tat io.kotest.engine.test.interceptors.TestNameContextInterceptor$intercept$2.invoke(TestNameContextInterceptor.kt)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndspatched(Undispatched.kt:66)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:43)\n\tat kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:165)\n\tat kotlinx.coroutines.BuildersKt.withContext(Unknown Source)\n\tat io.kotest.engine.test.interceptors.TestNameContextInterceptor.intercept(TestNameContextInterceptor.kt:20)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.DescriptorPathContextInterceptor$intercept$2.invokeSuspend(DescriptorPathContextInterceptor.kt:21)\n\tat io.kotest.engine.test.interceptors.DescriptorPathContextInterceptor$intercept$2.invoke(DescriptorPathContextInterceptor.kt)\n\tat io.kotest.engine.test.interceptors.DescriptorPathContextInterceptor$intercept$2.invoke(DescriptorPathContextInterceptor.kt)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndspatched(Undispatched.kt:66)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:43)\n\tat kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:165)\n\tat kotlinx.coroutines.BuildersKt.withContext(Unknown Source)\n\tat io.kotest.engine.test.interceptors.DescriptorPathContextInterceptor.intercept(DescriptorPathContextInterceptor.kt:20)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.TestCaseExecutor.execute(TestCaseExecutor.kt:124)\n\tat io.kotest.engine.spec.execution.SingleInstanceSpecExecutor.executeTest(SingleInstanceSpecExecutor.kt:76)\n\tat io.kotest.engine.spec.execution.SingleInstanceSpecExecutor.access$executeTest(SingleInstanceSpecExecutor.kt:26)\n\tat io.kotest.engine.spec.execution.SingleInstanceSpecExecutor$executeTest$result$1.invokeSuspend(SingleInstanceSpecExecutor.kt:82)\n\tat io.kotest.engine.spec.execution.SingleInstanceSpecExecutor$executeTest$result$1.invoke(SingleInstanceSpecExecutor.kt)\n\tat io.kotest.engine.spec.execution.SingleInstanceSpecExecutor$executeTest$result$1.invoke(SingleInstanceSpecExecutor.kt)\n\tat io.kotest.core.test.DefaultTestScope.registerTest(TestScope.kt:75)\n\tat io.kotest.engine.test.scopes.TestScopeWithCoroutineContext.registerTest(scopes.kt)\n\tat io.kotest.core.spec.style.scopes.AbstractContainerScope.registerTest$suspendImpl(ContainerScope.kt:260)\n\tat io.kotest.core.spec.style.scopes.AbstractContainerScope.registerTest(ContainerScope.kt)\n\tat io.kotest.core.spec.style.scopes.FunSpecContainerScope.test(FunSpecContainerScope.kt:126)\n\tat org.jointhefreeworld.symbanta.feature.statistics.adapter.inbound.web.StatsTimeseriesControllerSpec$1$3.invokeSuspend(StatsTimeseriesControllerSpec.kt:184)\n\tat org.jointhefreeworld.symbanta.feature.statistics.adapter.inbound.web.StatsTimeseriesControllerSpec$1$3.invoke(StatsTimeseriesControllerSpec.kt)\n\tat org.jointhefreeworld.symbanta.feature.statistics.adapter.inbound.web.StatsTimeseriesControllerSpec$1$3.invoke(StatsTimeseriesControllerSpec.kt)\n\tat io.kotest.core.spec.style.scopes.FunSpecRootScope$context$1.invokeSuspend(FunSpecRootScope.kt:96)\n\tat io.kotest.core.spec.style.scopes.FunSpecRootScope$context$1.invoke(FunSpecRootScope.kt)\n\tat io.kotest.core.spec.style.scopes.FunSpecRootScope$context$1.invoke(FunSpecRootScope.kt)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$base$1.invoke(TestCaseExecutor.kt:118)\n\tat io.kotest.engine.test.TestInvocationInterceptor$runBeforeTestAfter$executeWithBeforeAfter$1.invoke(TestInvocationInterceptor.kt:93)\n\tat io.kotest.engine.test.interceptors.InvocationTimeoutInterceptor.intercept(InvocationTimeoutInterceptor.kt:30)\n\tat io.kotest.engine.test.TestInvocationInterceptor$runBeforeTestAfter$wrappedTest$1$1.invoke(TestInvocationInterceptor.kt:102)\n\tat io.kotest.engine.test.TestInvocationInterceptor.runBeforeTestAfter(TestInvocationInterceptor.kt:105)\n\tat io.kotest.engine.test.TestInvocationInterceptor.access$runBeforeTestAfter(TestInvocationInterceptor.kt:18)\n\tat io.kotest.engine.test.TestInvocationInterceptor$invokeWithRetry$2.invokeSuspend(TestInvocationInterceptor.kt:53)\n\tat io.kotest.engine.test.TestInvocationInterceptor$invokeWithRetry$2.invoke(TestInvocationInterceptor.kt)\n\tat io.kotest.engine.test.TestInvocationInterceptor$invokeWithRetry$2.invoke(TestInvocationInterceptor.kt)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndspatched(Undispatched.kt:66)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:43)\n\tat kotlinx.coroutines.CoroutineScopeKt.coroutineScope(CoroutineScope.kt:286)\n\tat io.kotest.engine.test.TestInvocationInterceptor.invokeWithRetry(TestInvocationInterceptor.kt:51)\n\tat io.kotest.engine.test.TestInvocationInterceptor.intercept(TestInvocationInterceptor.kt:33)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.MarkOpenTest4jAbortedExceptionsAsSkippedTestInterceptor.intercept(MarkOpenTest4jAbortedExceptionsAsSkippedTestInterceptor.kt:22)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.HandleSkippedExceptionsTestInterceptor.intercept(HandleSkippedExceptionsTestInterceptor.kt:15)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.TimeoutInterceptor$intercept$3.invokeSuspend(TimeoutInterceptor.kt:61)\n\tat io.kotest.engine.test.interceptors.TimeoutInterceptor$intercept$3.invoke(TimeoutInterceptor.kt)\n\tat io.kotest.engine.test.interceptors.TimeoutInterceptor$intercept$3.invoke(TimeoutInterceptor.kt)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndspatched(Undispatched.kt:66)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturnIgnoreTimeout(Undispatched.kt:50)\n\tat kotlinx.coroutines.TimeoutKt.setupTimeout(Timeout.kt:149)\n\tat kotlinx.coroutines.TimeoutKt.withTimeout(Timeout.kt:44)\n\tat kotlinx.coroutines.TimeoutKt.withTimeout-KLykuaI(Timeout.kt:72)\n\tat io.kotest.engine.test.interceptors.TimeoutInterceptorKt.withAppropriateTimeout-KLykuaI(TimeoutInterceptor.kt:90)\n\tat io.kotest.engine.test.interceptors.TimeoutInterceptor.intercept(TimeoutInterceptor.kt:60)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.CoroutineDebugProbeInterceptor.intercept(CoroutineDebugProbeInterceptor.kt:33)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.BlockedThreadTimeoutInterceptor.intercept(BlockedThreadTimeoutInterceptor.kt:87)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.CoroutineLoggingInterceptor.intercept(CoroutineLoggingInterceptor.kt:38)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.SoftAssertInterceptor.intercept(SoftAssertInterceptor.kt:26)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.AssertionModeInterceptor.intercept(AssertionModeInterceptor.kt:26)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.LifecycleInterceptor.intercept(LifecycleInterceptor.kt:48)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.TestCaseExtensionInterceptor$intercept$2.invoke(TestCaseExtensionInterceptor.kt:21)\n\tat io.kotest.engine.test.TestExtensions.intercept(TestExtensions.kt:151)\n\tat io.kotest.engine.test.interceptors.TestCaseExtensionInterceptor.intercept(TestCaseExtensionInterceptor.kt:21)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.TestEnabledCheckInterceptor.intercept(TestEnabledCheckInterceptor.kt:41)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.CoroutineErrorCollectorInterceptor$intercept$3.invokeSuspend(CoroutineErrorCollectorInterceptor.kt:39)\n\tat io.kotest.engine.test.interceptors.CoroutineErrorCollectorInterceptor$intercept$3.invoke(CoroutineErrorCollectorInterceptor.kt)\n\tat io.kotest.engine.test.interceptors.CoroutineErrorCollectorInterceptor$intercept$3.invoke(CoroutineErrorCollectorInterceptor.kt)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndspatched(Undispatched.kt:66)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:43)\n\tat kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:165)\n\tat kotlinx.coroutines.BuildersKt.withContext(Unknown Source)\n\tat io.kotest.engine.test.interceptors.CoroutineErrorCollectorInterceptor.intercept(CoroutineErrorCollectorInterceptor.kt:38)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.CoroutineDispatcherFactoryTestInterceptor.intercept(CoroutineDispatcherFactoryTestInterceptor.kt:41)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.SupervisorScopeInterceptor$intercept$2.invokeSuspend(SupervisorScopeInterceptor.kt:23)\n\tat io.kotest.engine.test.interceptors.SupervisorScopeInterceptor$intercept$2.invoke(SupervisorScopeInterceptor.kt)\n\tat io.kotest.engine.test.interceptors.SupervisorScopeInterceptor$intercept$2.invoke(SupervisorScopeInterceptor.kt)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndspatched(Undispatched.kt:66)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:43)\n\tat kotlinx.coroutines.SupervisorKt.supervisorScope(Supervisor.kt:56)\n\tat io.kotest.engine.test.interceptors.SupervisorScopeInterceptor.intercept(SupervisorScopeInterceptor.kt:22)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.InvocationCountCheckInterceptor.intercept(InvocationCountCheckInterceptor.kt:33)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.TestFinishedInterceptor.intercept(TestFinishedInterceptor.kt:23)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.FailFastInterceptor.intercept(FailFastInterceptor.kt:24)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.TestNameContextInterceptor$intercept$2.invokeSuspend(TestNameContextInterceptor.kt:21)\n\tat io.kotest.engine.test.interceptors.TestNameContextInterceptor$intercept$2.invoke(TestNameContextInterceptor.kt)\n\tat io.kotest.engine.test.interceptors.TestNameContextInterceptor$intercept$2.invoke(TestNameContextInterceptor.kt)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndspatched(Undispatched.kt:66)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:43)\n\tat kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:165)\n\tat kotlinx.coroutines.BuildersKt.withContext(Unknown Source)\n\tat io.kotest.engine.test.interceptors.TestNameContextInterceptor.intercept(TestNameContextInterceptor.kt:20)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.DescriptorPathContextInterceptor$intercept$2.invokeSuspend(DescriptorPathContextInterceptor.kt:21)\n\tat io.kotest.engine.test.interceptors.DescriptorPathContextInterceptor$intercept$2.invoke(DescriptorPathContextInterceptor.kt)\n\tat io.kotest.engine.test.interceptors.DescriptorPathContextInterceptor$intercept$2.invoke(DescriptorPathContextInterceptor.kt)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndspatched(Undispatched.kt:66)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:43)\n\tat kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:165)\n\tat kotlinx.coroutines.BuildersKt.withContext(Unknown Source)\n\tat io.kotest.engine.test.interceptors.DescriptorPathContextInterceptor.intercept(DescriptorPathContextInterceptor.kt:20)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.TestCaseExecutor.execute(TestCaseExecutor.kt:124)\n\tat io.kotest.engine.spec.execution.SingleInstanceSpecExecutor.executeTest(SingleInstanceSpecExecutor.kt:76)\n\tat io.kotest.engine.spec.execution.SingleInstanceSpecExecutor.access$executeTest(SingleInstanceSpecExecutor.kt:26)\n\tat io.kotest.engine.spec.execution.SingleInstanceSpecExecutor$launchRootTests$2$1$1.invokeSuspend(SingleInstanceSpecExecutor.kt:57)\n\tat kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:34)\n\tat kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:100)\n\tat kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:263)\n\tat kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:94)\n\tat kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(Builders.kt:70)\n\tat kotlinx.coroutines.BuildersKt.runBlocking(Unknown Source)\n\tat kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking$default(Builders.kt:48)\n\tat kotlinx.coroutines.BuildersKt.runBlocking$default(Unknown Source)\n\tat io.kotest.runner.junit.platform.KotestJunitPlatformTestEngine.execute(KotestJunitPlatformTestEngine.kt:86)\n\tat io.kotest.runner.junit.platform.KotestJunitPlatformTestEngine.execute(KotestJunitPlatformTestEngine.kt:56)\n\tat org.junit.platform.launcher.core.EngineExecutionOrchestrator.executeEngine(EngineExecutionOrchestrator.java:246)\n\tat org.junit.platform.launcher.core.EngineExecutionOrchestrator.failOrExecuteEngine(EngineExecutionOrchestrator.java:218)\n\tat org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:179)\n\tat org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:108)\n\tat org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:66)\n\tat org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:157)\n\tat org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:65)\n\tat org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:125)\n\tat org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)\n\tat org.junit.platform.launcher.core.DelegatingLauncher.execute(DelegatingLauncher.java:58)\n\tat org.junit.platform.launcher.core.InterceptingLauncher.lambda$execute$2(InterceptingLauncher.java:57)\n\tat org.junit.platform.launcher.core.ClasspathAlignmentCheckingLauncherInterceptor.intercept(ClasspathAlignmentCheckingLauncherInterceptor.java:25)\n\tat org.junit.platform.launcher.core.InterceptingLauncher.execute(InterceptingLauncher.java:56)\n\tat org.junit.platform.launcher.core.DelegatingLauncher.execute(DelegatingLauncher.java:58)\n\tat java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\n\tat java.base/java.lang.reflect.Method.invoke(Method.java:565)\n\tat org.apache.maven.surefire.api.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:125)\n\tat org.apache.maven.surefire.junitplatform.LauncherAdapter.executeWithCancellationToken(LauncherAdapter.java:68)\n\tat org.apache.maven.surefire.junitplatform.LauncherAdapter.execute(LauncherAdapter.java:54)\n\tat org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.execute(JUnitPlatformProvider.java:203)\n\tat org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invokeAllTests(JUnitPlatformProvider.java:168)\n\tat org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invoke(JUnitPlatformProvider.java:136)\n\tat org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:385)\n\tat org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:162)\n\tat org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:507)\n\tat org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:495)\n"}
[INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.118 s -- in org.jointhefreeworld.symbanta.feature.statistics.adapter.inbound.web.StatsTimeseriesControllerSpec
[INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.427 s -- in org.jointhefreeworld.symbanta.feature.statistics.adapter.inbound.web.StatsTimeseriesControllerSpec
[INFO] Running org.jointhefreeworld.symbanta.feature.statistics.adapter.inbound.web.StatsUserAgentsControllerSpec
{"@timestamp":"2026-11-10T20:50:32.306163+01:00","level":"INFO","logger_name":"org.springframework.mock.web.MockServletContext","thread_name":"main @coroutine#16","message":"Initializing Spring TestDispatcherServlet ''"}
{"@timestamp":"2026-11-10T20:50:32.306295669+01:00","level":"INFO","logger_name":"org.springframework.test.web.servlet.TestDispatcherServlet","thread_name":"main @coroutine#16","message":"Initializing Servlet ''"}
{"@timestamp":"2026-11-10T20:50:32.306384662+01:00","level":"INFO","logger_name":"org.springframework.test.web.servlet.TestDispatcherServlet","thread_name":"main @coroutine#16","message":"Completed initialization in 0 ms"}
[INFO] Running org.jointhefreeworld.symbanta.feature.statistics.adapter.inbound.web.StatsUserAgentsControllerSpec
[INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.077 s -- in org.jointhefreeworld.symbanta.feature.statistics.adapter.inbound.web.StatsUserAgentsControllerSpec
[INFO] Running org.jointhefreeworld.symbanta.feature.statistics.adapter.inbound.web.StatsUserAgentsControllerSpec
{"@timestamp":"2026-11-10T20:50:32.444008341+01:00","level":"ERROR","logger_name":"org.jointhefreeworld.symbanta.shared.adapter.inbound.web.GlobalExceptionControllerAdvice","thread_name":"main @spec-scope-1772877534#79","message":"Unhandled error while serving request","stack_trace":"java.lang.RuntimeException: Database connection failed\n\tat org.jointhefreeworld.symbanta.feature.statistics.adapter.inbound.web.StatsUserAgentsController.getUserAgentStats(StatsUserAgentsController.kt:28)\n\tat java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\n\tat java.base/java.lang.reflect.Method.invoke(Method.java:565)\n\tat kotlin.reflect.jvm.internal.calls.CallerImpl$Method.callMethod(CallerImpl.kt:90)\n\tat kotlin.reflect.jvm.internal.calls.CallerImpl$Method$Instance.call(CallerImpl.kt:106)\n\tat kotlin.reflect.jvm.internal.ReflectKCallableKt.callDefaultMethod(ReflectKCallable.kt:165)\n\tat kotlin.reflect.jvm.internal.ReflectKCallableImpl.default$callBy(ReflectKCallableImpl.kt:70)\n\tat kotlin.reflect.jvm.internal.ReflectKCallableImpl.callBy(ReflectKCallableImpl.kt:10)\n\tat org.springframework.web.method.support.InvocableHandlerMethod$KotlinDelegate.invokeFunction(InvocableHandlerMethod.java:331)\n\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:250)\n\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:184)\n\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)\n\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:934)\n\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:853)\n\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:86)\n\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)\n\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:866)\n\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1000)\n\tat org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:892)\n\tat jakarta.servlet.http.HttpServlet.service(HttpServlet.java:622)\n\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:874)\n\tat org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:72)\n\tat jakarta.servlet.http.HttpServlet.service(HttpServlet.java:710)\n\tat org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:160)\n\tat org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:127)\n\tat org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:199)\n\tat org.springframework.test.web.servlet.MockHttpServletRequestDsl.perform$spring_test(MockHttpServletRequestDsl.kt:237)\n\tat org.springframework.test.web.servlet.MockMvcExtensionsKt.get(MockMvcExtensions.kt:32)\n\tat org.jointhefreeworld.symbanta.feature.statistics.adapter.inbound.web.StatsUserAgentsControllerSpec._init_$lambda$0$performGetUserAgents(StatsUserAgentsControllerSpec.kt:42)\n\tat org.jointhefreeworld.symbanta.feature.statistics.adapter.inbound.web.StatsUserAgentsControllerSpec._init_$lambda$0$performGetUserAgents$default(StatsUserAgentsControllerSpec.kt:36)\n\tat org.jointhefreeworld.symbanta.feature.statistics.adapter.inbound.web.StatsUserAgentsControllerSpec$1$3$2.invokeSuspend(StatsUserAgentsControllerSpec.kt:111)\n\tat org.jointhefreeworld.symbanta.feature.statistics.adapter.inbound.web.StatsUserAgentsControllerSpec$1$3$2.invoke(StatsUserAgentsControllerSpec.kt)\n\tat org.jointhefreeworld.symbanta.feature.statistics.adapter.inbound.web.StatsUserAgentsControllerSpec$1$3$2.invoke(StatsUserAgentsControllerSpec.kt)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$base$1.invoke(TestCaseExecutor.kt:118)\n\tat io.kotest.engine.test.TestInvocationInterceptor$runBeforeTestAfter$executeWithBeforeAfter$1.invoke(TestInvocationInterceptor.kt:93)\n\tat io.kotest.engine.test.interceptors.InvocationTimeoutInterceptor$intercept$3.invokeSuspend(InvocationTimeoutInterceptor.kt:49)\n\tat io.kotest.engine.test.interceptors.InvocationTimeoutInterceptor$intercept$3.invoke(InvocationTimeoutInterceptor.kt)\n\tat io.kotest.engine.test.interceptors.InvocationTimeoutInterceptor$intercept$3.invoke(InvocationTimeoutInterceptor.kt)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndspatched(Undispatched.kt:66)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturnIgnoreTimeout(Undispatched.kt:50)\n\tat kotlinx.coroutines.TimeoutKt.setupTimeout(Timeout.kt:149)\n\tat kotlinx.coroutines.TimeoutKt.withTimeoutOrNull(Timeout.kt:105)\n\tat kotlinx.coroutines.TimeoutKt.withTimeoutOrNull-KLykuaI(Timeout.kt:137)\n\tat io.kotest.engine.test.interceptors.TimeoutInterceptorKt.withAppropriateTimeoutOrNull-KLykuaI(TimeoutInterceptor.kt:103)\n\tat io.kotest.engine.test.interceptors.InvocationTimeoutInterceptor.intercept(InvocationTimeoutInterceptor.kt:48)\n\tat io.kotest.engine.test.TestInvocationInterceptor$runBeforeTestAfter$wrappedTest$1$1.invoke(TestInvocationInterceptor.kt:102)\n\tat io.kotest.engine.test.TestInvocationInterceptor.runBeforeTestAfter(TestInvocationInterceptor.kt:105)\n\tat io.kotest.engine.test.TestInvocationInterceptor.access$runBeforeTestAfter(TestInvocationInterceptor.kt:18)\n\tat io.kotest.engine.test.TestInvocationInterceptor$invokeWithRetry$2.invokeSuspend(TestInvocationInterceptor.kt:53)\n\tat io.kotest.engine.test.TestInvocationInterceptor$invokeWithRetry$2.invoke(TestInvocationInterceptor.kt)\n\tat io.kotest.engine.test.TestInvocationInterceptor$invokeWithRetry$2.invoke(TestInvocationInterceptor.kt)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndspatched(Undispatched.kt:66)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:43)\n\tat kotlinx.coroutines.CoroutineScopeKt.coroutineScope(CoroutineScope.kt:286)\n\tat io.kotest.engine.test.TestInvocationInterceptor.invokeWithRetry(TestInvocationInterceptor.kt:51)\n\tat io.kotest.engine.test.TestInvocationInterceptor.intercept(TestInvocationInterceptor.kt:33)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.MarkOpenTest4jAbortedExceptionsAsSkippedTestInterceptor.intercept(MarkOpenTest4jAbortedExceptionsAsSkippedTestInterceptor.kt:22)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.HandleSkippedExceptionsTestInterceptor.intercept(HandleSkippedExceptionsTestInterceptor.kt:15)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.TimeoutInterceptor$intercept$3.invokeSuspend(TimeoutInterceptor.kt:61)\n\tat io.kotest.engine.test.interceptors.TimeoutInterceptor$intercept$3.invoke(TimeoutInterceptor.kt)\n\tat io.kotest.engine.test.interceptors.TimeoutInterceptor$intercept$3.invoke(TimeoutInterceptor.kt)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndspatched(Undispatched.kt:66)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturnIgnoreTimeout(Undispatched.kt:50)\n\tat kotlinx.coroutines.TimeoutKt.setupTimeout(Timeout.kt:149)\n\tat kotlinx.coroutines.TimeoutKt.withTimeout(Timeout.kt:44)\n\tat kotlinx.coroutines.TimeoutKt.withTimeout-KLykuaI(Timeout.kt:72)\n\tat io.kotest.engine.test.interceptors.TimeoutInterceptorKt.withAppropriateTimeout-KLykuaI(TimeoutInterceptor.kt:90)\n\tat io.kotest.engine.test.interceptors.TimeoutInterceptor.intercept(TimeoutInterceptor.kt:60)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.CoroutineDebugProbeInterceptor.intercept(CoroutineDebugProbeInterceptor.kt:33)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.BlockedThreadTimeoutInterceptor.intercept(BlockedThreadTimeoutInterceptor.kt:87)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.CoroutineLoggingInterceptor.intercept(CoroutineLoggingInterceptor.kt:38)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.SoftAssertInterceptor.intercept(SoftAssertInterceptor.kt:26)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.AssertionModeInterceptor.intercept(AssertionModeInterceptor.kt:29)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.LifecycleInterceptor.intercept(LifecycleInterceptor.kt:48)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.TestCaseExtensionInterceptor$intercept$2.invoke(TestCaseExtensionInterceptor.kt:21)\n\tat io.kotest.engine.test.TestExtensions.intercept(TestExtensions.kt:151)\n\tat io.kotest.engine.test.interceptors.TestCaseExtensionInterceptor.intercept(TestCaseExtensionInterceptor.kt:21)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.TestEnabledCheckInterceptor.intercept(TestEnabledCheckInterceptor.kt:41)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.CoroutineErrorCollectorInterceptor$intercept$3.invokeSuspend(CoroutineErrorCollectorInterceptor.kt:39)\n\tat io.kotest.engine.test.interceptors.CoroutineErrorCollectorInterceptor$intercept$3.invoke(CoroutineErrorCollectorInterceptor.kt)\n\tat io.kotest.engine.test.interceptors.CoroutineErrorCollectorInterceptor$intercept$3.invoke(CoroutineErrorCollectorInterceptor.kt)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndspatched(Undispatched.kt:66)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:43)\n\tat kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:165)\n\tat kotlinx.coroutines.BuildersKt.withContext(Unknown Source)\n\tat io.kotest.engine.test.interceptors.CoroutineErrorCollectorInterceptor.intercept(CoroutineErrorCollectorInterceptor.kt:38)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.CoroutineDispatcherFactoryTestInterceptor.intercept(CoroutineDispatcherFactoryTestInterceptor.kt:41)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.SupervisorScopeInterceptor$intercept$2.invokeSuspend(SupervisorScopeInterceptor.kt:23)\n\tat io.kotest.engine.test.interceptors.SupervisorScopeInterceptor$intercept$2.invoke(SupervisorScopeInterceptor.kt)\n\tat io.kotest.engine.test.interceptors.SupervisorScopeInterceptor$intercept$2.invoke(SupervisorScopeInterceptor.kt)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndspatched(Undispatched.kt:66)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:43)\n\tat kotlinx.coroutines.SupervisorKt.supervisorScope(Supervisor.kt:56)\n\tat io.kotest.engine.test.interceptors.SupervisorScopeInterceptor.intercept(SupervisorScopeInterceptor.kt:22)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.InvocationCountCheckInterceptor.intercept(InvocationCountCheckInterceptor.kt:33)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.TestFinishedInterceptor.intercept(TestFinishedInterceptor.kt:23)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.FailFastInterceptor.intercept(FailFastInterceptor.kt:24)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.TestNameContextInterceptor$intercept$2.invokeSuspend(TestNameContextInterceptor.kt:21)\n\tat io.kotest.engine.test.interceptors.TestNameContextInterceptor$intercept$2.invoke(TestNameContextInterceptor.kt)\n\tat io.kotest.engine.test.interceptors.TestNameContextInterceptor$intercept$2.invoke(TestNameContextInterceptor.kt)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndspatched(Undispatched.kt:66)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:43)\n\tat kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:165)\n\tat kotlinx.coroutines.BuildersKt.withContext(Unknown Source)\n\tat io.kotest.engine.test.interceptors.TestNameContextInterceptor.intercept(TestNameContextInterceptor.kt:20)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.DescriptorPathContextInterceptor$intercept$2.invokeSuspend(DescriptorPathContextInterceptor.kt:21)\n\tat io.kotest.engine.test.interceptors.DescriptorPathContextInterceptor$intercept$2.invoke(DescriptorPathContextInterceptor.kt)\n\tat io.kotest.engine.test.interceptors.DescriptorPathContextInterceptor$intercept$2.invoke(DescriptorPathContextInterceptor.kt)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndspatched(Undispatched.kt:66)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:43)\n\tat kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:165)\n\tat kotlinx.coroutines.BuildersKt.withContext(Unknown Source)\n\tat io.kotest.engine.test.interceptors.DescriptorPathContextInterceptor.intercept(DescriptorPathContextInterceptor.kt:20)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.TestCaseExecutor.execute(TestCaseExecutor.kt:124)\n\tat io.kotest.engine.spec.execution.SingleInstanceSpecExecutor.executeTest(SingleInstanceSpecExecutor.kt:76)\n\tat io.kotest.engine.spec.execution.SingleInstanceSpecExecutor.access$executeTest(SingleInstanceSpecExecutor.kt:26)\n\tat io.kotest.engine.spec.execution.SingleInstanceSpecExecutor$executeTest$result$1.invokeSuspend(SingleInstanceSpecExecutor.kt:82)\n\tat io.kotest.engine.spec.execution.SingleInstanceSpecExecutor$executeTest$result$1.invoke(SingleInstanceSpecExecutor.kt)\n\tat io.kotest.engine.spec.execution.SingleInstanceSpecExecutor$executeTest$result$1.invoke(SingleInstanceSpecExecutor.kt)\n\tat io.kotest.core.test.DefaultTestScope.registerTest(TestScope.kt:75)\n\tat io.kotest.engine.test.scopes.TestScopeWithCoroutineContext.registerTest(scopes.kt)\n\tat io.kotest.core.spec.style.scopes.AbstractContainerScope.registerTest$suspendImpl(ContainerScope.kt:260)\n\tat io.kotest.core.spec.style.scopes.AbstractContainerScope.registerTest(ContainerScope.kt)\n\tat io.kotest.core.spec.style.scopes.FunSpecContainerScope.test(FunSpecContainerScope.kt:126)\n\tat org.jointhefreeworld.symbanta.feature.statistics.adapter.inbound.web.StatsUserAgentsControllerSpec$1$3.invokeSuspend(StatsUserAgentsControllerSpec.kt:107)\n\tat org.jointhefreeworld.symbanta.feature.statistics.adapter.inbound.web.StatsUserAgentsControllerSpec$1$3.invoke(StatsUserAgentsControllerSpec.kt)\n\tat org.jointhefreeworld.symbanta.feature.statistics.adapter.inbound.web.StatsUserAgentsControllerSpec$1$3.invoke(StatsUserAgentsControllerSpec.kt)\n\tat io.kotest.core.spec.style.scopes.FunSpecRootScope$context$1.invokeSuspend(FunSpecRootScope.kt:96)\n\tat io.kotest.core.spec.style.scopes.FunSpecRootScope$context$1.invoke(FunSpecRootScope.kt)\n\tat io.kotest.core.spec.style.scopes.FunSpecRootScope$context$1.invoke(FunSpecRootScope.kt)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$base$1.invoke(TestCaseExecutor.kt:118)\n\tat io.kotest.engine.test.TestInvocationInterceptor$runBeforeTestAfter$executeWithBeforeAfter$1.invoke(TestInvocationInterceptor.kt:93)\n\tat io.kotest.engine.test.interceptors.InvocationTimeoutInterceptor.intercept(InvocationTimeoutInterceptor.kt:30)\n\tat io.kotest.engine.test.TestInvocationInterceptor$runBeforeTestAfter$wrappedTest$1$1.invoke(TestInvocationInterceptor.kt:102)\n\tat io.kotest.engine.test.TestInvocationInterceptor.runBeforeTestAfter(TestInvocationInterceptor.kt:105)\n\tat io.kotest.engine.test.TestInvocationInterceptor.access$runBeforeTestAfter(TestInvocationInterceptor.kt:18)\n\tat io.kotest.engine.test.TestInvocationInterceptor$invokeWithRetry$2.invokeSuspend(TestInvocationInterceptor.kt:53)\n\tat io.kotest.engine.test.TestInvocationInterceptor$invokeWithRetry$2.invoke(TestInvocationInterceptor.kt)\n\tat io.kotest.engine.test.TestInvocationInterceptor$invokeWithRetry$2.invoke(TestInvocationInterceptor.kt)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndspatched(Undispatched.kt:66)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:43)\n\tat kotlinx.coroutines.CoroutineScopeKt.coroutineScope(CoroutineScope.kt:286)\n\tat io.kotest.engine.test.TestInvocationInterceptor.invokeWithRetry(TestInvocationInterceptor.kt:51)\n\tat io.kotest.engine.test.TestInvocationInterceptor.intercept(TestInvocationInterceptor.kt:33)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.MarkOpenTest4jAbortedExceptionsAsSkippedTestInterceptor.intercept(MarkOpenTest4jAbortedExceptionsAsSkippedTestInterceptor.kt:22)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.HandleSkippedExceptionsTestInterceptor.intercept(HandleSkippedExceptionsTestInterceptor.kt:15)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.TimeoutInterceptor$intercept$3.invokeSuspend(TimeoutInterceptor.kt:61)\n\tat io.kotest.engine.test.interceptors.TimeoutInterceptor$intercept$3.invoke(TimeoutInterceptor.kt)\n\tat io.kotest.engine.test.interceptors.TimeoutInterceptor$intercept$3.invoke(TimeoutInterceptor.kt)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndspatched(Undispatched.kt:66)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturnIgnoreTimeout(Undispatched.kt:50)\n\tat kotlinx.coroutines.TimeoutKt.setupTimeout(Timeout.kt:149)\n\tat kotlinx.coroutines.TimeoutKt.withTimeout(Timeout.kt:44)\n\tat kotlinx.coroutines.TimeoutKt.withTimeout-KLykuaI(Timeout.kt:72)\n\tat io.kotest.engine.test.interceptors.TimeoutInterceptorKt.withAppropriateTimeout-KLykuaI(TimeoutInterceptor.kt:90)\n\tat io.kotest.engine.test.interceptors.TimeoutInterceptor.intercept(TimeoutInterceptor.kt:60)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.CoroutineDebugProbeInterceptor.intercept(CoroutineDebugProbeInterceptor.kt:33)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.BlockedThreadTimeoutInterceptor.intercept(BlockedThreadTimeoutInterceptor.kt:87)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.CoroutineLoggingInterceptor.intercept(CoroutineLoggingInterceptor.kt:38)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.SoftAssertInterceptor.intercept(SoftAssertInterceptor.kt:26)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.AssertionModeInterceptor.intercept(AssertionModeInterceptor.kt:26)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.LifecycleInterceptor.intercept(LifecycleInterceptor.kt:48)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.TestCaseExtensionInterceptor$intercept$2.invoke(TestCaseExtensionInterceptor.kt:21)\n\tat io.kotest.engine.test.TestExtensions.intercept(TestExtensions.kt:151)\n\tat io.kotest.engine.test.interceptors.TestCaseExtensionInterceptor.intercept(TestCaseExtensionInterceptor.kt:21)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.TestEnabledCheckInterceptor.intercept(TestEnabledCheckInterceptor.kt:41)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.CoroutineErrorCollectorInterceptor$intercept$3.invokeSuspend(CoroutineErrorCollectorInterceptor.kt:39)\n\tat io.kotest.engine.test.interceptors.CoroutineErrorCollectorInterceptor$intercept$3.invoke(CoroutineErrorCollectorInterceptor.kt)\n\tat io.kotest.engine.test.interceptors.CoroutineErrorCollectorInterceptor$intercept$3.invoke(CoroutineErrorCollectorInterceptor.kt)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndspatched(Undispatched.kt:66)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:43)\n\tat kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:165)\n\tat kotlinx.coroutines.BuildersKt.withContext(Unknown Source)\n\tat io.kotest.engine.test.interceptors.CoroutineErrorCollectorInterceptor.intercept(CoroutineErrorCollectorInterceptor.kt:38)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.CoroutineDispatcherFactoryTestInterceptor.intercept(CoroutineDispatcherFactoryTestInterceptor.kt:41)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.SupervisorScopeInterceptor$intercept$2.invokeSuspend(SupervisorScopeInterceptor.kt:23)\n\tat io.kotest.engine.test.interceptors.SupervisorScopeInterceptor$intercept$2.invoke(SupervisorScopeInterceptor.kt)\n\tat io.kotest.engine.test.interceptors.SupervisorScopeInterceptor$intercept$2.invoke(SupervisorScopeInterceptor.kt)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndspatched(Undispatched.kt:66)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:43)\n\tat kotlinx.coroutines.SupervisorKt.supervisorScope(Supervisor.kt:56)\n\tat io.kotest.engine.test.interceptors.SupervisorScopeInterceptor.intercept(SupervisorScopeInterceptor.kt:22)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.InvocationCountCheckInterceptor.intercept(InvocationCountCheckInterceptor.kt:33)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.TestFinishedInterceptor.intercept(TestFinishedInterceptor.kt:23)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.FailFastInterceptor.intercept(FailFastInterceptor.kt:24)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.TestNameContextInterceptor$intercept$2.invokeSuspend(TestNameContextInterceptor.kt:21)\n\tat io.kotest.engine.test.interceptors.TestNameContextInterceptor$intercept$2.invoke(TestNameContextInterceptor.kt)\n\tat io.kotest.engine.test.interceptors.TestNameContextInterceptor$intercept$2.invoke(TestNameContextInterceptor.kt)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndspatched(Undispatched.kt:66)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:43)\n\tat kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:165)\n\tat kotlinx.coroutines.BuildersKt.withContext(Unknown Source)\n\tat io.kotest.engine.test.interceptors.TestNameContextInterceptor.intercept(TestNameContextInterceptor.kt:20)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.interceptors.DescriptorPathContextInterceptor$intercept$2.invokeSuspend(DescriptorPathContextInterceptor.kt:21)\n\tat io.kotest.engine.test.interceptors.DescriptorPathContextInterceptor$intercept$2.invoke(DescriptorPathContextInterceptor.kt)\n\tat io.kotest.engine.test.interceptors.DescriptorPathContextInterceptor$intercept$2.invoke(DescriptorPathContextInterceptor.kt)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndspatched(Undispatched.kt:66)\n\tat kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:43)\n\tat kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:165)\n\tat kotlinx.coroutines.BuildersKt.withContext(Unknown Source)\n\tat io.kotest.engine.test.interceptors.DescriptorPathContextInterceptor.intercept(DescriptorPathContextInterceptor.kt:20)\n\tat io.kotest.engine.test.TestCaseExecutor$execute$3$1.invoke(TestCaseExecutor.kt:123)\n\tat io.kotest.engine.test.TestCaseExecutor.execute(TestCaseExecutor.kt:124)\n\tat io.kotest.engine.spec.execution.SingleInstanceSpecExecutor.executeTest(SingleInstanceSpecExecutor.kt:76)\n\tat io.kotest.engine.spec.execution.SingleInstanceSpecExecutor.access$executeTest(SingleInstanceSpecExecutor.kt:26)\n\tat io.kotest.engine.spec.execution.SingleInstanceSpecExecutor$launchRootTests$2$1$1.invokeSuspend(SingleInstanceSpecExecutor.kt:57)\n\tat kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:34)\n\tat kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:100)\n\tat kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:263)\n\tat kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:94)\n\tat kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(Builders.kt:70)\n\tat kotlinx.coroutines.BuildersKt.runBlocking(Unknown Source)\n\tat kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking$default(Builders.kt:48)\n\tat kotlinx.coroutines.BuildersKt.runBlocking$default(Unknown Source)\n\tat io.kotest.runner.junit.platform.KotestJunitPlatformTestEngine.execute(KotestJunitPlatformTestEngine.kt:86)\n\tat io.kotest.runner.junit.platform.KotestJunitPlatformTestEngine.execute(KotestJunitPlatformTestEngine.kt:56)\n\tat org.junit.platform.launcher.core.EngineExecutionOrchestrator.executeEngine(EngineExecutionOrchestrator.java:246)\n\tat org.junit.platform.launcher.core.EngineExecutionOrchestrator.failOrExecuteEngine(EngineExecutionOrchestrator.java:218)\n\tat org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:179)\n\tat org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:108)\n\tat org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:66)\n\tat org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:157)\n\tat org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:65)\n\tat org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:125)\n\tat org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)\n\tat org.junit.platform.launcher.core.DelegatingLauncher.execute(DelegatingLauncher.java:58)\n\tat org.junit.platform.launcher.core.InterceptingLauncher.lambda$execute$2(InterceptingLauncher.java:57)\n\tat org.junit.platform.launcher.core.ClasspathAlignmentCheckingLauncherInterceptor.intercept(ClasspathAlignmentCheckingLauncherInterceptor.java:25)\n\tat org.junit.platform.launcher.core.InterceptingLauncher.execute(InterceptingLauncher.java:56)\n\tat org.junit.platform.launcher.core.DelegatingLauncher.execute(DelegatingLauncher.java:58)\n\tat java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\n\tat java.base/java.lang.reflect.Method.invoke(Method.java:565)\n\tat org.apache.maven.surefire.api.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:125)\n\tat org.apache.maven.surefire.junitplatform.LauncherAdapter.executeWithCancellationToken(LauncherAdapter.java:68)\n\tat org.apache.maven.surefire.junitplatform.LauncherAdapter.execute(LauncherAdapter.java:54)\n\tat org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.execute(JUnitPlatformProvider.java:203)\n\tat org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invokeAllTests(JUnitPlatformProvider.java:168)\n\tat org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invoke(JUnitPlatformProvider.java:136)\n\tat org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:385)\n\tat org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:162)\n\tat org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:507)\n\tat org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:495)\n"}
[INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.049 s -- in org.jointhefreeworld.symbanta.feature.statistics.adapter.inbound.web.StatsUserAgentsControllerSpec
[INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.317 s -- in org.jointhefreeworld.symbanta.feature.statistics.adapter.inbound.web.StatsUserAgentsControllerSpec
[INFO] Running org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.persistence.JpaAnalyticsQueryAdapterSpec
{"@timestamp":"2026-11-10T20:50:32.559023207+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1860323956#80","message":"Saving property with ID: df239cca-4f77-48fe-8bf7-e1ccbac84823"}
[INFO] Running org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.persistence.JpaAnalyticsQueryAdapterSpec
{"@timestamp":"2026-11-10T20:50:32.627714305+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1860323956#80","message":"Saving property with ID: 8631fddb-5664-42b3-9604-0db1334671af"}
{"@timestamp":"2026-11-10T20:50:32.818742076+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1860323956#80","message":"Saving property with ID: 6ac3efed-9260-425f-9d5b-fa7f4e337c97"}
{"@timestamp":"2026-11-10T20:50:32.946503106+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1860323956#80","message":"Saving property with ID: 8d33c76c-e292-468e-b8e5-71afb132821e"}
{"@timestamp":"2026-11-10T20:50:33.041416831+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1860323956#80","message":"Saving property with ID: 3fa6c724-46d3-43bf-80b4-f7843ef5b707"}
[INFO] Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.531 s -- in org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.persistence.JpaAnalyticsQueryAdapterSpec
{"@timestamp":"2026-11-10T20:50:33.195857473+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1860323956#81","message":"Saving property with ID: 8bb9deff-728e-41e8-8783-f3330724a8f9"}
[INFO] Running org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.persistence.JpaAnalyticsQueryAdapterSpec
{"@timestamp":"2026-11-10T20:50:33.264911166+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1860323956#81","message":"Saving property with ID: 2926bb81-ddcd-40c9-8564-eeff98391a5a"}
{"@timestamp":"2026-11-10T20:50:33.387671954+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1860323956#81","message":"Saving property with ID: 57f7ee4f-0ac8-480a-a481-1de4341268cc"}
{"@timestamp":"2026-11-10T20:50:33.509608946+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1860323956#81","message":"Saving property with ID: 42f15441-942c-474e-9fbe-eeb848be6d76"}
{"@timestamp":"2026-11-10T20:50:33.624250371+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1860323956#81","message":"Saving property with ID: af7b7a61-df0a-45ae-b6eb-b8abf994941c"}
{"@timestamp":"2026-11-10T20:50:33.737219236+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1860323956#81","message":"Saving property with ID: a308106a-6db6-48f4-af39-af0ba7ee2f89"}
{"@timestamp":"2026-11-10T20:50:33.836376919+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1860323956#81","message":"Saving property with ID: 37a39be5-4827-4832-922b-74c482f9b46e"}
{"@timestamp":"2026-11-10T20:50:33.942187053+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1860323956#81","message":"Saving property with ID: 093e00da-b6f7-49d4-8e82-b8a820733431"}
[INFO] Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.790 s -- in org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.persistence.JpaAnalyticsQueryAdapterSpec
{"@timestamp":"2026-11-10T20:50:34.05784878+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1860323956#82","message":"Saving property with ID: 05193bec-1811-4c5f-8ecb-23f4b7ec7eb1"}
[INFO] Running org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.persistence.JpaAnalyticsQueryAdapterSpec
{"@timestamp":"2026-11-10T20:50:34.12402888+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1860323956#82","message":"Saving property with ID: c1c630db-49c8-4085-ba41-d1fac4626894"}
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.161 s -- in org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.persistence.JpaAnalyticsQueryAdapterSpec
{"@timestamp":"2026-11-10T20:50:34.289152582+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1860323956#83","message":"Saving property with ID: a5300cf3-68ee-4066-8a0f-ba8e4e5d53c9"}
[INFO] Running org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.persistence.JpaAnalyticsQueryAdapterSpec
{"@timestamp":"2026-11-10T20:50:34.345401592+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1860323956#83","message":"Saving property with ID: a71d9a2b-ad74-458e-b2a5-14556b711e10"}
{"@timestamp":"2026-11-10T20:50:34.467552475+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1860323956#83","message":"Saving property with ID: 714beb07-541c-47c6-920b-5dfc8ad8e9aa"}
{"@timestamp":"2026-11-10T20:50:34.553650342+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1860323956#83","message":"Saving property with ID: dedeefd1-daa9-420e-a1f0-4cf155fa8054"}
[INFO] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.306 s -- in org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.persistence.JpaAnalyticsQueryAdapterSpec
{"@timestamp":"2026-11-10T20:50:34.655463257+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1860323956#84","message":"Saving property with ID: dfabd83a-ace5-4514-914c-44d10d0e77c4"}
[INFO] Running org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.persistence.JpaAnalyticsQueryAdapterSpec
{"@timestamp":"2026-11-10T20:50:34.710531876+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1860323956#84","message":"Saving property with ID: 9ddb75cd-9cf7-4255-ab4d-c4cdcd72d1ad"}
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.114 s -- in org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.persistence.JpaAnalyticsQueryAdapterSpec
{"@timestamp":"2026-11-10T20:50:34.842668372+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1860323956#85","message":"Saving property with ID: f7ad8c8c-3550-4008-9dcd-4c2d20bb3664"}
[INFO] Running org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.persistence.JpaAnalyticsQueryAdapterSpec
{"@timestamp":"2026-11-10T20:50:34.905024595+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1860323956#85","message":"Saving property with ID: 5f1bab5c-9445-406f-8261-6e6a323c1944"}
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.122 s -- in org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.persistence.JpaAnalyticsQueryAdapterSpec
{"@timestamp":"2026-11-10T20:50:35.042522846+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1860323956#86","message":"Saving property with ID: 5b6dc3d8-953e-4ff9-85d2-6bf8e4b8a80c"}
[INFO] Running org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.persistence.JpaAnalyticsQueryAdapterSpec
{"@timestamp":"2026-11-10T20:50:35.097084594+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1860323956#86","message":"Saving property with ID: 405ff83a-a988-468d-badc-07e1dd4f258b"}
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.106 s -- in org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.persistence.JpaAnalyticsQueryAdapterSpec
[INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.701 s -- in org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.persistence.JpaAnalyticsQueryAdapterSpec
[INFO] Running org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.persistence.JpaTimeSeriesTimeZoneSpec
{"@timestamp":"2026-11-10T20:50:35.234573852+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1383567584#87","message":"Saving property with ID: ec4c6679-6d03-4266-b61f-b8d41bd2b2f7"}
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.166 s -- in org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.persistence.JpaTimeSeriesTimeZoneSpec
[INFO] Running org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.RollupAnalyticsQueryAdapterSpec
{"@timestamp":"2026-11-10T20:50:35.397972386+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-849974773#88","message":"Saving property with ID: b50ebc58-ea27-4cae-92e7-4e4a2b232039"}
[INFO] Running org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.RollupAnalyticsQueryAdapterSpec
{"@timestamp":"2026-11-10T20:50:35.45362551+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-849974773#88","message":"Saving property with ID: dc2c71fc-4fd3-4415-992d-e2451218463a"}
{"@timestamp":"2026-11-10T20:50:35.542166353+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.StatsRollupRefresher","thread_name":"main @spec-scope-849974773#88","message":"Rolled up analytics from 2026-01-10T12:00:00Z to 2026-11-10T19:00:00Z (7303 hour buckets)"}
{"@timestamp":"2026-11-10T20:50:35.641692748+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-849974773#88","message":"Saving property with ID: 741349a7-27b5-455a-bf44-a47b0d5a138d"}
{"@timestamp":"2026-11-10T20:50:35.694594155+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.StatsRollupRefresher","thread_name":"main @spec-scope-849974773#88","message":"Rolled up analytics from 2026-01-10T12:00:00Z to 2026-11-10T19:00:00Z (7303 hour buckets)"}
{"@timestamp":"2026-11-10T20:50:35.799353032+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-849974773#88","message":"Saving property with ID: f1464b4e-4f75-47ae-a10e-2dfa86751915"}
{"@timestamp":"2026-11-10T20:50:35.870096059+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-849974773#88","message":"Saving property with ID: 635434c3-05fe-4ac6-a780-c6276228c120"}
{"@timestamp":"2026-11-10T20:50:35.927231699+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.StatsRollupRefresher","thread_name":"main @spec-scope-849974773#88","message":"Rolled up analytics from 2026-01-10T12:00:00Z to 2026-11-10T19:00:00Z (7303 hour buckets)"}
[INFO] Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.571 s -- in org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.RollupAnalyticsQueryAdapterSpec
{"@timestamp":"2026-11-10T20:50:36.038955787+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-849974773#89","message":"Saving property with ID: b44c60d0-320c-4f6b-ab83-1018fe8a7c3d"}
[INFO] Running org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.RollupAnalyticsQueryAdapterSpec
{"@timestamp":"2026-11-10T20:50:36.100597589+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-849974773#89","message":"Saving property with ID: 0ea1c7b3-da21-4b33-a88d-34c98c1ae4e5"}
{"@timestamp":"2026-11-10T20:50:36.172464332+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.StatsRollupRefresher","thread_name":"main @spec-scope-849974773#89","message":"Rolled up analytics from 2026-01-10T12:00:00Z to 2026-11-10T19:00:00Z (7303 hour buckets)"}
{"@timestamp":"2026-11-10T20:50:36.293642615+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-849974773#89","message":"Saving property with ID: a4343636-f184-4fe8-a1fc-f0af376ca991"}
{"@timestamp":"2026-11-10T20:50:36.360007823+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.StatsRollupRefresher","thread_name":"main @spec-scope-849974773#89","message":"Rolled up analytics from 2026-01-10T12:00:00Z to 2026-11-10T19:00:00Z (7303 hour buckets)"}
{"@timestamp":"2026-11-10T20:50:36.463744617+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-849974773#89","message":"Saving property with ID: b14f2ece-db81-40fb-bcac-12e24bfa6073"}
{"@timestamp":"2026-11-10T20:50:36.5210024+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.StatsRollupRefresher","thread_name":"main @spec-scope-849974773#89","message":"Rolled up analytics from 2026-01-08T23:00:00Z to 2026-11-10T19:00:00Z (7340 hour buckets)"}
{"@timestamp":"2026-11-10T20:50:36.627748428+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-849974773#89","message":"Saving property with ID: 008e4561-a7b6-4cd5-a516-d45f599a015b"}
{"@timestamp":"2026-11-10T20:50:36.685414224+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.StatsRollupRefresher","thread_name":"main @spec-scope-849974773#89","message":"Rolled up analytics from 2026-01-10T12:00:00Z to 2026-11-10T19:00:00Z (7303 hour buckets)"}
{"@timestamp":"2026-11-10T20:50:36.777627967+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-849974773#89","message":"Saving property with ID: 3503fbfc-e43b-47c9-80b7-aa9090d3ba80"}
{"@timestamp":"2026-11-10T20:50:36.859663559+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-849974773#89","message":"Saving property with ID: 3affc29f-fb61-4281-b783-5f6bf0ae53df"}
{"@timestamp":"2026-11-10T20:50:36.923725531+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.StatsRollupRefresher","thread_name":"main @spec-scope-849974773#89","message":"Rolled up analytics from 2026-01-10T12:00:00Z to 2026-11-10T19:00:00Z (7303 hour buckets)"}
{"@timestamp":"2026-11-10T20:50:37.038754628+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-849974773#89","message":"Saving property with ID: 3cb3882f-5ec4-46be-a5bb-ce69582afbc2"}
{"@timestamp":"2026-11-10T20:50:37.10970037+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.StatsRollupRefresher","thread_name":"main @spec-scope-849974773#89","message":"Rolled up analytics from 2026-01-08T22:00:00Z to 2026-11-10T19:00:00Z (7341 hour buckets)"}
[INFO] Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.107 s -- in org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.RollupAnalyticsQueryAdapterSpec
{"@timestamp":"2026-11-10T20:50:37.218656915+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-849974773#90","message":"Saving property with ID: ec978298-7f86-498d-b8a0-3fc80b3afefa"}
[INFO] Running org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.RollupAnalyticsQueryAdapterSpec
{"@timestamp":"2026-11-10T20:50:37.298051644+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-849974773#90","message":"Saving property with ID: d1c15219-9b8c-4f98-bbc8-21ce614d7818"}
{"@timestamp":"2026-11-10T20:50:37.381940907+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.StatsRollupRefresher","thread_name":"main @spec-scope-849974773#90","message":"Rolled up analytics from 2026-01-10T12:00:00Z to 2026-11-10T19:00:00Z (7303 hour buckets)"}
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.220 s -- in org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.RollupAnalyticsQueryAdapterSpec
{"@timestamp":"2026-11-10T20:50:37.52289329+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-849974773#91","message":"Saving property with ID: e3410590-4282-4c5f-ab66-d7ad77670aec"}
[INFO] Running org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.RollupAnalyticsQueryAdapterSpec
{"@timestamp":"2026-11-10T20:50:37.594430579+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-849974773#91","message":"Saving property with ID: da643197-7f55-4a3a-9c5f-6bb8c53d1f0f"}
{"@timestamp":"2026-11-10T20:50:37.670704525+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.StatsRollupRefresher","thread_name":"main @spec-scope-849974773#91","message":"Rolled up analytics from 2026-01-10T12:00:00Z to 2026-11-10T19:00:00Z (7303 hour buckets)"}
{"@timestamp":"2026-11-10T20:50:37.793150181+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-849974773#91","message":"Saving property with ID: f4d5be05-a6d7-4897-a720-236ce93d29c4"}
{"@timestamp":"2026-11-10T20:50:37.884546558+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-849974773#91","message":"Saving property with ID: efffbd7f-a68c-40c0-bebe-cb7df2a64a9e"}
{"@timestamp":"2026-11-10T20:50:37.962575977+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.StatsRollupRefresher","thread_name":"main @spec-scope-849974773#91","message":"Rolled up analytics from 2026-01-10T12:00:00Z to 2026-11-10T19:00:00Z (7303 hour buckets)"}
[INFO] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.458 s -- in org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.RollupAnalyticsQueryAdapterSpec
{"@timestamp":"2026-11-10T20:50:38.057397754+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-849974773#92","message":"Saving property with ID: 3711afef-5118-4cea-a826-b5c8aef27a5a"}
[INFO] Running org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.RollupAnalyticsQueryAdapterSpec
{"@timestamp":"2026-11-10T20:50:38.113112062+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-849974773#92","message":"Saving property with ID: 2090c95f-5420-4b2f-bf35-670d5daa2467"}
{"@timestamp":"2026-11-10T20:50:38.170511798+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.StatsRollupRefresher","thread_name":"main @spec-scope-849974773#92","message":"Rolled up analytics from 2026-01-10T12:00:00Z to 2026-11-10T19:00:00Z (7303 hour buckets)"}
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.137 s -- in org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.RollupAnalyticsQueryAdapterSpec
{"@timestamp":"2026-11-10T20:50:38.261156216+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-849974773#93","message":"Saving property with ID: cda86bd3-630f-4164-a5f3-75c749374bef"}
[INFO] Running org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.RollupAnalyticsQueryAdapterSpec
{"@timestamp":"2026-11-10T20:50:38.322244027+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-849974773#93","message":"Saving property with ID: 63ae6463-0d4e-40a7-84e1-ae3b746fe67c"}
{"@timestamp":"2026-11-10T20:50:38.373624071+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.StatsRollupRefresher","thread_name":"main @spec-scope-849974773#93","message":"Rolled up analytics from 2026-01-10T12:00:00Z to 2026-11-10T19:00:00Z (7303 hour buckets)"}
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.138 s -- in org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.RollupAnalyticsQueryAdapterSpec
{"@timestamp":"2026-11-10T20:50:38.452627902+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-849974773#94","message":"Saving property with ID: 53974916-3035-4ffd-806d-987e18840857"}
[INFO] Running org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.RollupAnalyticsQueryAdapterSpec
{"@timestamp":"2026-11-10T20:50:38.521609327+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-849974773#94","message":"Saving property with ID: 38fb8cab-2982-4c31-a26d-12223aaa97c0"}
{"@timestamp":"2026-11-10T20:50:38.585799172+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.StatsRollupRefresher","thread_name":"main @spec-scope-849974773#94","message":"Rolled up analytics from 2026-01-10T12:00:00Z to 2026-11-10T19:00:00Z (7303 hour buckets)"}
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.162 s -- in org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.RollupAnalyticsQueryAdapterSpec
[INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 3.273 s -- in org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.RollupAnalyticsQueryAdapterSpec
[INFO] Running org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.RollupDifferentialSpec
{"@timestamp":"2026-11-10T20:50:38.710724497+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1821329589#95","message":"Saving property with ID: 4bf23209-a9a4-4a5e-a32c-1699ca9f206d"}
{"@timestamp":"2026-11-10T20:50:39.061320133+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.StatsRollupRefresher","thread_name":"main @spec-scope-1821329589#95","message":"Rolled up analytics from 2026-01-05T07:00:00Z to 2026-11-10T19:00:00Z (7428 hour buckets)"}
{"@timestamp":"2026-11-10T20:50:39.649706244+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1821329589#96","message":"Saving property with ID: e97500fb-f45b-4786-b87e-31b4cbe8bccd"}
{"@timestamp":"2026-11-10T20:50:39.921590146+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.StatsRollupRefresher","thread_name":"main @spec-scope-1821329589#96","message":"Rolled up analytics from 2026-01-05T07:00:00Z to 2026-11-10T19:00:00Z (7428 hour buckets)"}
{"@timestamp":"2026-11-10T20:50:40.447982559+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1821329589#97","message":"Saving property with ID: b1ec1dea-fa30-436d-b601-21ca93ddf26f"}
{"@timestamp":"2026-11-10T20:50:40.659519932+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.StatsRollupRefresher","thread_name":"main @spec-scope-1821329589#97","message":"Rolled up analytics from 2026-01-05T07:00:00Z to 2026-11-10T19:00:00Z (7428 hour buckets)"}
{"@timestamp":"2026-11-10T20:50:41.185500917+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1821329589#98","message":"Saving property with ID: 25709f17-72e8-45c1-8ddf-37a1c57146bc"}
{"@timestamp":"2026-11-10T20:50:41.339702952+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.StatsRollupRefresher","thread_name":"main @spec-scope-1821329589#98","message":"Rolled up analytics from 2026-01-05T07:00:00Z to 2026-11-10T19:00:00Z (7428 hour buckets)"}
{"@timestamp":"2026-11-10T20:50:41.809272614+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1821329589#99","message":"Saving property with ID: 97a4f67b-3b6c-4266-8cb3-a718671c33a5"}
{"@timestamp":"2026-11-10T20:50:41.956555597+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.StatsRollupRefresher","thread_name":"main @spec-scope-1821329589#99","message":"Rolled up analytics from 2026-01-05T07:00:00Z to 2026-11-10T19:00:00Z (7428 hour buckets)"}
{"@timestamp":"2026-11-10T20:50:42.562588677+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1821329589#100","message":"Saving property with ID: 4fbb90ad-2729-4d5a-99ac-fc8a29f6513f"}
{"@timestamp":"2026-11-10T20:50:42.724638146+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.StatsRollupRefresher","thread_name":"main @spec-scope-1821329589#100","message":"Rolled up analytics from 2026-01-05T07:00:00Z to 2026-11-10T19:00:00Z (7428 hour buckets)"}
{"@timestamp":"2026-11-10T20:50:43.262619607+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1821329589#101","message":"Saving property with ID: 335d5f6b-0e0a-4645-a631-7dc272d0438f"}
{"@timestamp":"2026-11-10T20:50:43.402195005+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.StatsRollupRefresher","thread_name":"main @spec-scope-1821329589#101","message":"Rolled up analytics from 2026-01-05T07:00:00Z to 2026-11-10T19:00:00Z (7428 hour buckets)"}
{"@timestamp":"2026-11-10T20:50:43.934979828+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1821329589#102","message":"Saving property with ID: ccbe0197-fadc-4bd3-9c4b-5520603c9357"}
{"@timestamp":"2026-11-10T20:50:44.08090201+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.StatsRollupRefresher","thread_name":"main @spec-scope-1821329589#102","message":"Rolled up analytics from 2026-01-05T07:00:00Z to 2026-11-10T19:00:00Z (7428 hour buckets)"}
[INFO] Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 5.688 s -- in org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.RollupDifferentialSpec
[INFO] Running org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.RollupWindowSpec
[INFO] Tests run: 9, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.067 s -- in org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.RollupWindowSpec
[INFO] Running org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.StatsRollupRefresherSpec
{"@timestamp":"2026-11-10T20:50:44.475756024+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-451720125#112","message":"Saving property with ID: 11b1a12b-aa47-4e78-b3f1-ff11d10a4263"}
{"@timestamp":"2026-11-10T20:50:44.534334238+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.StatsRollupRefresher","thread_name":"main @spec-scope-451720125#112","message":"Rolled up analytics from 2026-01-08T09:00:00Z to 2026-11-10T19:00:00Z (7354 hour buckets)"}
{"@timestamp":"2026-11-10T20:50:44.608263016+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-451720125#113","message":"Saving property with ID: 066e0846-2b31-439b-aef7-e141bfef8b57"}
{"@timestamp":"2026-11-10T20:50:44.672753341+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.StatsRollupRefresher","thread_name":"main @spec-scope-451720125#113","message":"Rolled up analytics from 2026-01-08T09:00:00Z to 2026-11-10T19:00:00Z (7354 hour buckets)"}
{"@timestamp":"2026-11-10T20:50:44.753527079+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-451720125#114","message":"Saving property with ID: 0c6483be-c3dd-4142-8490-50779535e4d3"}
{"@timestamp":"2026-11-10T20:50:44.808342447+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.StatsRollupRefresher","thread_name":"main @spec-scope-451720125#114","message":"Rolled up analytics from 2026-01-08T09:00:00Z to 2026-11-10T19:00:00Z (7354 hour buckets)"}
{"@timestamp":"2026-11-10T20:50:44.874138331+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-451720125#115","message":"Saving property with ID: f799336f-8729-4202-8ebd-6a6e5e1f0d91"}
{"@timestamp":"2026-11-10T20:50:44.928806409+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.StatsRollupRefresher","thread_name":"main @spec-scope-451720125#115","message":"Rolled up analytics from 2026-01-08T09:00:00Z to 2026-11-10T19:00:00Z (7354 hour buckets)"}
{"@timestamp":"2026-11-10T20:50:44.995130807+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-451720125#116","message":"Saving property with ID: e7e91a44-4b69-4e43-b068-d78fece35397"}
{"@timestamp":"2026-11-10T20:50:45.046741766+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.StatsRollupRefresher","thread_name":"main @spec-scope-451720125#116","message":"Rolled up analytics from 2026-01-08T09:00:00Z to 2026-11-10T19:00:00Z (7354 hour buckets)"}
{"@timestamp":"2026-11-10T20:50:45.160092455+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-451720125#117","message":"Saving property with ID: b2d7f0d1-28b5-473b-860d-181dd0cd24b4"}
{"@timestamp":"2026-11-10T20:50:45.219099463+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.StatsRollupRefresher","thread_name":"main @spec-scope-451720125#117","message":"Rolled up analytics from 2026-01-08T09:00:00Z to 2026-11-10T19:00:00Z (7354 hour buckets)"}
{"@timestamp":"2026-11-10T20:50:45.349273765+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-451720125#118","message":"Saving property with ID: 8379b3c5-1e30-424a-892b-870f3eaca6ec"}
{"@timestamp":"2026-11-10T20:50:45.462980407+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-451720125#119","message":"Saving property with ID: 24d3a8c4-34e7-4eae-87e4-522fa7956e1a"}
{"@timestamp":"2026-11-10T20:50:45.507194719+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.StatsRollupRefresher","thread_name":"main @spec-scope-451720125#119","message":"Rolled up analytics from 2026-01-08T09:00:00Z to 2026-11-10T19:00:00Z (7354 hour buckets)"}
[INFO] Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.231 s -- in org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.StatsRollupRefresherSpec
[INFO] Running org.jointhefreeworld.symbanta.feature.statistics.domain.UserAgentParserSpec
[INFO] Running org.jointhefreeworld.symbanta.feature.statistics.domain.UserAgentParserSpec
[INFO] Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.029 s -- in org.jointhefreeworld.symbanta.feature.statistics.domain.UserAgentParserSpec
[INFO] Running org.jointhefreeworld.symbanta.feature.statistics.domain.UserAgentParserSpec
[INFO] Tests run: 10, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.021 s -- in org.jointhefreeworld.symbanta.feature.statistics.domain.UserAgentParserSpec
[INFO] Running org.jointhefreeworld.symbanta.feature.statistics.domain.UserAgentParserSpec
[INFO] Tests run: 14, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.041 s -- in org.jointhefreeworld.symbanta.feature.statistics.domain.UserAgentParserSpec
[INFO] Running org.jointhefreeworld.symbanta.feature.statistics.domain.UserAgentParserSpec
[INFO] Tests run: 22, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.050 s -- in org.jointhefreeworld.symbanta.feature.statistics.domain.UserAgentParserSpec
[INFO] Running org.jointhefreeworld.symbanta.feature.statistics.domain.UserAgentParserSpec
[INFO] Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.014 s -- in org.jointhefreeworld.symbanta.feature.statistics.domain.UserAgentParserSpec
[INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.234 s -- in org.jointhefreeworld.symbanta.feature.statistics.domain.UserAgentParserSpec
[INFO] Running org.jointhefreeworld.symbanta.feature.statistics.service.CachingStatisticsQueryServiceSpec
[INFO] Running org.jointhefreeworld.symbanta.feature.statistics.service.CachingStatisticsQueryServiceSpec
[INFO] Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.150 s -- in org.jointhefreeworld.symbanta.feature.statistics.service.CachingStatisticsQueryServiceSpec
[INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.347 s -- in org.jointhefreeworld.symbanta.feature.statistics.service.CachingStatisticsQueryServiceSpec
[INFO] Running org.jointhefreeworld.symbanta.feature.statistics.service.StatisticsQueryServiceSpec
[INFO] Running org.jointhefreeworld.symbanta.feature.statistics.service.StatisticsQueryServiceSpec
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.010 s -- in org.jointhefreeworld.symbanta.feature.statistics.service.StatisticsQueryServiceSpec
[INFO] Running org.jointhefreeworld.symbanta.feature.statistics.service.StatisticsQueryServiceSpec
[INFO] Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.056 s -- in org.jointhefreeworld.symbanta.feature.statistics.service.StatisticsQueryServiceSpec
[INFO] Running org.jointhefreeworld.symbanta.feature.statistics.service.StatisticsQueryServiceSpec
[INFO] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.019 s -- in org.jointhefreeworld.symbanta.feature.statistics.service.StatisticsQueryServiceSpec
[INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.134 s -- in org.jointhefreeworld.symbanta.feature.statistics.service.StatisticsQueryServiceSpec
[INFO] Running org.jointhefreeworld.symbanta.shared.domain.ReportingPeriodResolverSpec
Warning, type class java.time.Instant used in data testing does not have a stable toString()
Warning, type class java.time.Instant used in data testing does not have a stable toString()
Warning, type class org.jointhefreeworld.symbanta.shared.domain.DateRange used in data testing does not have a stable toString()
Warning, type class kotlin.Pair used in data testing does not have a stable toString()
[INFO] Running org.jointhefreeworld.symbanta.shared.domain.ReportingPeriodResolverSpec
Warning, type class java.time.Instant used in data testing does not have a stable toString()
Warning, type class java.time.Instant used in data testing does not have a stable toString()
Warning, type class org.jointhefreeworld.symbanta.shared.domain.DateRange used in data testing does not have a stable toString()
Warning, type class kotlin.Pair used in data testing does not have a stable toString()
WARN: Duplicated test name kotlin.Pair. To disable this message, set DuplicateTestNameMode to Silent.
Warning, type class java.time.Instant used in data testing does not have a stable toString()
Warning, type class java.time.Instant used in data testing does not have a stable toString()
Warning, type class org.jointhefreeworld.symbanta.shared.domain.DateRange used in data testing does not have a stable toString()
Warning, type class kotlin.Pair used in data testing does not have a stable toString()
WARN: Duplicated test name kotlin.Pair. To disable this message, set DuplicateTestNameMode to Silent.
Warning, type class java.time.Instant used in data testing does not have a stable toString()
Warning, type class java.time.Instant used in data testing does not have a stable toString()
Warning, type class org.jointhefreeworld.symbanta.shared.domain.DateRange used in data testing does not have a stable toString()
Warning, type class kotlin.Pair used in data testing does not have a stable toString()
WARN: Duplicated test name kotlin.Pair. To disable this message, set DuplicateTestNameMode to Silent.
Warning, type class java.time.Instant used in data testing does not have a stable toString()
Warning, type class java.time.Instant used in data testing does not have a stable toString()
Warning, type class org.jointhefreeworld.symbanta.shared.domain.DateRange used in data testing does not have a stable toString()
Warning, type class kotlin.Pair used in data testing does not have a stable toString()
WARN: Duplicated test name kotlin.Pair. To disable this message, set DuplicateTestNameMode to Silent.
[INFO] Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.017 s -- in org.jointhefreeworld.symbanta.shared.domain.ReportingPeriodResolverSpec
[INFO] Running org.jointhefreeworld.symbanta.shared.domain.ReportingPeriodResolverSpec
[INFO] Tests run: 9, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.031 s -- in org.jointhefreeworld.symbanta.shared.domain.ReportingPeriodResolverSpec
[INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.131 s -- in org.jointhefreeworld.symbanta.shared.domain.ReportingPeriodResolverSpec
[INFO]
[INFO] Results:
[INFO]
[INFO] Tests run: 216, Failures: 0, Errors: 0, Skipped: 0
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 02:20 min
[INFO] Finished at: 2026-11-10T20:50:47+01:00
[INFO] ------------------------------------------------------------------------
--------------------------------------------------------------
Maak 0.14.0: the infinitely extensible command runner
Loading tasks from Maak file: /etc/byggsteg/job-clone/symbanta/trunk/maak.scm
Executing Maak tasks: test
--------------------------------------------------------------
=> Running Maak task: test
Test the project.
Executing: env NIX_CONFIG='experimental-features = nix-command flakes' nix develop . --command bash -c './mvnw test'