IKHSAN
ENID Baca dalam Bahasa Indonesia

homeio

Public

Forked from doctor-io/homeio

Branch
main
Latest commit
958d74616 October 2026

cpu-activity.test.ts

Open raw
import type os from "node:os";
import { describe, expect, it } from "vitest";
import { createCpuLoadTracker, readCpuTimes } from "@/lib/server/modules/system/cpu-activity";

function core(times: Partial<os.CpuInfo["times"]>): os.CpuInfo {
  return { model: "cpu", speed: 1000, times: { user: 0, nice: 0, sys: 0, idle: 0, irq: 0, ...times } };
}

describe("cpu activity", () => {
  it("sums busy and total time over all cores", () => {
    const times = readCpuTimes([
      core({ user: 100, nice: 10, sys: 50, irq: 5, idle: 835 }),
      core({ user: 200, idle: 800 }),
    ]);

    expect(times).toEqual({ busyMs: 365, totalMs: 2000 });
  });

  it("turns two readings into a load percent", () => {
    const track = createCpuLoadTracker();

    expect(track({ busyMs: 1_000, totalMs: 10_000 })).toBeNull();
    expect(track({ busyMs: 1_250, totalMs: 11_000 })).toBe(25);
  });

  it("gives no load when no time passed or counters went backwards", () => {
    const track = createCpuLoadTracker();
    track({ busyMs: 1_000, totalMs: 10_000 });

    expect(track({ busyMs: 1_000, totalMs: 10_000 })).toBeNull();
    expect(track({ busyMs: 500, totalMs: 12_000 })).toBeNull();
  });
});
bytes
1,188
lines
34
Type
ts
Latest commit
16 October 2026