Files
golfgame/tests/soak/scripts/seed-accounts.ts
adlee-was-taken 2a86b3cc54 feat(soak): scripts/seed-accounts.ts CLI wrapper
Thin standalone entry for pre-seeding N accounts before the first
harness run. Wraps SessionPool.seed and writes .env.stresstest.

End-to-end verified: ran against local dev with --count=4, all 4
accounts landed in the DB with is_test_account=TRUE, cred file
written with correct format.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 17:22:10 -04:00

61 lines
1.7 KiB
TypeScript

#!/usr/bin/env tsx
/**
* Seed N soak-harness accounts via the register endpoint.
*
* Usage:
* TEST_URL=http://localhost:8000 \
* SOAK_INVITE_CODE=SOAKTEST \
* bun run seed -- --count=16
*
* The invite code must already exist and be flagged marks_as_test=TRUE
* in the target environment. See docs/soak-harness-bringup.md.
*/
import * as path from 'path';
import { SessionPool } from '../core/session-pool';
import { createLogger } from '../core/logger';
function parseArgs(argv: string[]): { count: number } {
const result = { count: 16 };
for (const arg of argv.slice(2)) {
const m = arg.match(/^--count=(\d+)$/);
if (m) result.count = parseInt(m[1], 10);
}
return result;
}
async function main(): Promise<void> {
const { count } = parseArgs(process.argv);
const targetUrl = process.env.TEST_URL ?? 'http://localhost:8000';
const inviteCode = process.env.SOAK_INVITE_CODE;
if (!inviteCode) {
console.error('SOAK_INVITE_CODE env var is required');
console.error(' Local dev: SOAK_INVITE_CODE=SOAKTEST');
console.error(' Staging: SOAK_INVITE_CODE=5VC2MCCN');
process.exit(2);
}
const credFile = path.resolve(__dirname, '..', '.env.stresstest');
const logger = createLogger({ runId: `seed-${Date.now()}` });
logger.info('seed_start', { count, targetUrl, credFile });
try {
const accounts = await SessionPool.seed({
targetUrl,
inviteCode,
count,
credFile,
logger,
});
logger.info('seed_complete', { created: accounts.length });
console.error(`Seeded ${accounts.length} accounts → ${credFile}`);
} catch (err) {
logger.error('seed_failed', {
error: err instanceof Error ? err.message : String(err),
});
process.exit(1);
}
}
main();