Run the load tests on Postgres too, as production runs (#139)
node tests/load/run.js --postgres puts the scratch daemon in IPX_TEST_DATABASE_URL, the database the Rust tests already use on Postgres, ipodderx_test on the databases project's server, in a schema of its own, ipx_load, dropped and made again each run as /tmp/ipx-load is wiped. The URL is in /src/.envrc, taken from ipx.env. It is production's server and role, so the harness refuses a database whose name does not end in _test, and hands psql the password in its environment, where no other process on Tower can read it. psql comes from /src/install.sh. After seeding it runs ANALYZE: a schema filled seconds before has no planner statistics until autovacuum gets there, which it did partway through a test, and the search's p95 swung between 40ms and 166ms from run to run. Analyzed first, three runs gave 37-38ms. Each budget now has a value for each database, about twice what it measures on Tower: Postgres answers the feed list at p95 54ms to SQLite's 242, having no one connection to queue for (#136). Running it found #140. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -17,7 +17,8 @@ export const options = {
|
||||
thresholds: {
|
||||
http_req_failed: ['rate==0'],
|
||||
checks: ['rate==1'],
|
||||
// 57ms on 2026-10-05; 4.3s while password checks ran on the async workers (#137).
|
||||
// 57ms on 2026-10-05 on SQLite, 68 on Postgres; 4.3s while password checks ran on the async
|
||||
// workers (#137).
|
||||
'http_req_duration{name:meanwhile}': ['p(95)<300'],
|
||||
// Known name against unknown, one straight after the other: no gap but noise. 0.2ms on
|
||||
// 2026-10-05; 31ms while an unknown name was refused without a check (#138).
|
||||
|
||||
Reference in New Issue
Block a user