Received: by 2002:a05:6a10:5bc5:0:0:0:0 with SMTP id os5csp1473753pxb; Tue, 26 Oct 2021 09:37:48 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwUyefxrJR6QEvJrT8L99rX6Nkk8dqY3Fk1qTq7wzUHRVPsxEwo/IzcWPhKiiTUv8aykOUj X-Received: by 2002:a05:6402:34d3:: with SMTP id w19mr16119093edc.151.1635266268531; Tue, 26 Oct 2021 09:37:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1635266268; cv=none; d=google.com; s=arc-20160816; b=dk42fjP3LAms/zggW49B0C8ASCrcmC7AZCX1d2wtdH2q03h1f1fUfQyfMS+sU7DHwN vdhkfQuxKILZ8XAwkcOZ96bet8tCyq7QHD4mO6YAEx9GQ7WDdW2n4vQfFZoizYqAjHKI E0m41rpwHEKN3UlM4k5p+P7B5Me8AprR59CcjNYo3/jSKZV4HzD/A0+cD7UAWq3SNKpV Of4s6sU66RU1frG52NtHjOnaRiO+9IjcPyWVVk2RcMD+97z+/2sn3kWuj+B3lXNOApPF OmxBdBwgjnSp//G4r79J/nyXqza3iyalc8vRxvp45e7Jr5/xKDKhy2lc2T/2vApBoqRR aJrA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:subject:cc:to:from:date :dkim-signature; bh=4eHaG/F8F4EYGPJWXSQB3ZZngna2fvEaZqxrpPVKNkQ=; b=MAV5ZbdG++Nl+tQGqPTWMTKqB/9nZnSobegG2p3+HOCQsRzzxsLenkn1ELQbBfFBSZ R7KAU7nB5sejTPtMX6eWce43tYivejns5AeTJSNAztaAjyjnBxcLD0vRrSXekqBbVNE0 fAzSdeiZaTeu8Ftq/cgwqjUhEOFrfUEHCvz/gw7s9IQ9Fv784NNpPWoM13oZlLZ5ZF+5 bYcT6Fi+zISO7XNGV++ylKF5OV+dgg5LgLD1YH9/+c9N1YLhG7j5peKt15zdI5qrjhZk S9/L5cy61Fkz0sSBz+6VZi9rAWW0sHv7Ty4PetZ19+w/KqU4sajWTdH4AvDjIR+AIShX qz/w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=hk0OKeyy; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id q11si21520119edd.253.2021.10.26.09.37.22; Tue, 26 Oct 2021 09:37:48 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=hk0OKeyy; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235853AbhJZMpp (ORCPT + 99 others); Tue, 26 Oct 2021 08:45:45 -0400 Received: from mail.kernel.org ([198.145.29.99]:49168 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235791AbhJZMpo (ORCPT ); Tue, 26 Oct 2021 08:45:44 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 2CA4F60F39; Tue, 26 Oct 2021 12:43:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1635252200; bh=YBc8Em5aUfRy4S1XWYzleN8bqGvlhMEwzsJsr5FHZgE=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=hk0OKeyyuA7z30tq4mnnLwUA/7RwBEpM8Z6pze3MEa/coy292optjdVFL+ZgFOKEx XJnqi+Qegm5O4SxAqMaNnW6IPjgBklgqBshc92/HzWf+OKKoPuuebdiuoVCTgEIIZP xmVtDmDRuppwwQ6AGS/VBMsuRnjfVrldtchXp2dtLtGzSvr3xJTCuvL0YyzfxJOgY6 f1iISu4u9KNNUmBKAjaTCC7ibFpoaFfmRquY1M6p9lZnFqwNk6HiOqoGQIFKLHEmI7 aGki21GL9hF2+Ae1C0tbcU4/9c6WQ6XVafjMHDspxbzdK+9ILag9EMHZwOo4tr9szq 3Dj71IfqCx3Dg== Date: Tue, 26 Oct 2021 21:43:11 +0900 From: Masami Hiramatsu To: Kalesh Singh Cc: surenb@google.com, hridya@google.com, namhyung@kernel.org, kernel-team@android.com, Jonathan Corbet , Steven Rostedt , Ingo Molnar , Shuah Khan , Masami Hiramatsu , Tom Zanussi , linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org Subject: Re: [PATCH v4 7/8] tracing/selftests: Add tests for hist trigger expression parsing Message-Id: <20211026214311.583c728d90d41778c38201dd@kernel.org> In-Reply-To: <20211025200852.3002369-8-kaleshsingh@google.com> References: <20211025200852.3002369-1-kaleshsingh@google.com> <20211025200852.3002369-8-kaleshsingh@google.com> X-Mailer: Sylpheed 3.7.0 (GTK+ 2.24.32; x86_64-pc-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Kalesh, On Mon, 25 Oct 2021 13:08:39 -0700 Kalesh Singh wrote: > Add tests for the parsing of hist trigger expressions; and to > validate expression evaluation. > > Signed-off-by: Kalesh Singh > Reviewed-by: Namhyung Kim > --- > > Changes in v3: > - Remove .sym-offset error check tests > > Changes in v2: > - Add Namhyung's Reviewed-by > - Update comment to clarify err_pos in "Too many subexpressions" test > > > .../testing/selftests/ftrace/test.d/functions | 4 +- > .../trigger/trigger-hist-expressions.tc | 72 +++++++++++++++++++ > 2 files changed, 74 insertions(+), 2 deletions(-) > create mode 100644 tools/testing/selftests/ftrace/test.d/trigger/trigger-hist-expressions.tc > > diff --git a/tools/testing/selftests/ftrace/test.d/functions b/tools/testing/selftests/ftrace/test.d/functions > index 000fd05e84b1..1855a63559ad 100644 > --- a/tools/testing/selftests/ftrace/test.d/functions > +++ b/tools/testing/selftests/ftrace/test.d/functions > @@ -16,13 +16,13 @@ reset_tracer() { # reset the current tracer > > reset_trigger_file() { > # remove action triggers first > - grep -H ':on[^:]*(' $@ | > + grep -H ':on[^:]*(' $@ | tac | > while read line; do > cmd=`echo $line | cut -f2- -d: | cut -f1 -d"["` > file=`echo $line | cut -f1 -d:` > echo "!$cmd" >> $file > done > - grep -Hv ^# $@ | > + grep -Hv ^# $@ | tac | > while read line; do > cmd=`echo $line | cut -f2- -d: | cut -f1 -d"["` > file=`echo $line | cut -f1 -d:` If this update has any meaning, please make a separate patch for this part. > 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..e715641c54d3 > --- /dev/null > +++ b/tools/testing/selftests/ftrace/test.d/trigger/trigger-hist-expressions.tc > @@ -0,0 +1,72 @@ > +#!/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 Hmm, are there any way to check the running kernel supports this feature? Because the latest version of the kselftest is expected to run on the old stable kernel for testing, the testcase should check whether the kernel supports this testing feature or not. (That's why the requires tag supports README pattern check) So, at first if you didn't update the /README, please update it first to show the new syntax is supported, and add "SOME-PATTERN":README to the requires tag. Thank you, > + > + > +fail() { #msg > + echo $1 > + exit_fail > +} > + > +get_hist_var() { #var_name hist_path > + hist_output=`grep -m1 "$1: " $2` > + hitcount=`echo $hist_output | awk '{ for (i=1; i<=NF; ++i) { if ($i ~ "hitcount:") print $(i+1)} }'` > + var_sum=`echo $hist_output | awk '{ for (i=1; i<=NF; ++i) { if ($i ~ "'$1':") print $(i+1)} }'` > + var_val=$(( var_sum / hitcount )) > + echo $var_val > +} > + > +test_hist_expr() { # test_name expression expected_val > + reset_trigger > + > + echo "Test hist trigger expressions - $1" > + > + echo "hist:keys=common_pid:x=$2" > events/sched/sched_process_fork/trigger > + echo 'hist:keys=common_pid:vals=$x' >> events/sched/sched_process_fork/trigger > + for i in `seq 1 10` ; do ( echo "forked" > /dev/null); done > + > + actual=`get_hist_var x events/sched/sched_process_fork/hist` > + > + if [ $actual != $3 ]; then > + fail "Failed hist trigger expression evaluation: Expression: $2 Expected: $3, Actual: $actual" > + fi > + > + reset_trigger > +} > + > +check_error() { # test_name command-with-error-pos-by-^ > + reset_trigger > + > + echo "Test hist trigger expressions - $1" > + ftrace_errlog_check 'hist:sched:sched_process_fork' "$2" 'events/sched/sched_process_fork/trigger' > + > + reset_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" > + > +# Division by zero returns -1 > +test_hist_expr "Handles division by zero" "3/0" "-1" > + > +# 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' > + > +exit 0 > -- > 2.33.0.1079.g6e70778dc9-goog > -- Masami Hiramatsu