Exercise the newly introduced printk tracefs file that turns on and off the dmesg redirection.
Signed-off-by: Vincent Donnefort <[email protected]> diff --git a/tools/testing/selftests/ftrace/test.d/remotes/functions b/tools/testing/selftests/ftrace/test.d/remotes/functions index 05224fac3653..8dd9c961977b 100644 --- a/tools/testing/selftests/ftrace/test.d/remotes/functions +++ b/tools/testing/selftests/ftrace/test.d/remotes/functions @@ -8,6 +8,7 @@ setup_remote() cd remotes/$name/ echo 0 > tracing_on + echo 0 > printk clear_trace echo 7 > buffer_size_kb echo 0 > events/enable diff --git a/tools/testing/selftests/ftrace/test.d/remotes/hypervisor/printk.tc b/tools/testing/selftests/ftrace/test.d/remotes/hypervisor/printk.tc new file mode 100644 index 000000000000..aca7a2bfe293 --- /dev/null +++ b/tools/testing/selftests/ftrace/test.d/remotes/hypervisor/printk.tc @@ -0,0 +1,11 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# description: Test trace remote printk, the dmesg redirection +# requires: remotes/hypervisor/write_event + +SOURCE_REMOTE_TEST=1 +. $TEST_DIR/remotes/printk.tc + +set -e +setup_remote "hypervisor" +test_printk diff --git a/tools/testing/selftests/ftrace/test.d/remotes/printk.tc b/tools/testing/selftests/ftrace/test.d/remotes/printk.tc new file mode 100644 index 000000000000..80eaf13e240d --- /dev/null +++ b/tools/testing/selftests/ftrace/test.d/remotes/printk.tc @@ -0,0 +1,72 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# description: Test trace remote printk, the dmesg redirection +# requires: remotes/test + +. $TEST_DIR/remotes/functions + +test_printk() +{ + echo 0 > tracing_on + assert_unloaded + + # + # Test printk on/off when tracing is disabled + # + echo 1 > printk + test $(cat printk) -eq 1 + assert_loaded + + echo 0 > printk + test $(cat printk) -eq 0 + assert_unloaded + + # + # Test events are logged to dmesg + # + dmesg -c > /dev/null + + echo 1 > tracing_on + assert_loaded + echo 1 > printk + test $(cat printk) -eq 1 + + nr_events=128 + for i in $(seq 1 $nr_events); do + echo $i > write_event + done + + sleep 1 + output=$(mktemp $TMPDIR/remote_test.XXXXXX) + dmesg | grep "selftest id=" | sed 's/^[^]]*] //'> $output + + check_trace 1 $nr_events $output + + rm $output + + # + # Disable printk and Test events were not consumed by dmesg + # + echo 0 > printk + test $(cat printk) -eq 0 + + start_id=$(($nr_events + 1)) + end_id=$(($start_id + $nr_events)) + + for i in $(seq $start_id $end_id); do + echo $i > write_event + done + + sleep 1 + + output=$(dump_trace_pipe) + check_trace $start_id $end_id $output + rm $output +} + +if [ -z "$SOURCE_REMOTE_TEST" ]; then + set -e + + setup_remote_test + test_printk +fi -- 2.54.0.1032.g2f8565e1d1-goog
