Files
PaperClipAI/packages/paperclip-runner/scripts/build-node-startup-timeout.test.mjs

25 lines
1.5 KiB
JavaScript

import test from "node:test";
import assert from "node:assert/strict";
import { readFileSync } from "node:fs";
import { buildNodeStartupTimeout } from "./build-node-startup-timeout.mjs";
test("cold Rosetta Node startup has a bounded build-only allowance", () => {
assert.equal(buildNodeStartupTimeout("darwin", "x64"), 30_000);
for (const [platform, architecture] of [["darwin", "arm64"], ["linux", "x64"], ["linux", "arm64"], ["win32", "x64"]]) {
assert.equal(buildNodeStartupTimeout(platform, architecture), 10_000);
}
assert.equal(buildNodeStartupTimeout(), buildNodeStartupTimeout(process.platform, process.arch));
});
test("both pack and private Pi Node probes use the allowance without changing other operation deadlines", () => {
const pack = readFileSync(new URL("./build-provider-pack.mjs", import.meta.url), "utf8");
const pi = readFileSync(new URL("./materialize-pi-distribution.mjs", import.meta.url), "utf8");
assert.match(pack, /spawnSync\(stableNodeCommand, \["--version"\], \{[^}]*env: \{[^}]*\}[^}]*timeout: buildNodeStartupTimeout\(\)/);
for (const probe of ['run(node, ["--version"]', 'run(node, ["-p", "process.versions.undici"]', 'run(copiedNode, ["--version"]']) {
const line = pi.split("\n").find(line => line.includes(probe));
assert.ok(line?.includes("timeout: buildNodeStartupTimeout()"), probe);
}
assert.match(pi, /run\("git", \["apply", "--check", patchPath\], \{[^}]*timeout: 10_000/);
assert.match(pi, /run\("\/usr\/bin\/otool", \["-L", copiedNode\], \{ env: \{\}, timeout: 10_000/);
});