import assert from 'node:assert/strict'; import net from 'node:net'; import test from 'node:test'; import { startOrchestratorServer } from './server.mjs'; async function reservePort() { const server = net.createServer(); await new Promise((resolve, reject) => { server.once('error', reject); server.listen(0, '127.0.0.1', resolve); }); const { port } = server.address(); await new Promise((resolve, reject) => { server.close((error) => (error ? reject(error) : resolve())); }); return port; } test('orchestrator server owns checkpoint and Executor Job Store lifecycle', async (t) => { const port = await reservePort(); const running = await startOrchestratorServer({ env: { MEMIND_ORCHESTRATOR_CHECKPOINT_MODE: 'memory', MEMIND_ORCHESTRATOR_HOST: '127.0.0.1', MEMIND_ORCHESTRATOR_PORT: String(port), }, logger: { log() {} }, }); let closed = false; t.after(async () => { if (!closed) await running.close(); }); assert.equal(running.checkpoint.kind, 'memory'); assert.equal(running.executorJobs.kind, 'memory'); const response = await fetch(`http://127.0.0.1:${port}/ready`); assert.equal(response.status, 200); const ready = await response.json(); assert.equal(ready.ready, true); assert.deepEqual(ready.executorGateway.store, { kind: 'memory', durable: false, }); await running.close(); closed = true; assert.equal(running.server.listening, false); });