[PATCH v2] cyclictest, cyclicdeadline: Exit with failure when breaktrace threshold is exceeded
Costa Shulyupin <[email protected]>
| Newsgroups | org.kernel.vger.linux-rt-users |
|---|---|
| Message-ID | <[email protected]> |
cyclictest and cyclicdeadline always exit 0 even when the latency threshold set by --breaktrace is exceeded, requiring test harnesses to parse output or json to detect a failed test. Set ret to EXIT_FAILURE when break_thread_id is set, indicating the breaktrace threshold was hit. The exit code enables shell expressions like "cyclictest ... && echo PASS" and seamless integration with testing frameworks. Also pass ret to rt_write_json() in cyclicdeadline so the JSON output reflects the failure. Assisted-by: Claude:claude-opus-4-6 Signed-off-by: Costa Shulyupin <[email protected]> --- v2: - refine subject - "Assisted-by" already conforms format AGENT_NAME:MODEL_VERSION - add sob --- src/cyclictest/cyclictest.8 | 8 ++++++++ src/cyclictest/cyclictest.c | 1 + src/sched_deadline/cyclicdeadline.8 | 8 ++++++++ src/sched_deadline/cyclicdeadline.c | 7 +++++-- 4 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/cyclictest/cyclictest.8 b/src/cyclictest/cyclictest.8 index fc6121aa4d47..813c61653f61 100644 --- a/src/cyclictest/cyclictest.8 +++ b/src/cyclictest/cyclictest.8 @@ -311,6 +311,14 @@ in mind, below cyclictest example invocation can provide a good start: --histfile=output.txt .fi . +.SH "Exit status" +.TP +.B 0 +Success - all latencies were within the breaktrace threshold, or no threshold was set. +.TP +.B 1 +Failure - a latency exceeding the breaktrace threshold was detected. +. .SH "See also" .MR numa 3 , .MR numactl 8 , diff --git a/src/cyclictest/cyclictest.c b/src/cyclictest/cyclictest.c index 71cf5cb25c22..88fc08347cba 100644 --- a/src/cyclictest/cyclictest.c +++ b/src/cyclictest/cyclictest.c @@ -2337,6 +2337,7 @@ int main(int argc, char **argv) if (break_thread_id) { printf("# Break thread: %d\n", break_thread_id); printf("# Break value: %llu\n", (unsigned long long)break_thread_value); + ret = EXIT_FAILURE; } } diff --git a/src/sched_deadline/cyclicdeadline.8 b/src/sched_deadline/cyclicdeadline.8 index bfc6327c51da..cd7088629d97 100644 --- a/src/sched_deadline/cyclicdeadline.8 +++ b/src/sched_deadline/cyclicdeadline.8 @@ -58,6 +58,14 @@ Send break trace command when latency > USEC .B \-\-tracemark write a trace mark when \-b latency is exceeded. .br +.SH "Exit status" +.TP +.B 0 +Success - all latencies were within the breaktrace threshold, or no threshold was set. +.TP +.B 1 +Failure - a latency exceeding the breaktrace threshold was detected. +. .SH AUTHOR cyclicdeadline was written by Steven Rostedt <[email protected]> .PP diff --git a/src/sched_deadline/cyclicdeadline.c b/src/sched_deadline/cyclicdeadline.c index 0c6c96976010..1123de4f4cae 100644 --- a/src/sched_deadline/cyclicdeadline.c +++ b/src/sched_deadline/cyclicdeadline.c @@ -1315,10 +1315,13 @@ int main(int argc, char **argv) loop(sched_data, nr_threads); + ret = EXIT_SUCCESS; + if (tracelimit) { if (break_thread_id) { printf("# Break thread: %d\n", break_thread_id); printf("# Break value: %llu\n", (unsigned long long)break_thread_value); + ret = EXIT_FAILURE; } } @@ -1334,7 +1337,7 @@ int main(int argc, char **argv) } if (strlen(jsonfile) != 0) - rt_write_json(jsonfile, 0, write_stats, sched_data); + rt_write_json(jsonfile, ret, write_stats, sched_data); if (setcpu_buf) free(setcpu_buf); @@ -1344,5 +1347,5 @@ int main(int argc, char **argv) fclose(histfile); hset_destroy(&hset); - return 0; + return ret; } -- 2.55.0