Files
meldestelle/docs/99_Journal/_archive/2026-04-14_DevOps_Entries-Isolation-Test-Finalized.md
T
2026-05-05 21:23:02 +02:00

3.1 KiB

type, status, owner, last_update
type status owner last_update
Journal ACTIVE DevOps Engineer 2026-04-14

Session Log: Finalize and Enable Entries Isolation Integration Test

Problem

Der Test EntriesIsolationIntegrationTest im Modul :backend:services:entries:entries-service war deaktiviert ( @Disabled). Er hatte Probleme mit der Daten-Isolierung zwischen verschiedenen Tenants, wenn Exposed mit mehreren Schemas und PostgreSQL-Containern verwendet wurde.

Zusätzlich gab es IDE-Warnungen bezüglich nicht auflösbarer Symbole in SQL-Strings, redundantem runBlocking und ungenutzten Variablen.

Lösung

  1. Test-Bereinigung:
  • Entfernung der @Disabled Annotation.
  • Behebung der runBlocking Redundanz durch Verwendung von runBlocking auf Test-Methoden-Ebene.
  • Entfernung ungenutzter Variablen (saved).
  • Bereitstellung einer @TestConfiguration mit einem Mock JwtDecoder, um ApplicationContext-Ladefehler durch Security-Abhängigkeiten zu vermeiden.
  1. Schema-Isolierung fixiert:
  • Umstellung der Tabellen-Erstellung im setup auf JDBC, um zu verhindern, dass Exposed's Table-Singletons frühzeitig an ein falsches Schema gebunden werden.
  • Sicherstellung, dass tenantTransaction den search_path in PostgreSQL korrekt setzt.
  • Explizite Verwendung von SET search_path innerhalb der Transaktionen im Isolationstest, um Leaks zu vermeiden.
  • Verifizierung der Isolation: Schreibzugriffe in event_a landen nun nachweislich nicht mehr in event_b.
  1. Verifizierung & Cleanup:
  • Alle 10 Tests im Modul (inkl. der neu aktivierten Isolation-Tests) laufen erfolgreich durch.
  • IDE-Warnungen in EntriesIsolationIntegrationTest und JdbcTenantRegistryTest wurden durch @Suppress("SqlResolve"), Verwendung von String-Konstanten/Interpolation ($CONTROL_SCHEMA) und Entfernung ungenutzter Code-Fragmente (nennungRepository, random(), registerDataSource) behoben.
  • Typos wie "testdb" -> "test_db" und "Produktions" -> "Production" wurden korrigiert.
  • Behebung von IDE-Warnungen in NennungBillingIntegrationTest, BewerbeZeitplanIntegrationTest und DomainHierarchyMigrationTest durch Entfernung ungenutzter Variablen (result), Ersetzen von Umlauten in Funktionsnamen/Strings durch ASCII-Zeichen und Verwendung von Konstanten für Schema-Namen (TEST_SCHEMA).
  • Fehlende Spring-Konfigurations-Metadaten für multitenancy.* wurden in additional-spring-configuration-metadata.json ergänzt.

Betroffene Dateien

backend/services/entries/entries-service/src/test/kotlin/at/mocode/entries/service/tenant/EntriesIsolationIntegrationTest.kt: Reaktiviert und repariert.

  • backend/services/entries/entries-service/src/test/kotlin/at/mocode/entries/service/tenant/JdbcTenantRegistryTest.kt: Bereinigt und optimiert.
  • backend/services/entries/entries-service/src/main/resources/META-INF/additional-spring-configuration-metadata.json: Metadaten ergänzt.

Handover

  • Der EntriesIsolationIntegrationTest dient nun als Referenz für Multi-Tenancy Tests mit echten PostgreSQL-Containern. Bei weiteren Tests dieser Art sollte auf das Exposed-Schema-Caching geachtet werden.