From: "Steven Rostedt (Google)" <[email protected]>
Add a self test that will write into the trace buffer with differ trace
sub buffer order sizes.
Signed-off-by: Steven Rostedt (Google) <[email protected]>
---
.../ftrace/test.d/00basic/ringbuffer_order.tc | 46 +++++++++++++++++++
1 file changed, 46 insertions(+)
create mode 100644 tools/testing/selftests/ftrace/test.d/00basic/ringbuffer_order.tc
diff --git a/tools/testing/selftests/ftrace/test.d/00basic/ringbuffer_order.tc b/tools/testing/selftests/ftrace/test.d/00basic/ringbuffer_order.tc
new file mode 100644
index 000000000000..c0d76dc724d3
--- /dev/null
+++ b/tools/testing/selftests/ftrace/test.d/00basic/ringbuffer_order.tc
@@ -0,0 +1,46 @@
+#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0
+# description: Change the ringbuffer size
+# requires: buffer_subbuf_order
+# flags: instance
+
+get_buffer_data_size() {
+ sed -ne 's/^.*data.*size:\([0-9][0-9]*\).*/\1/p' events/header_page
+}
+
+a="1234567890"
+
+make_str() {
+ cnt=$1
+ s=""
+ while [ $cnt -gt 10 ]; do
+ s="${s}${a}"
+ cnt=$((cnt-10))
+ done
+ while [ $cnt -gt 0 ]; do
+ s="${s}X"
+ cnt=$((cnt-1))
+ done
+ echo -n $s
+}
+
+test_buffer() {
+
+ size=`get_buffer_data_size`
+
+ str=`make_str $size`
+
+ echo $str > trace_marker
+
+ grep -q $a trace
+}
+
+ORIG=`cat buffer_subbuf_order`
+
+for a in `seq 0 4`; do
+ echo 0 > buffer_subbuf_order
+ test_buffer
+done
+
+echo $ORIG > buffer_subbuf_order
+
--
2.42.0
On 2023-12-09 22:54, Steven Rostedt wrote:
[...]
> +get_buffer_data_size() {
> + sed -ne 's/^.*data.*size:\([0-9][0-9]*\).*/\1/p' events/header_page
> +}
> +
> +a="1234567890"
> +
> +make_str() {
> + cnt=$1
> + s=""
> + while [ $cnt -gt 10 ]; do
> + s="${s}${a}"
> + cnt=$((cnt-10))
> + done
> + while [ $cnt -gt 0 ]; do
> + s="${s}X"
> + cnt=$((cnt-1))
> + done
> + echo -n $s
> +}
> +
> +test_buffer() {
> +
> + size=`get_buffer_data_size`
> +
> + str=`make_str $size`
> +
> + echo $str > trace_marker
> +
> + grep -q $a trace
This test has no clue if the record was truncated or not.
It basically repeats the string
"1234567890" until it fills the subbuffer size and pads with
XXXX as needed as trace marker payload, but the grep looks for the
"1234567890" pattern only.
The test should be extended to validate whether the trace marker
payload was truncated or not, otherwise it is of limited value.
Thanks,
Mathieu
--
Mathieu Desnoyers
EfficiOS Inc.
https://www.efficios.com
On Sun, 10 Dec 2023 09:26:13 -0500
Mathieu Desnoyers <[email protected]> wrote:
> This test has no clue if the record was truncated or not.
>
> It basically repeats the string
>
> "1234567890" until it fills the subbuffer size and pads with
> XXXX as needed as trace marker payload, but the grep looks for the
> "1234567890" pattern only.
>
> The test should be extended to validate whether the trace marker
> payload was truncated or not, otherwise it is of limited value.
It can be, but for now it's just testing to make sure it doesn't crash. I
ran out of time, and if someone else wants to extend this, go ahead.
Currently, my testing has been just manual observations. I threw this in
just to have some kind of smoke test applied.
I agree with the API changes, and will update that. But given that this has
been two years and never applied, is because nobody has the time to work on
this. The reason I'm pushing for this now, is because Kent hit the limit in
his work. Knowing that he would not have hit this limit if these patches
were applied, I feel more urgency on getting them in. But this is all on my
own time, not part of my Employer (hence why I'm working on the weekend).
-- Steve