Kernel Proc Lab uses layered testing because some checks can run without root while runtime module tests require a loaded kernel module.
Run on a normal development machine:
make ci-check
shellcheck demo.sh scripts/*.shCoverage:
- user-space tool builds
- ring-buffer helper tests
- ioctl ABI layout tests
- optional kernel module build
- version and release metadata checks
- shell syntax checks
Run on a machine where loading an out-of-tree module is acceptable:
make load
make device-node
make runtime-smoke
make stress-test
make ops-checkCoverage:
- module load path
/proc/kernel_proc_lab/dev/kernel_proc_lab- ioctl stats and config
- JSON log and stream output
- collector persistence path
- reset and heartbeat controls
- basic operational readiness
The repository includes tests/kernel_proc_lab_kunit.c for KUnit-capable kernel trees. It targets the pure ring-buffer helper layer rather than user-space or device-node behavior.
The file is intentionally not wired into the external-module Makefile because KUnit availability depends on the target kernel config. To run it, copy or link the test into a KUnit-enabled kernel tree and add it to the relevant Kbuild/Kconfig test target.
Expected suite name:
kernel_proc_lab
Covered behavior:
- ABI constants
- retained ring start calculation
- wraparound snapshot order
- retained-entry lookup
make qemu-smoke documents the expected guest flow. A fully automated QEMU job requires a selected kernel image and rootfs that include matching headers and module-loading support.
Recommended future automation:
- build or download a known-good rootfs
- boot a matching kernel under QEMU
- copy the source tree into the guest
- run
make - load the module
- run
make runtime-smoke - unload the module
Until that image is pinned, QEMU is tracked as an explicit manual smoke path rather than a fake green CI job.