From: Steven Rostedt <rostedt@goodmis.org>
To: linux-kernel@vger.kernel.org
Cc: Ingo Molnar <mingo@kernel.org>,
Andrew Morton <akpm@linux-foundation.org>,
Jonathan Corbet <corbet@lwn.net>, Ingo Molnar <mingo@redhat.com>,
Shuah Khan <shuah@kernel.org>, Tom Zanussi <zanussi@kernel.org>,
Kalesh Singh <kaleshsingh@google.com>
Subject: [for-next][PATCH 13/14] tracing/selftests: Add tests for hist trigger expression parsing
Date: Tue, 02 Nov 2021 16:11:39 -0400 [thread overview]
Message-ID: <20211102201158.956019455@goodmis.org> (raw)
In-Reply-To: 20211102201126.559641540@goodmis.org
From: Kalesh Singh <kaleshsingh@google.com>
Add tests for the parsing of hist trigger expressions; and to
validate expression evaluation.
Link: https://lkml.kernel.org/r/20211029183339.3216491-5-kaleshsingh@google.com
Cc: Jonathan Corbet <corbet@lwn.net>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Shuah Khan <shuah@kernel.org>
Cc: Tom Zanussi <zanussi@kernel.org>
Signed-off-by: Kalesh Singh <kaleshsingh@google.com>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
---
.../trigger/trigger-hist-expressions.tc | 63 +++++++++++++++++++
1 file changed, 63 insertions(+)
create mode 100644 tools/testing/selftests/ftrace/test.d/trigger/trigger-hist-expressions.tc
diff --git a/tools/testing/selftests/ftrace/test.d/trigger/trigger-hist-expressions.tc b/tools/testing/selftests/ftrace/test.d/trigger/trigger-hist-expressions.tc
new file mode 100644
index 000000000000..05ffba299dbf
--- /dev/null
+++ b/tools/testing/selftests/ftrace/test.d/trigger/trigger-hist-expressions.tc
@@ -0,0 +1,63 @@
+#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0
+# description: event trigger - test histogram expression parsing
+# requires: set_event events/sched/sched_process_fork/trigger events/sched/sched_process_fork/hist error_log "<var1>=<field|var_ref|numeric_literal>":README
+
+
+fail() { #msg
+ echo $1
+ exit_fail
+}
+
+test_hist_expr() { # test_name expression expected_val
+ trigger="events/sched/sched_process_fork/trigger"
+
+ reset_trigger_file $trigger
+
+ echo "Test hist trigger expressions - $1"
+
+ echo "hist:keys=common_pid:x=$2" > $trigger
+
+ for i in `seq 1 10` ; do ( echo "forked" > /dev/null); done
+
+ actual=`grep -o 'x=[[:digit:]]*' $trigger | awk -F= '{ print $2 }'`
+
+ if [ $actual != $3 ]; then
+ fail "Failed hist trigger expression evaluation: Expression: $2 Expected: $3, Actual: $actual"
+ fi
+
+ reset_trigger_file $trigger
+}
+
+check_error() { # test_name command-with-error-pos-by-^
+ trigger="events/sched/sched_process_fork/trigger"
+
+ echo "Test hist trigger expressions - $1"
+ ftrace_errlog_check 'hist:sched:sched_process_fork' "$2" $trigger
+}
+
+test_hist_expr "Variable assignment" "123" "123"
+
+test_hist_expr "Subtraction not associative" "16-8-4-2" "2"
+
+test_hist_expr "Division not associative" "64/8/4/2" "1"
+
+test_hist_expr "Same precedence operators (+,-) evaluated left to right" "16-8+4+2" "14"
+
+test_hist_expr "Same precedence operators (*,/) evaluated left to right" "4*3/2*2" "12"
+
+test_hist_expr "Multiplication evaluated before addition/subtraction" "4+3*2-2" "8"
+
+test_hist_expr "Division evaluated before addition/subtraction" "4+6/2-2" "5"
+
+# err pos for "too many subexpressions" is dependent on where
+# the last subexpression was detected. This can vary depending
+# on how the expression tree was generated.
+check_error "Too many subexpressions" 'hist:keys=common_pid:x=32+^10*3/20-4'
+check_error "Too many subexpressions" 'hist:keys=common_pid:x=^1+2+3+4+5'
+
+check_error "Unary minus not supported in subexpression" 'hist:keys=common_pid:x=-(^1)+2'
+
+check_error "Division by zero" 'hist:keys=common_pid:x=3/^0'
+
+exit 0
--
2.33.0
next prev parent reply other threads:[~2021-11-02 20:12 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-11-02 20:11 [for-next][PATCH 00/14] tracing: Updates for 5.16 Steven Rostedt
2021-11-02 20:11 ` [for-next][PATCH 01/14] tracing/osnoise: Do not follow tracing_cpumask Steven Rostedt
2021-11-02 20:11 ` [for-next][PATCH 02/14] tracing/osnoise: Improve comments about barrier need for NMI callbacks Steven Rostedt
2021-11-02 20:11 ` [for-next][PATCH 03/14] tracing/osnoise: Split workload start from the tracer start Steven Rostedt
2021-11-02 20:11 ` [for-next][PATCH 04/14] tracing/osnoise: Use start/stop_per_cpu_kthreads() on osnoise_cpus_write() Steven Rostedt
2021-11-02 20:11 ` [for-next][PATCH 05/14] tracing/osnoise: Support a list of trace_array *tr Steven Rostedt
2021-11-02 20:11 ` [for-next][PATCH 06/14] tracing/osnoise: Remove TIMERLAT ifdefs from inside functions Steven Rostedt
2021-11-02 20:11 ` [for-next][PATCH 07/14] tracing/osnoise: Allow multiple instances of the same tracer Steven Rostedt
2021-11-02 20:11 ` [for-next][PATCH 08/14] tracing/osnoise: Remove STACKTRACE ifdefs from inside functions Steven Rostedt
2021-11-02 20:11 ` [for-next][PATCH 09/14] tracing/osnoise: Remove PREEMPT_RT " Steven Rostedt
2021-11-02 20:11 ` [for-next][PATCH 10/14] tracing/histogram: Optimize division by constants Steven Rostedt
2021-11-02 20:11 ` [for-next][PATCH 11/14] tracing/histogram: Update division by 0 documentation Steven Rostedt
2021-11-02 20:11 ` [for-next][PATCH 12/14] tracing/histogram: Document hist trigger variables Steven Rostedt
2021-11-02 20:11 ` Steven Rostedt [this message]
2021-11-02 20:11 ` [for-next][PATCH 14/14] ftrace/samples: Add missing prototype for my_direct_func Steven Rostedt
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20211102201158.956019455@goodmis.org \
--to=rostedt@goodmis.org \
--cc=akpm@linux-foundation.org \
--cc=corbet@lwn.net \
--cc=kaleshsingh@google.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=mingo@redhat.com \
--cc=shuah@kernel.org \
--cc=zanussi@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.