| 137 | } |
| 138 | |
| 139 | async function settle(sessions: Session[]) { |
| 140 | scenario('settle: all sessions opened in ClickHouse'); |
| 141 | const ids = sessions.map((s) => s.sessionId); |
| 142 | const starts = await pollUntil( |
| 143 | async () => { |
| 144 | const c = await countByName(ids, 'session_start'); |
| 145 | console.log(` …session_start ${c}/${ids.length}`); |
| 146 | return c >= ids.length ? c : null; |
| 147 | }, |
| 148 | { timeoutMs: 60_000, intervalMs: 2000 } |
| 149 | ); |
| 150 | check('clickhouse: one session_start per session', starts === ids.length, `got ${starts}`); |
| 151 | } |
| 152 | |
| 153 | async function drain(sessions: Session[]) { |
| 154 | scenario('drain: reap + flush until nothing remains'); |