test: add native client soak harness

This commit is contained in:
Samuel Onoja committed 2026-09-25 04:22:29 +01:00
1 parent 4eb456fb2b
commit d46becfd60
3 files changed
+210

No files matched your search

+45
View File
@@ -0,0 +1,45 @@
# Native-client soak testing
The M6 soak runner repeatedly creates and destroys native Wayland clients while
exercising focus, resize, column width, fullscreen, floating, and workspace
paths. Every tenth iteration also terminates a client abruptly. The runner
checks that the compositor and authenticated IPC socket remain responsive and
records compositor RSS growth.
Build Ferese and `feresectl`, start the compositor, and run:
```bash
FERESE_TRACE_PERFORMANCE=1 cargo run -p ferese -- foot
```
From a terminal connected to Ferese, or from the host with the Ferese socket
selected, run:
```bash
WAYLAND_DISPLAY=wayland-1 \
FERESE_PID="$(pgrep -n -x ferese)" \
./scripts/soak-native.sh
```
The default duration is 24 hours. A shorter validation run is:
```bash
WAYLAND_DISPLAY=wayland-1 \
FERESE_PID="$(pgrep -n -x ferese)" \
FERESE_SOAK_SECONDS=300 \
./scripts/soak-native.sh
```
Environment controls:
- `FERESE_SOAK_SECONDS`: run duration, default `86400`;
- `FERESE_SOAK_DELAY`: delay between operations, default `0.15` seconds;
- `FERESE_SOAK_CLIENT`: native client executable, default `foot`;
- `FERESECTL`: path to `feresectl`, default `target/debug/feresectl`;
- `FERESE_PID`: compositor PID; automatic lookup is only a fallback;
- `FERESE_SOAK_LOG`: result log, default `/tmp/ferese-soak-<pid>.log`.
Run the same workload once with the nested backend and once from a direct DRM
session. A passing run requires the compositor to remain alive, IPC queries to
succeed, and RSS samples to stabilize rather than grow without bound. Preserve
the soak log and the `ferese::render` summaries with the release artifacts.