import { describe, it, expect } from "vitest"; import { parseMetrics } from "./machineMetrics.js"; const RAW = [ "===SU:METRICS_CPU===", "0.08 0.12 0.09 1/234 5678", "4", "===SU:METRICS_MEM===", "MemTotal: 4194304 kB", "MemAvailable: 2097152 kB", "===SU:METRICS_FS===", "FS\t/\text4\t32000000000\t9280000000\t29%", "FS\t/boot\text2\t500000000\t475000000\t95%", "===SU:EXIT=0===", ].join("\n"); describe("parseMetrics", () => { it("lit load average et cores", () => { const m = parseMetrics(RAW); expect(m.cpu.load1).toBe(0.08); expect(m.cpu.load5).toBe(0.12); expect(m.cpu.cores).toBe(4); }); it("calcule la mémoire en octets (kB→B) et le pourcentage utilisé", () => { const m = parseMetrics(RAW); expect(m.memory.totalBytes).toBe(4194304 * 1024); expect(m.memory.availableBytes).toBe(2097152 * 1024); expect(m.memory.usedBytes).toBe((4194304 - 2097152) * 1024); expect(m.memory.usedPercent).toBe(50); }); it("liste les systèmes de fichiers", () => { const m = parseMetrics(RAW); expect(m.filesystems).toHaveLength(2); expect(m.filesystems[0]).toEqual({ mount: "/", fstype: "ext4", sizeBytes: 32000000000, usedBytes: 9280000000, usedPercent: 29, }); }); it("émet un warning pour un FS quasi plein (>=90%)", () => { const m = parseMetrics(RAW); expect(m.warnings.some((w) => w.includes("/boot"))).toBe(true); }); });