Switch to timescaledb-ha image; enable PostGIS in migration
Migration 0001_positions.sql now runs CREATE EXTENSION IF NOT EXISTS postgis alongside timescaledb. PostGIS isn't used in Phase 1 but enabling it now means Phase 2's geofence engine doesn't need a separate migration step. The deploy stack uses the timescale/timescaledb-ha:*-all image which ships both extensions. Integration test (pipeline.integration.test.ts) updated to use the same timescale/timescaledb-ha:pg16.6-ts2.17.2-all image as the deploy stack. Stock POSTGRES_USER/PASSWORD/DB env vars retained — if recent ha-image revisions don't accept them, the test container will fail clearly on first run with Docker, and we'll switch to the right env-var scheme.
This commit is contained in:
@@ -1,9 +1,11 @@
|
||||
/**
|
||||
* Integration test: end-to-end pipeline round-trip via testcontainers.
|
||||
*
|
||||
* Spins up Redis 7 and TimescaleDB (timescale/timescaledb:latest-pg16) containers,
|
||||
* runs the Processor migration, starts the consumer pipeline, publishes synthetic
|
||||
* Position records, and asserts the resulting rows in `positions`.
|
||||
* Spins up Redis 7 and TimescaleDB-HA (timescale/timescaledb-ha:pg16.6-ts2.17.2-all,
|
||||
* matching the deploy stack image) containers, runs the Processor migration,
|
||||
* starts the consumer pipeline, publishes synthetic Position records, and asserts
|
||||
* the resulting rows in `positions`. The `-all` image variant ships PostGIS too,
|
||||
* so the migration's `CREATE EXTENSION IF NOT EXISTS postgis` succeeds.
|
||||
*
|
||||
* If Docker is unavailable (CI runner without Docker, local dev without Docker
|
||||
* Desktop), the suite skips — it does not fail the build. Docker availability is
|
||||
@@ -139,9 +141,9 @@ beforeAll(async () => {
|
||||
return;
|
||||
}
|
||||
|
||||
// --- Step 2: start TimescaleDB container ------------------------------------
|
||||
// --- Step 2: start TimescaleDB-HA container (same image as deploy stack) ---
|
||||
try {
|
||||
pgContainer = await new GenericContainer('timescale/timescaledb:latest-pg16')
|
||||
pgContainer = await new GenericContainer('timescale/timescaledb-ha:pg16.6-ts2.17.2-all')
|
||||
.withExposedPorts(5432)
|
||||
.withEnvironment({
|
||||
POSTGRES_USER: 'postgres',
|
||||
@@ -152,7 +154,7 @@ beforeAll(async () => {
|
||||
.start();
|
||||
} catch (err) {
|
||||
console.warn(
|
||||
`[pipeline.integration.test] Failed to start TimescaleDB container: ${String(err)} — skipping`,
|
||||
`[pipeline.integration.test] Failed to start TimescaleDB-HA container: ${String(err)} — skipping`,
|
||||
);
|
||||
dockerAvailable = false;
|
||||
await redisContainer?.stop().catch(() => {});
|
||||
|
||||
Reference in New Issue
Block a user