392 lines
15 KiB
Plaintext
392 lines
15 KiB
Plaintext
===== 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'
|
||
}
|