19 lines
1.1 KiB
JavaScript
19 lines
1.1 KiB
JavaScript
import assert from "node:assert/strict";
|
|
import test from "node:test";
|
|
import { createServerJobResourceReceipt, parseServerJobResourceBudget, SERVER_JOB_RESOURCE_LIMITS } from "../../../tools/web/server-job-resource-budget.mjs";
|
|
|
|
const budget = { schemaVersion: 1, ...SERVER_JOB_RESOURCE_LIMITS };
|
|
const usage = { cpuMs: 10, memoryBytes: 1024, processCount: 1, fileCount: 2, wallMs: 20, outputBytes: 512 };
|
|
|
|
test("M13-04C accepts bounded usage and marks enforcement", () => {
|
|
assert.deepEqual(parseServerJobResourceBudget(budget), budget);
|
|
assert.deepEqual(createServerJobResourceReceipt(budget, usage), { schemaVersion: 1, status: "SUCCEEDED", budget, usage, enforced: true, exceeded: [] });
|
|
});
|
|
|
|
test("M13-04C rejects each resource overage with a stable code", () => {
|
|
for (const field of Object.keys(SERVER_JOB_RESOURCE_LIMITS)) {
|
|
assert.throws(() => createServerJobResourceReceipt(budget, { ...usage, [field]: SERVER_JOB_RESOURCE_LIMITS[field] + 1 }), new RegExp(`SERVER_JOB_BUDGET_EXCEEDED.*${field}`));
|
|
}
|
|
assert.throws(() => parseServerJobResourceBudget({ ...budget, unknown: 1 }), /SERVER_JOB_BUDGET_INVALID/);
|
|
});
|