'use strict';
const common = require('../common');
const assert = require('assert');
const { spawnSync } = require('child_process');
const fixtures = require('../common/fixtures');
const result = spawnSync(process.execPath, [
'--no-warnings', '--experimental-bench', '--bench',
'--require', fixtures.path('bench-runner/delayed-ack.cjs'),
'--bench-reporter=json',
fixtures.path('bench-runner/acknowledged-records.mjs'),
], { encoding: 'utf8', timeout: common.platformTimeout(30_000) });
assert.ifError(result.error);
assert.strictEqual(result.signal, null);
assert.strictEqual(result.status, 0, result.stdout + result.stderr);
assert.strictEqual(result.stderr, '');
const records = result.stdout.trim().split('\n').map((line) => JSON.parse(line));
const diagnostics = records.filter(({ type }) => type === 'bench:diagnostic');
assert.strictEqual(diagnostics.length, 32);
assert(diagnostics.every(({ data }) => /^acknowledged 10\d{3}$/.test(data.message)));
assert.strictEqual(records.at(-1).data.success, true);