test(infrastructure): Configure pgxpool with max_conns=1

Fix database connection exhaustion in tests by setting max_conns=1
when creating pgxpool via pgxpool.ParseConfig().

- Update setupTestServer() in test_helpers.go
- Update setupSyncTestDB() in sync_integration_test.go

This reduces per-test connection usage from 4 to 1, keeping total
connections well under PostgreSQL's default max_connections=100.

78 tests × 1 connection = 78 connections (down from 312 potential)

Fixes test failures: "FATAL: sorry, too many clients already"

See PROJECT_GUIDELINES.md Testing section for details.
This commit is contained in:
2026-02-11 10:37:38 -05:00
parent 61115bc8cd
commit 891209b4bd
10 changed files with 124 additions and 478 deletions
+13 -3
View File
@@ -9,9 +9,19 @@
-**NEVER build server binaries locally** - all builds through Dockerfile/docker-compose
-**NEVER create new migration files** - merge changes into current one until release
-**NEVER use `git checkout` on schema files** without checking what will be lost
-**NEVER break existing functionality** unless explicitly instructed
-**NEVER duplicate business logic** - keep logic in services, not handlers
-**NEVER bypass service layer** - all database operations must go through services
-**NEVER break existing functionality** unless explicitly instructed
-**NEVER duplicate business logic** - keep logic in services, not handlers
-**NEVER bypass service layer** - all database operations must go through services
### Testing
-**ALWAYS use `setupTestServer()` helper from `cmd/server/tests/test_helpers.go`**
-**Share one test setup across all subtests** - call `setupTestServer()` once at test function level, not per subtest
-**Prefer table-driven tests** - use `t.Run()` with test cases instead of duplicate test functions
-**Configure database pools efficiently** - use `max_conns=1` for test pools (via `pgxpool.ParseConfig()`) to prevent connection exhaustion
-**NEVER create separate `pgxpool` per test** - each pool creates 4 connections by default; 78 tests = 312 potential connections > PostgreSQL's 100 limit
-**NEVER call `setupTestServer()` in loops or within subtests** - creates unnecessary database pools and exhausts connections
-**DO verify tests pass** - run full test suite before completing work
-**Use `t.Cleanup()` properly** - the `TestServerSetup` pattern automatically handles cleanup via `t.Cleanup()`
### Frontend & Styling
-**NEVER modify backend/API for frontend features without user confirmation**