test: add native client soak harness
This commit is contained in:
1 parent
4eb456fb2b
commit
d46becfd60
3 files changed
+210
No files matched your search
@@ -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.
|
||||
Reference in new issue
Block a user