import test from 'node:test'; import assert from 'node:assert/strict'; import { Agent, acquireQvac, releaseQvac, closeQvac, qvacStatus } from '../daemon/qvac-master.js'; test('concurrent master acquisition loads once and failed acquisition does not leak owners', async () => { const original = { resources: Agent.engine.resources, load: Agent.engine.load, close: Agent.engine.close }; let loads = 0; Agent.engine.resources = async () => ({ gpus: [{}] }); Agent.engine.load = async () => { loads++; return { device: 'gpu' }; }; Agent.engine.close = async () => {}; try { await Promise.all([acquireQvac(), acquireQvac()]); assert.equal(loads, 1); assert.equal(qvacStatus().owners, 2); releaseQvac(); releaseQvac(); await closeQvac(); Agent.engine.resources = async () => { throw new Error('discovery failed'); }; await assert.rejects(acquireQvac(), /discovery failed/); assert.equal(qvacStatus().owners, 0); Agent.engine.resources = async () => ({ gpus: [{}] }); await acquireQvac(); assert.equal(loads, 2); releaseQvac(); } finally { await closeQvac(); Object.assign(Agent.engine, original); } });