[PATCH libevl v2 1/4] evl-test: add stress command support for background load testing
Tobias Schaffner <[email protected]> Thu, 9 Jul 2026 16:35:13 +0200
| Newsgroups | dev.linux.lists.xenomai |
|---|---|
| Message-ID | <[email protected]> |
Add the ability to run a stress command (e.g. stress-ng) in the background during test execution via the new -s option. This allows testing EVL functionality under system load. The stress command runs in its own process group (via setsid) to ensure clean termination of all child processes, and is automatically stopped when tests complete or the script exits normally or via signals. The stress command output is dropped by default but can be redirected using the --stress-out option. Usage example: evl-test --stress-cmd "stress-ng --vm 2 --vm-bytes 1G --cpu 4" -k Signed-off-by: Tobias Schaffner <[email protected]> --- utils/evl-test | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/utils/evl-test b/utils/evl-test index 5139d09..f6bd82f 100644 --- a/utils/evl-test +++ b/utils/evl-test @@ -7,7 +7,7 @@ if test \! -d $EVL_TESTDIR; then fi usage() { - echo >&2 "usage: $(basename $1) [-l][-L][-k][-r][-h] [test-list]" + echo >&2 "usage: $(basename $1) [-l][-L][-k][-r][-h][--stress-cmd cmd][--stress-out file] [test-list]" } help=false @@ -18,6 +18,9 @@ full_path=false test_args=false test_arg_list= test_list= +stress_cmd= +stress_pid= +stress_out=/dev/null while test $# -gt 0 do @@ -37,6 +40,10 @@ do -L) full_path=true; do_list=true; shift;; + --stress-cmd) stress_cmd="$2"; + shift 2;; + --stress-out) stress_out="$2"; + shift 2;; --) test_args=true shift;; -@) echo "run the EVL tests" @@ -49,6 +56,27 @@ do fi done +stop_stress() { + trap - EXIT INT TERM + if test -n "$stress_pid"; then + kill -TERM -$stress_pid 2>/dev/null + # Give the process up to one second to terminate gracefully + for i in $(seq 10); do kill -0 -$stress_pid 2>/dev/null || break; sleep 0.1; done + kill -KILL -$stress_pid 2>/dev/null + wait $stress_pid 2>/dev/null + fi + exit +} + +start_stress() { + if test -n "$stress_cmd"; then + trap 'stop_stress' EXIT INT TERM + setsid $stress_cmd </dev/null >"$stress_out" & + stress_pid=$! + sleep 1 # Give stress command time to start + fi +} + if test x$help = xtrue; then usage $0 exit 0 @@ -78,6 +106,8 @@ if test x$do_list = xtrue; then exit 0 fi +start_stress + result=0 while : ; do -- 2.43.0