symbanta-1fdfddd4-dbd4

job succeeded

starting new job...


→ running command: dir='/etc/byggsteg/job-clone//symbanta/trunk'
branch='trunk'
if ! command -v git >/dev/null 2>&1; then
  echo 'byggsteg: git is not on this deployment PATH, so the clone cannot be updated' >&2
  exit 1
fi
if ! cd "$dir"; then
  echo "byggsteg: cannot enter the clone $dir" >&2
  exit 1
fi
root=$(git rev-parse --show-toplevel 2>/dev/null)
if [ "$root" != "$(pwd -P)" ]; then
  echo "byggsteg: $dir is not a git checkout; remove it and the next run clones it again" >&2
  exit 1
fi
if ! origin=$(git remote get-url origin 2>/dev/null); then
  echo "byggsteg: $dir has no origin remote to fetch $branch from" >&2
  exit 1
fi
before=$(git rev-parse --short HEAD 2>/dev/null) || before=none
attempt=1
while :; do
  if GIT_TERMINAL_PROMPT=0 git fetch --quiet origin "+refs/heads/$branch:refs/remotes/origin/$branch"; then
    break
  fi
  if [ "$attempt" -ge 3 ]; then
    echo "byggsteg: could not fetch $branch from $origin after 3 attempts; is the branch still there, and is the remote reachable?" >&2
    exit 1
  fi
  echo "byggsteg: fetching $branch from $origin failed; retrying in $((attempt * 2))s" >&2
  sleep $((attempt * 2))
  attempt=$((attempt + 1))
done
if ! git checkout --quiet --force -B "$branch" FETCH_HEAD; then
  echo "byggsteg: fetched $branch from $origin but could not check it out" >&2
  exit 1
fi
after=$(git rev-parse --short HEAD)
if [ "$before" = "$after" ]; then
  echo "byggsteg: $branch was already at $after"
else
  echo "byggsteg: $branch moved from $before to $after"
fi


byggsteg: trunk moved from c337596 to 370c0eb

→ running command: cd /etc/byggsteg/job-clone/symbanta/trunk && uname -a

Linux wolk-jjba 7.2.11-gnu #1 SMP PREEMPT_DYNAMIC 1 x86_64 GNU/Linux

→ running command: cd /etc/byggsteg/job-clone/symbanta/trunk && git log --name-status HEAD^..HEAD

commit 370c0eba644e777a77e9e0377643143c5271aa47
Author: Josep Bigorra <jjbigorra@gmail.com>
Date:   Wed Nov 4 23:10:11 2026 +0100

    docs: Update visual identity

M       README.org
A       logo.svg

→ running command: cd /etc/byggsteg/job-clone/symbanta/trunk && maak test

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 04, 2026 11:13:09 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
23:13:39.151 [main @spec-scope-2121491280#27] INFO org.testcontainers.images.PullPolicy -- Image pull policy will be performed by: DefaultPullPolicy()
23:13:39.161 [main @spec-scope-2121491280#27] INFO org.testcontainers.utility.ImageNameSubstitutor -- Image name substitution will be performed by: DefaultImageNameSubstitutor (composite of 'ConfigurationFileImageNameSubstitutor' and 'PrefixingImageNameSubstitutor')
23:13:40.835 [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
23:13:40.836 [main @spec-scope-2121491280#27] INFO org.testcontainers.DockerClientFactory -- Docker host IP address is localhost
23:13:40.922 [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
23:13:40.927 [main @spec-scope-2121491280#27] WARN org.testcontainers.utility.ResourceReaper -- 
********************************************************************************
Ryuk has been disabled. This can cause unexpected behavior in your environment.
********************************************************************************
23:13:40.931 [main @spec-scope-2121491280#27] INFO org.testcontainers.DockerClientFactory -- Checking the system...
23:13:40.931 [main @spec-scope-2121491280#27] INFO org.testcontainers.DockerClientFactory -- ✔︎ Docker server version should be at least 1.6.0
23:13:41.076 [main @spec-scope-2121491280#27] INFO tc.postgres:16-alpine -- Creating container for image: postgres:16-alpine
23:13:41.080 [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)
23:13:41.331 [main @spec-scope-2121491280#27] INFO tc.postgres:16-alpine -- Container postgres:16-alpine is starting: db74b065c8278a838c63149b301b766afc22902d3c536a29da315d618527bb23
23:13:45.216 [main @spec-scope-2121491280#27] INFO tc.postgres:16-alpine -- Container postgres:16-alpine started in PT4.139835813S
23:13:45.217 [main @spec-scope-2121491280#27] INFO tc.postgres:16-alpine -- Container is started (JDBC URL: jdbc:postgresql://localhost:32993/symbanta_test?loggerLevel=OFF)
23:13:46.089 [main @spec-scope-2121491280#27] INFO org.flywaydb.core.FlywayExecutor -- Database: jdbc:postgresql://localhost:32993/symbanta_test?loggerLevel=OFF (PostgreSQL 16.15)
23:13:46.419 [main @spec-scope-2121491280#27] INFO org.flywaydb.core.internal.schemahistory.JdbcTableSchemaHistory -- Schema history table "public"."flyway_schema_history" does not exist yet
23:13:46.434 [main @spec-scope-2121491280#27] INFO org.flywaydb.core.internal.command.DbValidate -- Successfully validated 4 migrations (execution time 00:00.066s)
23:13:46.486 [main @spec-scope-2121491280#27] INFO org.flywaydb.core.internal.schemahistory.JdbcTableSchemaHistory -- Creating Schema History table "public"."flyway_schema_history" ...
23:13:46.679 [main @spec-scope-2121491280#27] INFO org.flywaydb.core.internal.command.DbMigrate -- Current version of schema "public": << Empty Schema >>
23:13:46.716 [main @spec-scope-2121491280#27] INFO org.flywaydb.core.internal.command.DbMigrate -- Migrating schema "public" to version "1 - create symbanta schema"
23:13:46.783 [main @spec-scope-2121491280#27] INFO org.flywaydb.core.internal.command.DbMigrate -- Migrating schema "public" to version "3 - add users table"
23:13:46.816 [main @spec-scope-2121491280#27] INFO org.flywaydb.core.internal.command.DbMigrate -- Migrating schema "public" to version "4 - event context and event types"
23:13:46.895 [main @spec-scope-2121491280#27] INFO org.flywaydb.core.internal.command.DbMigrate -- Migrating schema "public" to version "5 - stats rollup tables"
23:13:47.018 [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.186s)
{"@timestamp":"2026-11-04T23:13:49.114670596+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 14883 (started by root in /etc/byggsteg/job-clone/symbanta/trunk)"}
{"@timestamp":"2026-11-04T23:13:49.122578457+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-04T23:13:52.548800796+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-04T23:13:53.041951878+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 475 ms. Found 4 JPA repository interfaces."}
{"@timestamp":"2026-11-04T23:13:54.996335501+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-04T23:13:55.032298752+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-04T23:13:55.033655068+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-04T23:13:55.307268104+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 6099 ms"}
{"@timestamp":"2026-11-04T23:13:57.274592475+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-04T23:13:57.426293008+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-04T23:13:58.473010822+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-04T23:13:58.58883087+01:00","level":"INFO","logger_name":"com.zaxxer.hikari.HikariDataSource","thread_name":"main @spec-scope-2121491280#27","message":"HikariPool-1 - Starting..."}
{"@timestamp":"2026-11-04T23:13:58.680045667+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@2e44bc38"}
{"@timestamp":"2026-11-04T23:13:58.687124775+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-04T23:13:59.009399226+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:32993/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-04T23:14:01.97045949+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-04T23:14:01.973959465+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-04T23:14:01.978109995+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-04T23:14:02.476491059+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-04T23:14:03.394383292+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-04T23:14:03.395113438+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-04T23:14:06.616201864+01:00","level":"INFO","logger_name":"org.flywaydb.core.FlywayExecutor","thread_name":"main @spec-scope-2121491280#27","message":"Database: jdbc:postgresql://localhost:32993/symbanta_test?loggerLevel=OFF (PostgreSQL 16.15)"}
{"@timestamp":"2026-11-04T23:14:06.645026678+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.011s)"}
{"@timestamp":"2026-11-04T23:14:06.676431575+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-04T23:14:06.68044494+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-04T23:14:08.791283574+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-04T23:14:08.919697188+01:00","level":"INFO","logger_name":"org.springframework.boot.tomcat.TomcatWebServer","thread_name":"main @spec-scope-2121491280#27","message":"Tomcat started on port 34859 (http) with context path '/'"}
{"@timestamp":"2026-11-04T23:14:08.998281764+01:00","level":"INFO","logger_name":"org.apache.maven.surefire.booter.ForkedBooter","thread_name":"main @spec-scope-2121491280#27","message":"Started ForkedBooter in 21.599 seconds (process running for 32.859)"}
{"@timestamp":"2026-11-04T23:14:09.224827861+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-04T23:14:09.497950071+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: 8bc26030-8150-4b6c-9279-b6e04f9c80c3"}
{"@timestamp":"2026-11-04T23:14:09.666730905+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-04T23:14:09.671029599+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: b3bbd05d-9b9c-4f6c-81db-f424639b3560"}
{"@timestamp":"2026-11-04T23:14:09.676955835+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-04T23:14:09.681259417+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: ca23d390-a9e5-4439-8ebe-9b9e9f1401b0"}
{"@timestamp":"2026-11-04T23:14:09.685061015+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-04T23:14:09.687505855+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: 6573798f-e159-4c9c-99e9-041a47b332b0"}
{"@timestamp":"2026-11-04T23:14:09.691340612+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-04T23:14:09.693392442+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: 43cd321b-7413-41c3-8293-bf5160ff15e6"}
{"@timestamp":"2026-11-04T23:14:09.697599098+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-04T23:14:09.698045398+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-04T23:14:09.7331372+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-04T23:14:09.742477352+01:00","level":"INFO","logger_name":"org.springframework.boot.tomcat.GracefulShutdown","thread_name":"tomcat-shutdown","message":"Graceful shutdown complete"}
{"@timestamp":"2026-11-04T23:14:09.766711643+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-04T23:14:09.772077519+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-04T23:14:09.786137177+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: 31.12 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-04T23:14:10.564263062+01:00","level":"INFO","logger_name":"org.springframework.mock.web.MockServletContext","thread_name":"main @coroutine#3","message":"Initializing Spring TestDispatcherServlet ''"}
{"@timestamp":"2026-11-04T23:14:10.564485477+01:00","level":"INFO","logger_name":"org.springframework.test.web.servlet.TestDispatcherServlet","thread_name":"main @coroutine#3","message":"Initializing Servlet ''"}
{"@timestamp":"2026-11-04T23:14:10.564794089+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.423 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-04T23:14:11.355023645+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-04T23:14:11.863570131+01:00","level":"INFO","logger_name":"org.springframework.data.repository.config.RepositoryConfigurationDelegate","thread_name":"main @coroutine#4","message":"Finished Spring Data repository scanning in 507 ms. Found 4 JPA repository interfaces."}
{"@timestamp":"2026-11-04T23:14:12.03550509+01:00","level":"INFO","logger_name":"org.hibernate.orm.jpa","thread_name":"main @coroutine#4","message":"HHH008540: Processing PersistenceUnitInfo [name: default]"}
{"@timestamp":"2026-11-04T23:14:12.100817391+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-04T23:14:12.148644162+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:32993/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-04T23:14:12.338841139+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-04T23:14:12.359784651+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-04T23:14:12.360329109+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-04T23:14:12.695127391+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-2035601953#40","message":"Saving property with ID: edbe6668-1b8f-447a-84fc-1001dc45d052"}
[INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.918 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.271 s -- in org.jointhefreeworld.symbanta.feature.console.service.ConsoleLogServiceSpec
[INFO] Running org.jointhefreeworld.symbanta.feature.events.adapter.outbound.persistence.JpaEventStoreColumnsSpec
{"@timestamp":"2026-11-04T23:14:13.615312576+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-697538758#45","message":"Saving property with ID: c0728245-b129-42c4-8e00-96ce5f268d3d"}
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.230 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-04T23:14:13.855782334+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-2067533068#46","message":"Saving property with ID: a48c05eb-e19e-46d1-8bb4-352c1c769b65"}
{"@timestamp":"2026-11-04T23:14:14.135394007+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-2067533068#48","message":"Saving property with ID: abba23ae-0990-4080-825f-5713b9170166"}
[INFO] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.498 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.613 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-04T23:14:15.024758051+01:00","level":"ERROR","logger_name":"org.jointhefreeworld.symbanta.feature.events.adapter.outbound.queue.BatchingEventDispatcher","thread_name":"DefaultDispatcher-worker-3 @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.034 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-04T23:14:15.063270218+01:00","level":"WARN","logger_name":"org.jointhefreeworld.symbanta.feature.events.adapter.outbound.queue.BatchingEventDispatcher","thread_name":"main @spec-scope-741711600#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.028 s -- in org.jointhefreeworld.symbanta.feature.events.adapter.outbound.queue.BatchingEventDispatcherSpec
[INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.833 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.093 s -- in org.jointhefreeworld.symbanta.feature.events.service.EventIngestionServiceSpec
[INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.143 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-04T23:14:15.298155814+01:00","level":"WARN","logger_name":"org.jointhefreeworld.symbanta.feature.events.service.EventPersistenceService","thread_name":"main @spec-scope-1366006911#61","message":"Discarded 1 event(s) of a batch of 2 for unregistered domain(s): [unknown.example]"}
{"@timestamp":"2026-11-04T23:14:15.308068365+01:00","level":"WARN","logger_name":"org.jointhefreeworld.symbanta.feature.events.service.EventPersistenceService","thread_name":"main @spec-scope-1366006911#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.068 s -- in org.jointhefreeworld.symbanta.feature.events.service.EventPersistenceServiceSpec
[INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.113 s -- in org.jointhefreeworld.symbanta.feature.events.service.EventPersistenceServiceSpec
[INFO] Running org.jointhefreeworld.symbanta.feature.eventtypes.adapter.inbound.web.EventTypesControllerSpec
{"@timestamp":"2026-11-04T23:14:15.616104911+01:00","level":"INFO","logger_name":"org.springframework.mock.web.MockServletContext","thread_name":"main @coroutine#11","message":"Initializing Spring TestDispatcherServlet ''"}
{"@timestamp":"2026-11-04T23:14:15.616268176+01:00","level":"INFO","logger_name":"org.springframework.test.web.servlet.TestDispatcherServlet","thread_name":"main @coroutine#11","message":"Initializing Servlet ''"}
{"@timestamp":"2026-11-04T23:14:15.616397119+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.084 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.245 s -- in org.jointhefreeworld.symbanta.feature.eventtypes.adapter.inbound.web.EventTypesControllerSpec
[INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.632 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-04T23:14:16.1507193+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1146300830#64","message":"Saving property with ID: 270fed14-859f-410f-9c44-7acd95a284d9"}
{"@timestamp":"2026-11-04T23:14:16.479452066+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1146300830#65","message":"Saving property with ID: c9409166-659e-480b-9a9b-bba2d7e9ce94"}
{"@timestamp":"2026-11-04T23:14:16.624848075+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1146300830#66","message":"Saving property with ID: 34cdbac2-7576-4e05-aaec-1553609c5a65"}
{"@timestamp":"2026-11-04T23:14:16.846395566+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1146300830#67","message":"Saving property with ID: df7c3bf1-8911-4aad-98da-ee710e620916"}
{"@timestamp":"2026-11-04T23:14:16.871119994+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1146300830#67","message":"Saving property with ID: 4ccc46b4-4bcd-4c33-8f3a-8a815554eab0"}
[INFO] Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.117 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-04T23:14:17.323772197+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1365812073#68","message":"Saving property with ID: 3670aa45-6831-43ae-ac8a-b1865a5601b3"}
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-04T23:14:17.435194431+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1365812073#68","message":"Saving property with ID: a9fef7ef-43bf-41e4-ad52-e4b8572c478f"}
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-04T23:14:17.522134861+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1365812073#68","message":"Saving property with ID: 76aea9f4-ad51-47f1-b634-3148e33c4b09"}
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-04T23:14:17.595005841+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1365812073#68","message":"Saving property with ID: c38b3479-8517-4419-969b-31831efd86ac"}
[INFO] Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.373 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-04T23:14:17.746692384+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1365812073#69","message":"Saving property with ID: d375fcb1-ea68-4fdd-9de6-a8ef7a357b89"}
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-04T23:14:17.851937554+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1365812073#69","message":"Saving property with ID: d375fcb1-ea68-4fdd-9de6-a8ef7a357b89"}
[INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.183 s -- in org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepositorySpec
{"@timestamp":"2026-11-04T23:14:17.93033505+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1365812073#70","message":"Saving property with ID: 1109aeb1-0b77-48a1-ad42-35d3d2959f67"}
{"@timestamp":"2026-11-04T23:14:17.952556801+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1365812073#70","message":"Saving property with ID: 1862573e-3c26-458b-b4b1-04c56c57c4d6"}
{"@timestamp":"2026-11-04T23:14:18.038751251+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1365812073#71","message":"Saving property with ID: f3798cee-51e5-4103-8183-ab538bbeeb26"}
{"@timestamp":"2026-11-04T23:14:18.05397704+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1365812073#71","message":"Saving property with ID: 0653e784-ebc1-4e21-8e4b-7f697e3ac78f"}
[INFO] Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.116 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-04T23:14:18.320221925+01:00","level":"INFO","logger_name":"org.springframework.mock.web.MockServletContext","thread_name":"main @coroutine#14","message":"Initializing Spring TestDispatcherServlet ''"}
{"@timestamp":"2026-11-04T23:14:18.320367914+01:00","level":"INFO","logger_name":"org.springframework.test.web.servlet.TestDispatcherServlet","thread_name":"main @coroutine#14","message":"Initializing Servlet ''"}
{"@timestamp":"2026-11-04T23:14:18.320464599+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.076 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.032 s -- in org.jointhefreeworld.symbanta.feature.statistics.adapter.inbound.web.StatsRoutesControllerSpec
{"@timestamp":"2026-11-04T23:14:18.511804402+01:00","level":"ERROR","logger_name":"org.jointhefreeworld.symbanta.shared.adapter.inbound.web.GlobalExceptionControllerAdvice","thread_name":"main @spec-scope-1095160365#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.100 s -- in org.jointhefreeworld.symbanta.feature.statistics.adapter.inbound.web.StatsRoutesControllerSpec
[INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.300 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-04T23:14:18.678206927+01:00","level":"INFO","logger_name":"org.springframework.mock.web.MockServletContext","thread_name":"main @coroutine#15","message":"Initializing Spring TestDispatcherServlet ''"}
{"@timestamp":"2026-11-04T23:14:18.678887298+01:00","level":"INFO","logger_name":"org.springframework.test.web.servlet.TestDispatcherServlet","thread_name":"main @coroutine#15","message":"Initializing Servlet ''"}
{"@timestamp":"2026-11-04T23:14:18.679401881+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.066 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.050 s -- in org.jointhefreeworld.symbanta.feature.statistics.adapter.inbound.web.StatsTimeseriesControllerSpec
{"@timestamp":"2026-11-04T23:14:18.910278418+01:00","level":"ERROR","logger_name":"org.jointhefreeworld.symbanta.shared.adapter.inbound.web.GlobalExceptionControllerAdvice","thread_name":"main @spec-scope-89391678#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.165 s -- in org.jointhefreeworld.symbanta.feature.statistics.adapter.inbound.web.StatsTimeseriesControllerSpec
[INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.412 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-04T23:14:19.070293283+01:00","level":"INFO","logger_name":"org.springframework.mock.web.MockServletContext","thread_name":"main @coroutine#16","message":"Initializing Spring TestDispatcherServlet ''"}
{"@timestamp":"2026-11-04T23:14:19.070624479+01:00","level":"INFO","logger_name":"org.springframework.test.web.servlet.TestDispatcherServlet","thread_name":"main @coroutine#16","message":"Initializing Servlet ''"}
{"@timestamp":"2026-11-04T23:14:19.070752352+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.051 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-04T23:14:19.176472276+01:00","level":"ERROR","logger_name":"org.jointhefreeworld.symbanta.shared.adapter.inbound.web.GlobalExceptionControllerAdvice","thread_name":"main @spec-scope-37489515#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.050 s -- in org.jointhefreeworld.symbanta.feature.statistics.adapter.inbound.web.StatsUserAgentsControllerSpec
[INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.243 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-04T23:14:19.290880314+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1270750161#80","message":"Saving property with ID: 9bfec481-a452-4531-9c6e-6bcfdf077ee4"}
[INFO] Running org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.persistence.JpaAnalyticsQueryAdapterSpec
{"@timestamp":"2026-11-04T23:14:19.353100242+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1270750161#80","message":"Saving property with ID: b538e489-cfa1-4c1c-883c-9aef6b6dd741"}
{"@timestamp":"2026-11-04T23:14:19.548634702+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1270750161#80","message":"Saving property with ID: 4b9648c0-5bf0-4bb9-b2d8-0dab12d9401b"}
{"@timestamp":"2026-11-04T23:14:19.702187336+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1270750161#80","message":"Saving property with ID: 9bba32e4-2028-403b-b29b-21ffff5ced9c"}
{"@timestamp":"2026-11-04T23:14:19.796888918+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1270750161#80","message":"Saving property with ID: 0f221b38-abe0-4bc1-91cf-56bf33df1f0b"}
[INFO] Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.553 s -- in org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.persistence.JpaAnalyticsQueryAdapterSpec
{"@timestamp":"2026-11-04T23:14:19.908626055+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1270750161#81","message":"Saving property with ID: 4e01344f-98b1-41d2-b44f-a2f04f1b5ba3"}
[INFO] Running org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.persistence.JpaAnalyticsQueryAdapterSpec
{"@timestamp":"2026-11-04T23:14:19.970524771+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1270750161#81","message":"Saving property with ID: 82c7b636-1caf-4816-b4ff-f9130582f22b"}
{"@timestamp":"2026-11-04T23:14:20.167641617+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1270750161#81","message":"Saving property with ID: 24b74ee7-b42a-456b-9575-ecf6110107e0"}
{"@timestamp":"2026-11-04T23:14:20.291961754+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1270750161#81","message":"Saving property with ID: 004ebd1f-4fbb-4da3-9771-ac6a972c3abf"}
{"@timestamp":"2026-11-04T23:14:20.477019987+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1270750161#81","message":"Saving property with ID: c00095e9-12af-4d69-b4f5-45d68acdb81f"}
{"@timestamp":"2026-11-04T23:14:20.591191509+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1270750161#81","message":"Saving property with ID: 904aa30e-2852-4b9c-9be8-8ac89b66509f"}
{"@timestamp":"2026-11-04T23:14:20.67321647+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1270750161#81","message":"Saving property with ID: d4fa3574-ab2d-4657-b75d-eeeed0996e39"}
{"@timestamp":"2026-11-04T23:14:20.842232378+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1270750161#81","message":"Saving property with ID: 8b939680-90cf-4a15-af28-feaa354945f0"}
[INFO] Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.976 s -- in org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.persistence.JpaAnalyticsQueryAdapterSpec
{"@timestamp":"2026-11-04T23:14:20.965102148+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1270750161#82","message":"Saving property with ID: 8ac0f214-1e0f-432d-a3d5-c26a8592fa0d"}
[INFO] Running org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.persistence.JpaAnalyticsQueryAdapterSpec
{"@timestamp":"2026-11-04T23:14:21.048080903+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1270750161#82","message":"Saving property with ID: bdb17c90-963e-4d86-a91c-b27e3da3e531"}
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.248 s -- in org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.persistence.JpaAnalyticsQueryAdapterSpec
{"@timestamp":"2026-11-04T23:14:21.314797025+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1270750161#83","message":"Saving property with ID: d89b965b-51b7-4e0e-bae1-c4181d898e2f"}
[INFO] Running org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.persistence.JpaAnalyticsQueryAdapterSpec
{"@timestamp":"2026-11-04T23:14:21.400277013+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1270750161#83","message":"Saving property with ID: 662228ee-46e2-48db-8284-c29b6f07b4be"}
{"@timestamp":"2026-11-04T23:14:21.572544253+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1270750161#83","message":"Saving property with ID: fb3e6e59-46fb-451c-90fe-25058d980de9"}
{"@timestamp":"2026-11-04T23:14:21.678422353+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1270750161#83","message":"Saving property with ID: 77c4789d-1f26-4b09-88cf-728c18d86070"}
[INFO] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.409 s -- in org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.persistence.JpaAnalyticsQueryAdapterSpec
{"@timestamp":"2026-11-04T23:14:21.803257684+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1270750161#84","message":"Saving property with ID: 1c75e4a2-045b-4c1c-b225-08cbf3490476"}
[INFO] Running org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.persistence.JpaAnalyticsQueryAdapterSpec
{"@timestamp":"2026-11-04T23:14:21.86271075+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1270750161#84","message":"Saving property with ID: 2f25ad90-0646-4af4-9e48-dc373867ea24"}
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.125 s -- in org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.persistence.JpaAnalyticsQueryAdapterSpec
{"@timestamp":"2026-11-04T23:14:22.041881773+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1270750161#85","message":"Saving property with ID: fb022662-f336-4691-85c4-3c4e775c5246"}
[INFO] Running org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.persistence.JpaAnalyticsQueryAdapterSpec
{"@timestamp":"2026-11-04T23:14:22.169932603+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1270750161#85","message":"Saving property with ID: fc099e57-4892-4e07-a740-9e0c025e73ba"}
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.193 s -- in org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.persistence.JpaAnalyticsQueryAdapterSpec
{"@timestamp":"2026-11-04T23:14:22.395565688+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1270750161#86","message":"Saving property with ID: 8c9e2de6-8c7d-41c8-ac9b-f0b18f8cade0"}
[INFO] Running org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.persistence.JpaAnalyticsQueryAdapterSpec
{"@timestamp":"2026-11-04T23:14:22.478246414+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-1270750161#86","message":"Saving property with ID: 544a9205-ac02-45aa-89f3-077fbd3bb23a"}
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.199 s -- in org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.persistence.JpaAnalyticsQueryAdapterSpec
[INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 3.419 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-04T23:14:22.72106591+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-102724857#87","message":"Saving property with ID: 316dcbc5-8097-405c-92f3-32f1ef149716"}
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.262 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-04T23:14:22.958418881+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-799358396#88","message":"Saving property with ID: 5b18633c-1cf9-4aef-9dd6-6b4909a2d17c"}
[INFO] Running org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.RollupAnalyticsQueryAdapterSpec
{"@timestamp":"2026-11-04T23:14:23.023866916+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-799358396#88","message":"Saving property with ID: 0db1a738-bf6d-4d39-9a76-53c4239ea753"}
{"@timestamp":"2026-11-04T23:14:23.117824091+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.StatsRollupRefresher","thread_name":"main @spec-scope-799358396#88","message":"Rolled up analytics from 2026-01-10T12:00:00Z to 2026-11-04T22:00:00Z (7162 hour buckets)"}
{"@timestamp":"2026-11-04T23:14:23.363787919+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-799358396#88","message":"Saving property with ID: b3aaefe6-feec-4834-9494-7022ed115a65"}
{"@timestamp":"2026-11-04T23:14:23.44966931+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.StatsRollupRefresher","thread_name":"main @spec-scope-799358396#88","message":"Rolled up analytics from 2026-01-10T12:00:00Z to 2026-11-04T22:00:00Z (7162 hour buckets)"}
{"@timestamp":"2026-11-04T23:14:23.617611988+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-799358396#88","message":"Saving property with ID: 6cea13cd-f9f8-4f0a-ae0c-de432c12d4f5"}
{"@timestamp":"2026-11-04T23:14:23.724610731+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-799358396#88","message":"Saving property with ID: 0816d54d-64dc-432e-8de5-6d22e6984e78"}
{"@timestamp":"2026-11-04T23:14:23.792296445+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.StatsRollupRefresher","thread_name":"main @spec-scope-799358396#88","message":"Rolled up analytics from 2026-01-10T12:00:00Z to 2026-11-04T22:00:00Z (7162 hour buckets)"}
[INFO] Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.887 s -- in org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.RollupAnalyticsQueryAdapterSpec
{"@timestamp":"2026-11-04T23:14:23.935002175+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-799358396#89","message":"Saving property with ID: 22513e4f-a531-4cd5-9c89-18c643e00d63"}
[INFO] Running org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.RollupAnalyticsQueryAdapterSpec
{"@timestamp":"2026-11-04T23:14:24.056096239+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-799358396#89","message":"Saving property with ID: fca64b62-aad8-429e-b3f4-8ac26c7e24f0"}
{"@timestamp":"2026-11-04T23:14:24.139415083+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.StatsRollupRefresher","thread_name":"main @spec-scope-799358396#89","message":"Rolled up analytics from 2026-01-10T12:00:00Z to 2026-11-04T22:00:00Z (7162 hour buckets)"}
{"@timestamp":"2026-11-04T23:14:24.268813304+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-799358396#89","message":"Saving property with ID: 91603059-3ee1-4fcc-a1d6-9b27c412b146"}
{"@timestamp":"2026-11-04T23:14:24.384802094+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.StatsRollupRefresher","thread_name":"main @spec-scope-799358396#89","message":"Rolled up analytics from 2026-01-10T12:00:00Z to 2026-11-04T22:00:00Z (7162 hour buckets)"}
{"@timestamp":"2026-11-04T23:14:24.570280768+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-799358396#89","message":"Saving property with ID: d83d0930-917e-445e-a79b-96c81c082a5d"}
{"@timestamp":"2026-11-04T23:14:24.694362538+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.StatsRollupRefresher","thread_name":"main @spec-scope-799358396#89","message":"Rolled up analytics from 2026-01-08T23:00:00Z to 2026-11-04T22:00:00Z (7199 hour buckets)"}
{"@timestamp":"2026-11-04T23:14:24.842546462+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-799358396#89","message":"Saving property with ID: 323b55cc-76bb-4a09-922b-c5b15773402f"}
{"@timestamp":"2026-11-04T23:14:24.913250268+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.StatsRollupRefresher","thread_name":"main @spec-scope-799358396#89","message":"Rolled up analytics from 2026-01-10T12:00:00Z to 2026-11-04T22:00:00Z (7162 hour buckets)"}
{"@timestamp":"2026-11-04T23:14:25.046570676+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-799358396#89","message":"Saving property with ID: c08e3d57-e238-4625-bbfe-256eaf273ad4"}
{"@timestamp":"2026-11-04T23:14:25.115905758+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-799358396#89","message":"Saving property with ID: da4f5ba2-a642-4f3d-a4a9-8d54ee5879af"}
{"@timestamp":"2026-11-04T23:14:25.159733674+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.StatsRollupRefresher","thread_name":"main @spec-scope-799358396#89","message":"Rolled up analytics from 2026-01-10T12:00:00Z to 2026-11-04T22:00:00Z (7162 hour buckets)"}
{"@timestamp":"2026-11-04T23:14:25.267307632+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-799358396#89","message":"Saving property with ID: aade069a-fb2a-42b6-9013-b85fbae9ed80"}
{"@timestamp":"2026-11-04T23:14:25.341992825+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.StatsRollupRefresher","thread_name":"main @spec-scope-799358396#89","message":"Rolled up analytics from 2026-01-08T22:00:00Z to 2026-11-04T22:00:00Z (7200 hour buckets)"}
[INFO] Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.420 s -- in org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.RollupAnalyticsQueryAdapterSpec
{"@timestamp":"2026-11-04T23:14:25.436600997+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-799358396#90","message":"Saving property with ID: b319d3ad-c644-49ea-8053-80acc1d293d9"}
[INFO] Running org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.RollupAnalyticsQueryAdapterSpec
{"@timestamp":"2026-11-04T23:14:25.514063028+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-799358396#90","message":"Saving property with ID: b1595d0d-5333-4ca2-bbd1-0e23780dc517"}
{"@timestamp":"2026-11-04T23:14:25.620857605+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.StatsRollupRefresher","thread_name":"main @spec-scope-799358396#90","message":"Rolled up analytics from 2026-01-10T12:00:00Z to 2026-11-04T22:00:00Z (7162 hour buckets)"}
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.215 s -- in org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.RollupAnalyticsQueryAdapterSpec
{"@timestamp":"2026-11-04T23:14:25.704274888+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-799358396#91","message":"Saving property with ID: 31a46c88-c995-44bd-bc03-899d62a63cb2"}
[INFO] Running org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.RollupAnalyticsQueryAdapterSpec
{"@timestamp":"2026-11-04T23:14:25.779532479+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-799358396#91","message":"Saving property with ID: 06ef0c1d-ab3e-4f54-9ec8-562c7ddd28d3"}
{"@timestamp":"2026-11-04T23:14:25.849062963+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.StatsRollupRefresher","thread_name":"main @spec-scope-799358396#91","message":"Rolled up analytics from 2026-01-10T12:00:00Z to 2026-11-04T22:00:00Z (7162 hour buckets)"}
{"@timestamp":"2026-11-04T23:14:25.959438015+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-799358396#91","message":"Saving property with ID: 42e4874e-d426-4c16-bd45-ae6a0b18ebf5"}
{"@timestamp":"2026-11-04T23:14:26.089103067+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-799358396#91","message":"Saving property with ID: 15fe4a1b-f1e7-478e-bf39-da5a0303e23a"}
{"@timestamp":"2026-11-04T23:14:26.199111459+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.StatsRollupRefresher","thread_name":"main @spec-scope-799358396#91","message":"Rolled up analytics from 2026-01-10T12:00:00Z to 2026-11-04T22:00:00Z (7162 hour buckets)"}
[INFO] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.548 s -- in org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.RollupAnalyticsQueryAdapterSpec
{"@timestamp":"2026-11-04T23:14:26.333323638+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-799358396#92","message":"Saving property with ID: f8e8a078-c94c-4cb8-b186-48ab946a0cac"}
[INFO] Running org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.RollupAnalyticsQueryAdapterSpec
{"@timestamp":"2026-11-04T23:14:26.38666644+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-799358396#92","message":"Saving property with ID: 5aff97bf-6691-492f-911c-9985ce2e566d"}
{"@timestamp":"2026-11-04T23:14:26.442631187+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.StatsRollupRefresher","thread_name":"main @spec-scope-799358396#92","message":"Rolled up analytics from 2026-01-10T12:00:00Z to 2026-11-04T22:00:00Z (7162 hour buckets)"}
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.158 s -- in org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.RollupAnalyticsQueryAdapterSpec
{"@timestamp":"2026-11-04T23:14:26.577092019+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-799358396#93","message":"Saving property with ID: 4b24fd27-f0ca-432c-8428-4ebea1cf6377"}
[INFO] Running org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.RollupAnalyticsQueryAdapterSpec
{"@timestamp":"2026-11-04T23:14:26.628332576+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-799358396#93","message":"Saving property with ID: 44ccfa8b-0ebf-4c97-a61d-48d060cce964"}
{"@timestamp":"2026-11-04T23:14:26.677760259+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.StatsRollupRefresher","thread_name":"main @spec-scope-799358396#93","message":"Rolled up analytics from 2026-01-10T12:00:00Z to 2026-11-04T22:00:00Z (7162 hour buckets)"}
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.128 s -- in org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.RollupAnalyticsQueryAdapterSpec
{"@timestamp":"2026-11-04T23:14:26.785109139+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-799358396#94","message":"Saving property with ID: ccc4111e-60be-40a3-a023-f796519d6a14"}
[INFO] Running org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.RollupAnalyticsQueryAdapterSpec
{"@timestamp":"2026-11-04T23:14:26.856128017+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-799358396#94","message":"Saving property with ID: 81ab85f8-3835-4df3-aa82-628c8e755133"}
{"@timestamp":"2026-11-04T23:14:26.91326849+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.StatsRollupRefresher","thread_name":"main @spec-scope-799358396#94","message":"Rolled up analytics from 2026-01-10T12:00:00Z to 2026-11-04T22:00:00Z (7162 hour buckets)"}
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.159 s -- in org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.RollupAnalyticsQueryAdapterSpec
[INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 4.061 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-04T23:14:27.070217733+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-898031630#95","message":"Saving property with ID: e5fa8e44-1722-48f2-8cb4-520803a9551c"}
{"@timestamp":"2026-11-04T23:14:27.591768961+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.StatsRollupRefresher","thread_name":"main @spec-scope-898031630#95","message":"Rolled up analytics from 2026-01-05T07:00:00Z to 2026-11-04T22:00:00Z (7287 hour buckets)"}
{"@timestamp":"2026-11-04T23:14:28.713368543+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-898031630#96","message":"Saving property with ID: 61400c40-7430-4d83-9d82-a91e2afef60d"}
{"@timestamp":"2026-11-04T23:14:29.083155332+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.StatsRollupRefresher","thread_name":"main @spec-scope-898031630#96","message":"Rolled up analytics from 2026-01-05T07:00:00Z to 2026-11-04T22:00:00Z (7287 hour buckets)"}
{"@timestamp":"2026-11-04T23:14:29.839185366+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-898031630#97","message":"Saving property with ID: aa96b869-07ae-480b-a4f2-5df825fdf58f"}
{"@timestamp":"2026-11-04T23:14:30.116729314+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.StatsRollupRefresher","thread_name":"main @spec-scope-898031630#97","message":"Rolled up analytics from 2026-01-05T07:00:00Z to 2026-11-04T22:00:00Z (7287 hour buckets)"}
{"@timestamp":"2026-11-04T23:14:30.756125719+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-898031630#98","message":"Saving property with ID: 20b233df-b58e-4030-bf1f-89a0c5144ee4"}
{"@timestamp":"2026-11-04T23:14:31.02844334+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.StatsRollupRefresher","thread_name":"main @spec-scope-898031630#98","message":"Rolled up analytics from 2026-01-05T07:00:00Z to 2026-11-04T22:00:00Z (7287 hour buckets)"}
{"@timestamp":"2026-11-04T23:14:31.58556486+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-898031630#99","message":"Saving property with ID: 7c8cd18e-d7f9-4051-a42f-631b82c6e5cc"}
{"@timestamp":"2026-11-04T23:14:31.759911431+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.StatsRollupRefresher","thread_name":"main @spec-scope-898031630#99","message":"Rolled up analytics from 2026-01-05T07:00:00Z to 2026-11-04T22:00:00Z (7287 hour buckets)"}
{"@timestamp":"2026-11-04T23:14:32.451277467+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-898031630#100","message":"Saving property with ID: 4682d332-6b4d-4d73-bba3-a30339e24bfb"}
{"@timestamp":"2026-11-04T23:14:32.611520684+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.StatsRollupRefresher","thread_name":"main @spec-scope-898031630#100","message":"Rolled up analytics from 2026-01-05T07:00:00Z to 2026-11-04T22:00:00Z (7287 hour buckets)"}
{"@timestamp":"2026-11-04T23:14:33.214243311+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-898031630#101","message":"Saving property with ID: d21c13d6-37ae-444b-b83a-417c0a864fa4"}
{"@timestamp":"2026-11-04T23:14:33.378132353+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.StatsRollupRefresher","thread_name":"main @spec-scope-898031630#101","message":"Rolled up analytics from 2026-01-05T07:00:00Z to 2026-11-04T22:00:00Z (7287 hour buckets)"}
{"@timestamp":"2026-11-04T23:14:33.950229455+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-898031630#102","message":"Saving property with ID: 09231855-f99d-401a-a09c-149978c84c26"}
{"@timestamp":"2026-11-04T23:14:34.121390664+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.StatsRollupRefresher","thread_name":"main @spec-scope-898031630#102","message":"Rolled up analytics from 2026-01-05T07:00:00Z to 2026-11-04T22:00:00Z (7287 hour buckets)"}
[INFO] Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 7.452 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.081 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-04T23:14:34.568774968+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-151309559#112","message":"Saving property with ID: 3598cfdf-7546-4157-8256-60c5ae6c39ac"}
{"@timestamp":"2026-11-04T23:14:34.615723069+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.StatsRollupRefresher","thread_name":"main @spec-scope-151309559#112","message":"Rolled up analytics from 2026-01-08T09:00:00Z to 2026-11-04T22:00:00Z (7213 hour buckets)"}
{"@timestamp":"2026-11-04T23:14:34.748523578+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-151309559#113","message":"Saving property with ID: 5ffa1aeb-24e1-4da6-83ac-08b7967a93ca"}
{"@timestamp":"2026-11-04T23:14:34.855745046+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.StatsRollupRefresher","thread_name":"main @spec-scope-151309559#113","message":"Rolled up analytics from 2026-01-08T09:00:00Z to 2026-11-04T22:00:00Z (7213 hour buckets)"}
{"@timestamp":"2026-11-04T23:14:34.948411764+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-151309559#114","message":"Saving property with ID: faa116bf-1bc4-41f6-8ca9-5d8c32b2ad3c"}
{"@timestamp":"2026-11-04T23:14:35.021330975+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.StatsRollupRefresher","thread_name":"main @spec-scope-151309559#114","message":"Rolled up analytics from 2026-01-08T09:00:00Z to 2026-11-04T22:00:00Z (7213 hour buckets)"}
{"@timestamp":"2026-11-04T23:14:35.103953343+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-151309559#115","message":"Saving property with ID: 34592b02-c896-4085-9fcd-951107dc29df"}
{"@timestamp":"2026-11-04T23:14:35.182570138+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.StatsRollupRefresher","thread_name":"main @spec-scope-151309559#115","message":"Rolled up analytics from 2026-01-08T09:00:00Z to 2026-11-04T22:00:00Z (7213 hour buckets)"}
{"@timestamp":"2026-11-04T23:14:35.311689631+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-151309559#116","message":"Saving property with ID: 6c8063ab-31cd-4aec-922c-e85da49caca8"}
{"@timestamp":"2026-11-04T23:14:35.425544237+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.StatsRollupRefresher","thread_name":"main @spec-scope-151309559#116","message":"Rolled up analytics from 2026-01-08T09:00:00Z to 2026-11-04T22:00:00Z (7213 hour buckets)"}
{"@timestamp":"2026-11-04T23:14:35.585928056+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-151309559#117","message":"Saving property with ID: 0aeee211-81de-43e4-b478-11273e598845"}
{"@timestamp":"2026-11-04T23:14:35.691683874+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.StatsRollupRefresher","thread_name":"main @spec-scope-151309559#117","message":"Rolled up analytics from 2026-01-08T09:00:00Z to 2026-11-04T22:00:00Z (7213 hour buckets)"}
{"@timestamp":"2026-11-04T23:14:35.823972555+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-151309559#118","message":"Saving property with ID: a2e401ad-e33a-4d61-bc65-426534a19942"}
{"@timestamp":"2026-11-04T23:14:35.967478817+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.properties.adapter.outbound.persistence.JpaPropertyRepository","thread_name":"main @spec-scope-151309559#119","message":"Saving property with ID: af4c97b4-8d01-4e8c-8366-462ca0b2c2a4"}
{"@timestamp":"2026-11-04T23:14:36.016248443+01:00","level":"INFO","logger_name":"org.jointhefreeworld.symbanta.feature.statistics.adapter.outbound.rollup.StatsRollupRefresher","thread_name":"main @spec-scope-151309559#119","message":"Rolled up analytics from 2026-01-08T09:00:00Z to 2026-11-04T22:00:00Z (7213 hour buckets)"}
[INFO] Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.658 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.009 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.022 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.071 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.060 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.010 s -- in org.jointhefreeworld.symbanta.feature.statistics.domain.UserAgentParserSpec
[INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.254 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.149 s -- in org.jointhefreeworld.symbanta.feature.statistics.service.CachingStatisticsQueryServiceSpec
[INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.286 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.007 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.029 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.022 s -- in org.jointhefreeworld.symbanta.feature.statistics.service.StatisticsQueryServiceSpec
[INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.113 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.014 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.033 s -- in org.jointhefreeworld.symbanta.shared.domain.ReportingPeriodResolverSpec
[INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.138 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:  01:33 min
[INFO] Finished at: 2026-11-04T23:14:37+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'

→ running command: cd /etc/byggsteg/job-clone/symbanta/trunk && sudo herd enable symbanta-api-daemon || true && sudo herd restart symbanta-api-daemon || true

Enabled service symbanta-api-daemon.
Service symbanta-api-daemon has been started.
inspect the job's lambda expression
(lambda()
  `((task . ("maak-test" "pull-and-restart"))
    (daemon-name . "symbanta-api-daemon")
    (project . "symbanta")
    (branch-name . "trunk")
    (clone-url . "https://github.com/jjba23/symbanta.git")))