Skip to content

feat: Run Backend Suites Against Real Testcontainers Engines - #15

Merged
ThomasHartDev merged 3 commits into
mainfrom
thomas/feat/testcontainers
Sep 4, 2026
Merged

feat: Run Backend Suites Against Real Testcontainers Engines#15
ThomasHartDev merged 3 commits into
mainfrom
thomas/feat/testcontainers

Conversation

@ThomasHartDev

Copy link
Copy Markdown
Owner

The Postgres contract was running on PGlite. That covers SQL shape. It does not cover a lock manager, two sessions, or the real planner. This boots a pinned postgres:16-alpine container through Testcontainers, waits until pg_isready and the mapped port accept connections, and runs the same ActivityStore contract over a pg Pool.

One engine per file, TRUNCATE CASCADE between cases. Two containers get different host ports and separate catalogs. A concurrent unique-handle insert waits on the unique index (Lock wait_event) until the first transaction commits, then fails with 23505. Memory stays in-process. Later backends register a pinned image on CONTAINER_BACKENDS and reuse start / reset / stop.

Closes #14.

Boot a pinned postgres:16-alpine container for the ActivityStore
contract. Share one engine per file, TRUNCATE between cases, and
assert unique-handle inserts wait on the first session's lock.
@ThomasHartDev
ThomasHartDev force-pushed the thomas/feat/testcontainers branch from c48950c to 4997fae Compare September 4, 2026 20:34
@ThomasHartDev
ThomasHartDev merged commit 2d25a10 into main Sep 4, 2026
1 check passed
@ThomasHartDev
ThomasHartDev deleted the thomas/feat/testcontainers branch September 4, 2026 20:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Run each backend suite against a real engine with Testcontainers

1 participant