26 lines
1.3 KiB
JavaScript
26 lines
1.3 KiB
JavaScript
#!/usr/bin/env node
|
|
|
|
import fs from "node:fs";
|
|
import os from "node:os";
|
|
import path from "node:path";
|
|
import { selfTestObserver } from "../lib/observer.mjs";
|
|
import { isolatedZones } from "../lib/runtime.mjs";
|
|
|
|
const jobIndex = process.argv.indexOf("--job-id");
|
|
const jobId = jobIndex >= 0 ? process.argv[jobIndex + 1] : "";
|
|
const expected = jobId.startsWith("linux-") ? "linux-strace-process-tree"
|
|
: jobId.startsWith("macos-") ? "macos-fs_usage-process"
|
|
: jobId.startsWith("windows-") ? "windows-etw-kernel-process-tree" : null;
|
|
if (!expected) throw new Error("--job-id must be a frozen runtime-matrix job");
|
|
const root = fs.mkdtempSync(path.join(os.tmpdir(), "aas-observer-self-test-"));
|
|
try {
|
|
const zones = isolatedZones(path.join(root, "zones"));
|
|
const evidenceDir = path.join(root, "evidence");
|
|
const result = await selfTestObserver({ cwd: zones.tmp, env: process.env, zones, evidenceDir });
|
|
if (result.backend !== expected) throw new Error(`observer backend mismatch: ${result.backend}/${expected}`);
|
|
if (result.observedNetworkSentinels < 1 || result.observedWriteSentinels < 1) throw new Error("observer sentinel was not detected");
|
|
process.stdout.write(`${JSON.stringify({ ok: true, jobId, ...result })}\n`);
|
|
} finally {
|
|
fs.rmSync(root, { recursive: true, force: true });
|
|
}
|