The queue shared the `pipeline:` prefix with flow state, so `RedisState.clear()` could DEL the queue stream and `keys()` enumerated queue entries — only callers filtering `__`-prefixed names kept it safe. It moves to `queue:` without a migration: whatever is in flight at the upgrade is dropped once, documented in DEPLOY.md rather than papered over. Alongside it: `pool_pre_ping`, so a connection idle across a Postgres restart costs a round trip instead of a failed request; the test suite pins ENVIRONMENT=local and DOMAIN=localhost itself rather than inheriting a deployment's .env; and `depth` leaves the queue stats, where it reported the capped journal length as if it were a backlog. ALERTS_FILE and PANELS_FILE now point at /data. They defaulted to a path on no volume, so alert routing and every wall-panel pairing were living in the container's writable layer and vanishing on each rebuild. Carrying the existing files across is a manual step; DEPLOY.md has it. development.md was still the upstream template — compose.override.yml, localhost.tiangolo.com, `docker compose watch` as the dev flow — and said nothing about the Playwright suite. Rewritten against what the Makefiles actually do. deployment.md was template text too, duplicating the root DEPLOY.md, and is gone.
24 lines
1.1 KiB
Python
24 lines
1.1 KiB
Python
"""Redirect the suite at its own database.
|
|
|
|
`app.core.db` builds the engine at import time and several modules bind that
|
|
object, so the name has to be in the environment before anything imports the
|
|
settings. Overriding it here — the first module pytest imports for the
|
|
package — keeps a test run from touching the development data.
|
|
"""
|
|
|
|
import os
|
|
|
|
os.environ["POSTGRES_DB"] = "app_test"
|
|
# The MCP session manager can only be entered once per instance, and the suite
|
|
# builds a TestClient — and so a lifespan — per test module. Tests that want the
|
|
# endpoint mount it themselves.
|
|
os.environ["MCP_ENABLED"] = "false"
|
|
# The private seeding endpoints are opt-in; the suite is one of the two places
|
|
# (with the dev stack) where they are meant to work.
|
|
os.environ["PRIVATE_API_ENABLED"] = "true"
|
|
# The suite is the development configuration by definition: `/private` is
|
|
# gated on it (app/api/routes/private.py) and the MCP host allow-list is
|
|
# built from DOMAIN (app/mcp/http.py), while the tests speak to api.localhost.
|
|
os.environ["ENVIRONMENT"] = "local"
|
|
os.environ["DOMAIN"] = "localhost"
|