Hi, This is the v2 series of the boottime tracing test framework to selftests/ftrace. Previous version is here:
https://lore.kernel.org/all/178635442508.380779.3709136256425432083.stgit@devnote2/ In this version, I fixed some issues pointed by Sashiko[1]. See below changelog for details. [1] https://sashiko.dev/#/patchset/178635442508.380779.3709136256425432083.stgit%40devnote2 Changes in v2: [1/4] - Add top-level boottime-ktap wrapper script and include it in TEST_PROGS in Makefile. - Define BUSYBOX_APPLETS as a global array variable including sleep and sed. - Require timeout tool in run_boottime_test.sh and README, and always invoke QEMU under timeout command to prevent infinite execution loops. - Add fallback sleep loop safeguard (sleep 100 || break) in guest init script. - Support multi-line .qemuopts files using read -r -d '' -a qemu_args. [3/4] - Fix buffer_size_kb parsing in cmdline-03-trace-buf-size.sh to handle unexpanded buffer string output '1 (expanded: 2048)'. - Use grep -qw in cmdline-04-trace-options.sh to match word options and avoid matching disabled 'no<option>' entries. [4/4] - Increase reserve_mem alignment to 32M (reserve_mem=12M:32M:trace) to ensure stable physical memory placement across KASLR reboots. The new run_boottime_test.sh can run tests not only for boottime trace but also other kernel cmdline tracing options, including persistent ring buffer and its backup. Overview -------- The test runner (`run_boottime_test.sh`) constructs a lightweight initramfs with busybox and a tracefs checker script from `tests/`, attaches optional bootconfigs from `bootconfigs/` using the `bootconfig` tool, applies optional command-line parameters from `cmdlines/`, boots the target kernel image under QEMU, and reports results according to TAP version 13 format. Here is an example of the test output. ----- TAP version 13 1..14 ok 1 01-kprobe ok 2 02-synth ok 3 03-eprobe ok 4 04-fprobe ok 5 05-tprobe ok 6 06-instance ok 7 cmdline-01-ftrace ok 8 cmdline-02-trace-event ok 9 cmdline-03-trace-buf-size ok 10 cmdline-04-trace-options ok 11 cmdline-05-trace-clock ok 12 cmdline-06-trace-instance ok 13 persistent-01-reserve-mem ok 14 persistent-02-backup-instance # Totals: pass:14 fail:0 xfail:0 xpass:0 skip:0 error:0 ----- Note that this requires QEMU, busybox and some other tools to run, see README for more information. If those tools are not installed, this test will be skipped. Other discussion ---------------- BTW, I found other similar shell scripts under kselftest for other subsystems. I think we can make an integrated (standard) QEMU test framework in the kselftest common directory and reuse it. Also, maybe we can reconsider using ktest.pl to run these tests. Thanks, --- base-commit: 29a86c5e6361caffa7e75e891169e813f82ff688 Masami Hiramatsu (Google) (4): selftests/ftrace: Add generic boot tracing test framework selftests/ftrace: Add boot-time tracing testcases selftests/ftrace: Add kernel cmdline tracing testcases selftests/ftrace: Add persistent ring buffer testcases tools/testing/selftests/ftrace/Makefile | 4 tools/testing/selftests/ftrace/boottime-ktap | 6 tools/testing/selftests/ftrace/boottime/Makefile | 10 + tools/testing/selftests/ftrace/boottime/README | 72 ++++ .../ftrace/boottime/bootconfigs/01-kprobe.bconf | 4 .../ftrace/boottime/bootconfigs/02-synth.bconf | 4 .../ftrace/boottime/bootconfigs/03-eprobe.bconf | 4 .../ftrace/boottime/bootconfigs/04-fprobe.bconf | 4 .../ftrace/boottime/bootconfigs/05-tprobe.bconf | 4 .../ftrace/boottime/bootconfigs/06-instance.bconf | 5 .../boottime/cmdlines/cmdline-01-ftrace.cmdline | 1 .../cmdlines/cmdline-02-trace-event.cmdline | 1 .../cmdlines/cmdline-03-trace-buf-size.cmdline | 1 .../cmdlines/cmdline-04-trace-options.cmdline | 1 .../cmdlines/cmdline-05-trace-clock.cmdline | 1 .../cmdlines/cmdline-06-trace-instance.cmdline | 1 .../cmdlines/persistent-01-reserve-mem.cmdline | 1 .../cmdlines/persistent-02-backup-instance.cmdline | 1 .../selftests/ftrace/boottime/run_boottime_test.sh | 384 ++++++++++++++++++++ .../selftests/ftrace/boottime/tests/01-kprobe.sh | 25 + .../selftests/ftrace/boottime/tests/02-synth.sh | 25 + .../selftests/ftrace/boottime/tests/03-eprobe.sh | 25 + .../selftests/ftrace/boottime/tests/04-fprobe.sh | 25 + .../selftests/ftrace/boottime/tests/05-tprobe.sh | 25 + .../selftests/ftrace/boottime/tests/06-instance.sh | 30 ++ .../ftrace/boottime/tests/cmdline-01-ftrace.sh | 19 + .../boottime/tests/cmdline-02-trace-event.sh | 26 + .../boottime/tests/cmdline-03-trace-buf-size.sh | 28 + .../boottime/tests/cmdline-04-trace-options.sh | 23 + .../boottime/tests/cmdline-05-trace-clock.sh | 19 + .../boottime/tests/cmdline-06-trace-instance.sh | 24 + .../boottime/tests/persistent-01-reserve-mem.sh | 28 + .../tests/persistent-02-backup-instance.sh | 40 ++ tools/testing/selftests/ftrace/config | 6 34 files changed, 875 insertions(+), 2 deletions(-) create mode 100755 tools/testing/selftests/ftrace/boottime-ktap create mode 100644 tools/testing/selftests/ftrace/boottime/Makefile create mode 100644 tools/testing/selftests/ftrace/boottime/README create mode 100644 tools/testing/selftests/ftrace/boottime/bootconfigs/01-kprobe.bconf create mode 100644 tools/testing/selftests/ftrace/boottime/bootconfigs/02-synth.bconf create mode 100644 tools/testing/selftests/ftrace/boottime/bootconfigs/03-eprobe.bconf create mode 100644 tools/testing/selftests/ftrace/boottime/bootconfigs/04-fprobe.bconf create mode 100644 tools/testing/selftests/ftrace/boottime/bootconfigs/05-tprobe.bconf create mode 100644 tools/testing/selftests/ftrace/boottime/bootconfigs/06-instance.bconf create mode 100644 tools/testing/selftests/ftrace/boottime/cmdlines/cmdline-01-ftrace.cmdline create mode 100644 tools/testing/selftests/ftrace/boottime/cmdlines/cmdline-02-trace-event.cmdline create mode 100644 tools/testing/selftests/ftrace/boottime/cmdlines/cmdline-03-trace-buf-size.cmdline create mode 100644 tools/testing/selftests/ftrace/boottime/cmdlines/cmdline-04-trace-options.cmdline create mode 100644 tools/testing/selftests/ftrace/boottime/cmdlines/cmdline-05-trace-clock.cmdline create mode 100644 tools/testing/selftests/ftrace/boottime/cmdlines/cmdline-06-trace-instance.cmdline create mode 100644 tools/testing/selftests/ftrace/boottime/cmdlines/persistent-01-reserve-mem.cmdline create mode 100644 tools/testing/selftests/ftrace/boottime/cmdlines/persistent-02-backup-instance.cmdline create mode 100755 tools/testing/selftests/ftrace/boottime/run_boottime_test.sh create mode 100644 tools/testing/selftests/ftrace/boottime/tests/01-kprobe.sh create mode 100644 tools/testing/selftests/ftrace/boottime/tests/02-synth.sh create mode 100644 tools/testing/selftests/ftrace/boottime/tests/03-eprobe.sh create mode 100644 tools/testing/selftests/ftrace/boottime/tests/04-fprobe.sh create mode 100644 tools/testing/selftests/ftrace/boottime/tests/05-tprobe.sh create mode 100644 tools/testing/selftests/ftrace/boottime/tests/06-instance.sh create mode 100644 tools/testing/selftests/ftrace/boottime/tests/cmdline-01-ftrace.sh create mode 100644 tools/testing/selftests/ftrace/boottime/tests/cmdline-02-trace-event.sh create mode 100644 tools/testing/selftests/ftrace/boottime/tests/cmdline-03-trace-buf-size.sh create mode 100644 tools/testing/selftests/ftrace/boottime/tests/cmdline-04-trace-options.sh create mode 100644 tools/testing/selftests/ftrace/boottime/tests/cmdline-05-trace-clock.sh create mode 100644 tools/testing/selftests/ftrace/boottime/tests/cmdline-06-trace-instance.sh create mode 100644 tools/testing/selftests/ftrace/boottime/tests/persistent-01-reserve-mem.sh create mode 100644 tools/testing/selftests/ftrace/boottime/tests/persistent-02-backup-instance.sh -- Masami Hiramatsu (Google) <[email protected]>
