test: give each fixture its own Postgres database#39
Merged
Conversation
Three test fixtures (OperationsQueries, TraxHealthService, AuthE2E) all migrated and ran against the same `trax` database. NUnit runs fixtures in parallel, so two could enter DatabaseMigrator.Migrate at once, contend on the migrator advisory lock, and one would time out (intermittently) with a Npgsql operation-timeout during OneTimeSetUp. Split each fixture onto its own DB (trax_api_operations / trax_api_health / trax_api_auth) and have CI psql CREATE DATABASE for each before tests run.
…cycle subscriptions and operations/dead-letter mutations
The five AuthE2E fixtures all shared trax_api_auth and ran sequentially (NonParallelizable), but each test still spins up a fresh host — so the suite produces 60+ migrations against the same DB. Under CI load this intermittently times out at the Npgsql connect step inside the migrator. Give each fixture its own DB: - HttpAuthE2ETests → trax_api_auth_http - ModelQueryAuthE2ETests → trax_api_auth_model - SubscriptionE2ETests → trax_api_auth_sub - SubscriptionPrincipalPropagationE2ETests → trax_api_auth_subprop - TraxAuthorizeE2ETests → trax_api_auth_authorize AuthE2EHost.StartAsync now takes the database name; each fixture wraps it with a private static StartAsync(Schemes) helper that pins its own DB constant, so existing call sites stay unchanged. ConnectionString became a function of the database. CI bootstrap CREATEs the new DBs upfront.
Welcome to Codecov 🎉Once you merge this PR into your default branch, you're all set! Codecov will compare coverage reports and display results in all future pull requests. ℹ️ You can also turn on project coverage checks and project coverage reporting on Pull Request comment Thanks for integrating Codecov - We've got you covered ☂️ |
|
This PR is included in version 1.25.0 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
trax_api_operations,trax_api_health,trax_api_auth).CREATE DATABASEs each before the test run.NUnit runs fixtures in parallel within an assembly. All three were sharing
Database=traxand each runsDatabaseMigrator.MigrateinOneTimeSetUp. When two fixtures hit the migrator advisory lock at the same time, one would time out with an Npgsql operation-timeout (the flake we saw on main). Per-DB isolation removes that contention without serializing the suite.Test plan
dotnet testTrax.Api.Tests passes (730 / 730)