Files

392 lines
15 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
===== file-pressure.log
✔ loadavg parses the three loads (1.192277ms)
✔ a malformed loadavg throws (0.412303ms)
✔ meminfo returns bytes and keeps unitless counts (0.258214ms)
✔ meminfo without MemAvailable, with a repeated key or a bad line throws (0.206592ms)
✔ PSI parses some and full, and cpu may lack full (0.374747ms)
✔ PSI without a full line for memory or io, or with a bad line, throws (0.195229ms)
✔ CPU lists count distinct CPUs (0.237299ms)
✔ cpu.max gives the quota in CPUs, or null for max (0.23685ms)
✔ memory.max, memory.current and memory.events (0.351243ms)
✔ vmstat gives swap counters and the host OOM counter (0.234271ms)
✔ effective CPUs fall back to the host count with no cgroup input (0.119728ms)
✔ effective CPUs take the smallest of host, cpuset and every quota level (0.117052ms)
✔ effective memory falls back to the host with no cgroup levels, or only max (0.609639ms)
✔ effective memory uses the tightest limited level (0.187466ms)
✔ a limited level without memory.current throws (0.096904ms)
ℹ tests 15
ℹ suites 0
ℹ pass 15
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 171.66419
===== file-rules.log
✔ the first state is held, and healthy samples open it after exactly 30 s (2.048214ms)
✔ load holds at 0.80 for 3 samples and not at 0.7999 (1.121376ms)
✔ load divides by effective CPUs, fractional ones included (0.360874ms)
✔ a gap of more than 6 s resets the consecutive count (0.343221ms)
✔ load releases at 0.55 and not at 0.5501 (0.435882ms)
✔ a dead-band sample restarts the 30 s release window (0.376884ms)
✔ memory holds below the larger floor, on one sample (0.259125ms)
✔ on a small limit the 1 GiB floor is the larger one (0.346965ms)
✔ memory releases only above the larger release floor (0.906516ms)
✔ each PSI hold threshold holds at its value for 3 samples and not just below (0.661209ms)
✔ the PSI count runs across resources (0.15624ms)
✔ each PSI release threshold blocks at its value and releases just below (0.613751ms)
✔ a missing required signal holds at once with health-unknown (0.388768ms)
✔ a signal is stale at more than 6 s old and fresh at exactly 6 s (0.446828ms)
✔ malformed signal values count as missing (0.787389ms)
✔ after health-unknown, recovery waits the full 30 s (0.34472ms)
✔ a host that never had PSI skips the PSI rows (0.201995ms)
✔ PSI that disappears after it was present holds with health-unknown (0.634442ms)
✔ a rise in the OOM kill counter is critical; the first sample is the baseline (0.230518ms)
✔ a falling OOM counter resets the baseline with a note, not an event (0.208182ms)
✔ memory under 5% and disk under 1 GiB are critical, at their edges (0.800954ms)
✔ critical stays until reconciliation, then still waits the 30 s release (0.585483ms)
✔ critical reasons accumulate while critical (0.174367ms)
✔ a clock that goes backwards holds with health-unknown (0.165886ms)
✔ a sample without a numeric time throws (0.515819ms)
✔ evaluate doesn't change the state it was given (0.327166ms)
✔ resolveRules with no overrides is the D4 table, frozen (0.502534ms)
✔ overrides apply in the evaluator (0.291524ms)
✔ contradictory or unknown settings refuse (1.168994ms)
ℹ tests 29
ℹ suites 0
ℹ pass 29
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 86.686704
===== file-purity.log
✔ src reads no file, process, network or clock (1.611513ms)
ℹ tests 1
ℹ suites 0
ℹ pass 1
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 63.38547
===== suite-supervisor.log
✔ loadavg parses the three loads (1.322312ms)
✔ a malformed loadavg throws (0.491714ms)
✔ meminfo returns bytes and keeps unitless counts (0.306568ms)
✔ meminfo without MemAvailable, with a repeated key or a bad line throws (0.282108ms)
✔ PSI parses some and full, and cpu may lack full (0.382364ms)
✔ PSI without a full line for memory or io, or with a bad line, throws (0.229427ms)
✔ CPU lists count distinct CPUs (0.310693ms)
✔ cpu.max gives the quota in CPUs, or null for max (0.258658ms)
✔ memory.max, memory.current and memory.events (0.36499ms)
✔ vmstat gives swap counters and the host OOM counter (0.27834ms)
✔ effective CPUs fall back to the host count with no cgroup input (0.148614ms)
✔ effective CPUs take the smallest of host, cpuset and every quota level (0.118641ms)
✔ effective memory falls back to the host with no cgroup levels, or only max (0.189321ms)
✔ effective memory uses the tightest limited level (0.248126ms)
✔ a limited level without memory.current throws (0.174502ms)
✔ src reads no file, process, network or clock (1.698537ms)
✔ the first state is held, and healthy samples open it after exactly 30 s (2.722678ms)
✔ load holds at 0.80 for 3 samples and not at 0.7999 (1.31022ms)
✔ load divides by effective CPUs, fractional ones included (0.457608ms)
✔ a gap of more than 6 s resets the consecutive count (0.487291ms)
✔ load releases at 0.55 and not at 0.5501 (0.471881ms)
✔ a dead-band sample restarts the 30 s release window (0.407363ms)
✔ memory holds below the larger floor, on one sample (0.311888ms)
✔ on a small limit the 1 GiB floor is the larger one (0.337859ms)
✔ memory releases only above the larger release floor (0.852137ms)
✔ each PSI hold threshold holds at its value for 3 samples and not just below (0.670722ms)
✔ the PSI count runs across resources (0.168238ms)
✔ each PSI release threshold blocks at its value and releases just below (0.706245ms)
✔ a missing required signal holds at once with health-unknown (0.45638ms)
✔ a signal is stale at more than 6 s old and fresh at exactly 6 s (0.501209ms)
✔ malformed signal values count as missing (0.703616ms)
✔ after health-unknown, recovery waits the full 30 s (0.252741ms)
✔ a host that never had PSI skips the PSI rows (0.136341ms)
✔ PSI that disappears after it was present holds with health-unknown (0.302628ms)
✔ a rise in the OOM kill counter is critical; the first sample is the baseline (0.181417ms)
✔ a falling OOM counter resets the baseline with a note, not an event (0.166744ms)
✔ memory under 5% and disk under 1 GiB are critical, at their edges (0.59429ms)
✔ critical stays until reconciliation, then still waits the 30 s release (0.346404ms)
✔ critical reasons accumulate while critical (0.111712ms)
✔ a clock that goes backwards holds with health-unknown (0.098686ms)
✔ a sample without a numeric time throws (0.425754ms)
✔ evaluate doesn't change the state it was given (0.239173ms)
✔ resolveRules with no overrides is the D4 table, frozen (0.368226ms)
✔ overrides apply in the evaluator (0.251687ms)
✔ contradictory or unknown settings refuse (0.917827ms)
ℹ tests 45
ℹ suites 0
ℹ pass 45
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 92.173971
===== mx-M1.log
✖ load holds at 0.80 for 3 samples and not at 0.7999 (2.627622ms)
ℹ tests 1
ℹ suites 0
ℹ pass 0
ℹ fail 1
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 53.826624
✖ failing tests:
test at tests/rules.test.mjs:75:1
✖ load holds at 0.80 for 3 samples and not at 0.7999 (2.627622ms)
AssertionError [ERR_ASSERTION]: Expected values to be strictly deep-equal:
+ actual - expected
[
'open',
'open',
+ 'open'
- 'held'
]
at TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/morgana-row257/packages/supervisor/tests/rules.test.mjs:77:10)
at Test.runInAsyncScope (node:async_hooks:226:14)
at Test.run (node:internal/test_runner/test:1402:25)
at Test.start (node:internal/test_runner/test:1262:17)
at startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17) {
generatedMessage: true,
code: 'ERR_ASSERTION',
actual: [ 'open', 'open', 'open' ],
expected: [ 'open', 'open', 'held' ],
operator: 'deepStrictEqual',
diff: 'simple'
}
===== mx-M2.log
✖ the first state is held, and healthy samples open it after exactly 30 s (1.670671ms)
ℹ tests 1
ℹ suites 0
ℹ pass 0
ℹ fail 1
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 48.463372
✖ failing tests:
test at tests/rules.test.mjs:62:1
✖ the first state is held, and healthy samples open it after exactly 30 s (1.670671ms)
AssertionError [ERR_ASSERTION]: Expected values to be strictly equal:
'open' !== 'held'
at TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/morgana-row257/packages/supervisor/tests/rules.test.mjs:65:10)
at Test.runInAsyncScope (node:async_hooks:226:14)
at Test.run (node:internal/test_runner/test:1402:25)
at Test.start (node:internal/test_runner/test:1262:17)
at startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17) {
generatedMessage: true,
code: 'ERR_ASSERTION',
actual: 'open',
expected: 'held',
operator: 'strictEqual',
diff: 'simple'
}
===== mx-M3.log
✖ memory holds below the larger floor, on one sample (2.628385ms)
ℹ tests 1
ℹ suites 0
ℹ pass 0
ℹ fail 1
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 54.087261
✖ failing tests:
test at tests/rules.test.mjs:119:1
✖ memory holds below the larger floor, on one sample (2.628385ms)
AssertionError [ERR_ASSERTION]: Expected values to be strictly equal:
'open' !== 'held'
at TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/morgana-row257/packages/supervisor/tests/rules.test.mjs:125:10)
at Test.runInAsyncScope (node:async_hooks:226:14)
at Test.run (node:internal/test_runner/test:1402:25)
at Test.start (node:internal/test_runner/test:1262:17)
at startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17) {
generatedMessage: true,
code: 'ERR_ASSERTION',
actual: 'open',
expected: 'held',
operator: 'strictEqual',
diff: 'simple'
}
===== mx-M4.log
✖ load holds at 0.80 for 3 samples and not at 0.7999 (2.72525ms)
ℹ tests 1
ℹ suites 0
ℹ pass 0
ℹ fail 1
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 54.494912
✖ failing tests:
test at tests/rules.test.mjs:75:1
✖ load holds at 0.80 for 3 samples and not at 0.7999 (2.72525ms)
AssertionError [ERR_ASSERTION]: Expected values to be strictly deep-equal:
+ actual - expected
[
- 'open',
- 'open',
'held',
+ 'held',
+ 'held'
]
at TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/morgana-row257/packages/supervisor/tests/rules.test.mjs:77:10)
at Test.runInAsyncScope (node:async_hooks:226:14)
at Test.run (node:internal/test_runner/test:1402:25)
at Test.start (node:internal/test_runner/test:1262:17)
at startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17) {
generatedMessage: true,
code: 'ERR_ASSERTION',
actual: [ 'held', 'held', 'held' ],
expected: [ 'open', 'open', 'held' ],
operator: 'deepStrictEqual',
diff: 'simple'
}
===== mx-M5.log
✖ a signal is stale at more than 6 s old and fresh at exactly 6 s (2.946775ms)
ℹ tests 1
ℹ suites 0
ℹ pass 0
ℹ fail 1
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 58.672563
✖ failing tests:
test at tests/rules.test.mjs:187:1
✖ a signal is stale at more than 6 s old and fresh at exactly 6 s (2.946775ms)
AssertionError [ERR_ASSERTION]: Expected values to be strictly deep-equal:
+ actual - expected
+ []
- [
- 'load'
- ]
at TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/morgana-row257/packages/supervisor/tests/rules.test.mjs:191:10)
at Test.runInAsyncScope (node:async_hooks:226:14)
at Test.run (node:internal/test_runner/test:1402:25)
at Test.start (node:internal/test_runner/test:1262:17)
at startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17) {
generatedMessage: true,
code: 'ERR_ASSERTION',
actual: [],
expected: [ 'load' ],
operator: 'deepStrictEqual',
diff: 'simple'
}
===== mx-M6.log
✖ effective CPUs take the smallest of host, cpuset and every quota level (1.625079ms)
ℹ tests 1
ℹ suites 0
ℹ pass 0
ℹ fail 1
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 55.012035
✖ failing tests:
test at tests/pressure.test.mjs:101:1
✖ effective CPUs take the smallest of host, cpuset and every quota level (1.625079ms)
AssertionError [ERR_ASSERTION]: Expected values to be strictly equal:
4 !== 1.5
at TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/morgana-row257/packages/supervisor/tests/pressure.test.mjs:103:10)
at Test.runInAsyncScope (node:async_hooks:226:14)
at Test.run (node:internal/test_runner/test:1402:25)
at Test.start (node:internal/test_runner/test:1262:17)
at startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17) {
generatedMessage: true,
code: 'ERR_ASSERTION',
actual: 4,
expected: 1.5,
operator: 'strictEqual',
diff: 'simple'
}
===== mx-M7.log
✖ critical stays until reconciliation, then still waits the 30 s release (4.842568ms)
ℹ tests 1
ℹ suites 0
ℹ pass 0
ℹ fail 1
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 54.317924
✖ failing tests:
test at tests/rules.test.mjs:259:1
✖ critical stays until reconciliation, then still waits the 30 s release (4.842568ms)
AssertionError [ERR_ASSERTION]: The expression evaluated to a falsy value:
assert.ok(waiting.decisions.every((d) => d.mode === "critical" && d.reasons[0] === "critical-disk"))
at TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/morgana-row257/packages/supervisor/tests/rules.test.mjs:262:10)
at Test.runInAsyncScope (node:async_hooks:226:14)
at Test.run (node:internal/test_runner/test:1402:25)
at Test.start (node:internal/test_runner/test:1262:17)
at startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17) {
generatedMessage: true,
code: 'ERR_ASSERTION',
actual: false,
expected: true,
operator: '==',
diff: 'simple'
}
===== mx-M8.log
✖ memory under 5% and disk under 1 GiB are critical, at their edges (3.080014ms)
ℹ tests 1
ℹ suites 0
ℹ pass 0
ℹ fail 1
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 49.440823
✖ failing tests:
test at tests/rules.test.mjs:245:1
✖ memory under 5% and disk under 1 GiB are critical, at their edges (3.080014ms)
AssertionError [ERR_ASSERTION]: Expected values to be strictly equal:
'critical' !== 'held'
at TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/morgana-row257/packages/supervisor/tests/rules.test.mjs:253:10)
at Test.runInAsyncScope (node:async_hooks:226:14)
at Test.run (node:internal/test_runner/test:1402:25)
at Test.start (node:internal/test_runner/test:1262:17)
at startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17) {
generatedMessage: true,
code: 'ERR_ASSERTION',
actual: 'critical',
expected: 'held',
operator: 'strictEqual',
diff: 'simple'
}