summaryrefslogtreecommitdiff
path: root/tools/testing/selftests/verification/test.d/functions
diff options
context:
space:
mode:
authorGabriele Monaco <gmonaco@redhat.com>2025-10-17 13:52:03 +0200
committerGabriele Monaco <gmonaco@redhat.com>2025-11-11 13:18:55 +0100
commit0c0cd931a037638ec49ae57c6100fcbb6a729bae (patch)
tree8df50c4ef9392bf41b1b7c887cf22c4fe1bb4e83 /tools/testing/selftests/verification/test.d/functions
parenta0aa283c53a703240a93ae38aa04bc9e4ca89d12 (diff)
downloadlinux-next-0c0cd931a037638ec49ae57c6100fcbb6a729bae.tar.gz
linux-next-0c0cd931a037638ec49ae57c6100fcbb6a729bae.zip
selftests/verification: Add initial RV tests
Add a series of tests to validate the RV tracefs API and basic functionality. * available monitors: Check that all monitors (from the monitors folder) appear as available and have a description. Works with nested monitors. * enable/disable: Enable and disable all monitors and validate both the enabled file and the enabled_monitors. Check that enabling container monitors enables all nested monitors. * reactors: Set all reactors and validate the setting, also for nested monitors. * wwnr with printk: wwnr is broken on purpose, run it with a load and check that the printk reactor works. Also validate disabling reacting_on or monitoring_on prevents reactions. These tests use the ftracetest suite. Acked-by: Nam Cao <namcao@linutronix.de> Link: https://lore.kernel.org/r/20251017115203.140080-3-gmonaco@redhat.com Signed-off-by: Gabriele Monaco <gmonaco@redhat.com>
Diffstat (limited to 'tools/testing/selftests/verification/test.d/functions')
-rw-r--r--tools/testing/selftests/verification/test.d/functions39
1 files changed, 39 insertions, 0 deletions
diff --git a/tools/testing/selftests/verification/test.d/functions b/tools/testing/selftests/verification/test.d/functions
new file mode 100644
index 000000000000..ec36a092f56e
--- /dev/null
+++ b/tools/testing/selftests/verification/test.d/functions
@@ -0,0 +1,39 @@
+check_requires() { # Check required files, monitors and reactors
+ for i in "$@" ; do
+ p=${i%:program}
+ m=${i%:monitor}
+ r=${i%:reactor}
+ if [ $p != $i ]; then
+ if ! which $p ; then
+ echo "Required program $p is not found."
+ exit_unresolved
+ fi
+ elif [ $m != $i ]; then
+ if ! grep -wq $m available_monitors ; then
+ echo "Required monitor $m is not configured."
+ exit_unsupported
+ fi
+ elif [ $r != $i ]; then
+ if ! grep -wq $r available_reactors ; then
+ echo "Required reactor $r is not configured."
+ exit_unsupported
+ fi
+ elif [ ! -e $i ]; then
+ echo "Required feature interface $i doesn't exist."
+ exit_unsupported
+ fi
+ done
+}
+
+initialize_system() { # Reset RV to initial-state
+ echo > enabled_monitors
+ for m in monitors/*; do
+ echo nop > $m/reactors || true
+ done
+ echo 1 > monitoring_on
+ echo 1 > reacting_on || true
+}
+
+finish_system() {
+ initialize_system
+}