From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Michael Petlan <mpetlan@redhat.com>
Cc: linux-perf-users@vger.kernel.org, vmolnaro@redhat.com,
acme@redhat.com, mhiramat@kernel.org
Subject: Re: [PATCH 1/7] perf testsuite: Add common regex patters
Date: Wed, 31 Jan 2024 10:47:23 -0300 [thread overview]
Message-ID: <ZbpPa1ZjoOdGw9Yd@kernel.org> (raw)
In-Reply-To: <20240131113951.17077-1-mpetlan@redhat.com>
Em Wed, Jan 31, 2024 at 12:39:45PM +0100, Michael Petlan escreveu:
> From: Veronika Molnarova <vmolnaro@redhat.com>
>
> Unify perf regexes for checking testing output into a single file
> to reduce duplicates and prevent errors when editing.
>
> This will be used in upcomming patches in shell tests.
Thanks for working on this!
The cover letter could've said that this is an effort to upstream a
pre-existing test suite that is being used for quite a long time, that
it is available in github, etc :-)
- Arnaldo
> Signed-off-by: Veronika Molnarova <vmolnaro@redhat.com>
> Signed-off-by: Michael Petlan <mpetlan@redhat.com>
> ---
> tools/perf/tests/shell/common/patterns.sh | 256 ++++++++++++++++++++++
> 1 file changed, 256 insertions(+)
> create mode 100644 tools/perf/tests/shell/common/patterns.sh
>
> diff --git a/tools/perf/tests/shell/common/patterns.sh b/tools/perf/tests/shell/common/patterns.sh
> new file mode 100644
> index 000000000000..919a07b8b454
> --- /dev/null
> +++ b/tools/perf/tests/shell/common/patterns.sh
> @@ -0,0 +1,256 @@
> +# SPDX-License-Identifier: GPL-2.0
> +
> +export RE_NUMBER="[0-9\.]+"
> +# Number
> +# Examples:
> +# 123.456
> +
> +
> +export RE_NUMBER_HEX="[0-9A-Fa-f]+"
> +# Hexadecimal number
> +# Examples:
> +# 1234
> +# a58d
> +# aBcD
> +# deadbeef
> +
> +
> +export RE_DATE_YYYYMMDD="[0-9]{4}-(?:(?:01|03|05|07|08|10|12)-(?:[0-2][0-9]|3[0-1])|02-[0-2][0-9]|(?:(?:04|06|09|11)-(?:[0-2][0-9]|30)))"
> +# Date in YYYY-MM-DD form
> +# Examples:
> +# 1990-02-29
> +# 0015-07-31
> +# 2456-12-31
> +#! 2012-13-01
> +#! 1963-09-31
> +
> +
> +export RE_TIME="(?:[0-1][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]"
> +# Time
> +# Examples:
> +# 15:12:27
> +# 23:59:59
> +#! 24:00:00
> +#! 11:25:60
> +#! 17:60:15
> +
> +
> +export RE_DATE_TIME="\w+\s+\w+\s+$RE_NUMBER\s+$RE_TIME\s+$RE_NUMBER"
> +# Time and date
> +# Examples:
> +# Wed Feb 12 10:46:26 2020
> +# Mon Mar 2 13:27:06 2020
> +#! St úno 12 10:57:21 CET 2020
> +#! Po úno 14 15:17:32 2010
> +
> +
> +export RE_ADDRESS="0x$RE_NUMBER_HEX"
> +# Memory address
> +# Examples:
> +# 0x123abc
> +# 0xffffffff9abe8ae8
> +# 0x0
> +
> +
> +export RE_ADDRESS_NOT_NULL="0x[0-9A-Fa-f]*[1-9A-Fa-f]+[0-9A-Fa-f]*"
> +# Memory address (not NULL)
> +# Examples:
> +# 0xffffffff9abe8ae8
> +#! 0x0
> +#! 0x0000000000000000
> +
> +export RE_PROCESS_PID="\w+\/\d+"
> +# A process with PID
> +# Example:
> +# sleep/4102
> +
> +
> +export RE_EVENT_ANY="[\w\-\:\/_=,]+"
> +# Name of any event (universal)
> +# Examples:
> +# cpu-cycles
> +# cpu/event=12,umask=34/
> +# r41e1
> +# nfs:nfs_getattr_enter
> +
> +
> +export RE_EVENT="[\w\-:_]+"
> +# Name of an usual event
> +# Examples:
> +# cpu-cycles
> +
> +
> +export RE_EVENT_RAW="r$RE_NUMBER_HEX"
> +# Specification of a raw event
> +# Examples:
> +# r41e1
> +# r1a
> +
> +
> +export RE_EVENT_CPU="cpu/(\w+=$RE_NUMBER_HEX,?)+/p*"
> +# Specification of a CPU event
> +# Examples:
> +# cpu/event=12,umask=34/pp
> +
> +
> +export RE_EVENT_UNCORE="uncore/[\w_]+/"
> +# Specification of an uncore event
> +# Examples:
> +# uncore/qhl_request_local_reads/
> +
> +
> +export RE_EVENT_SUBSYSTEM="[\w\-]+:[\w\-]+"
> +# Name of an event from subsystem
> +# Examples:
> +# ext4:ext4_ordered_write_end
> +# sched:sched_switch
> +
> +
> +export RE_FILE_NAME="[\w\+\.-]+"
> +# A filename
> +# Examples:
> +# libstdc++.so.6
> +#! some/path
> +
> +
> +export RE_PATH_ABSOLUTE="(?:\/$RE_FILE_NAME)+"
> +# A full filepath
> +# Examples:
> +# /usr/lib64/somelib.so.5.4.0
> +# /lib/modules/4.3.0-rc5/kernel/fs/xfs/xfs.ko
> +# /usr/bin/mv
> +#! some/relative/path
> +#! ./some/relative/path
> +
> +
> +export RE_PATH="(?:$RE_FILE_NAME)?$RE_PATH_ABSOLUTE"
> +# A filepath
> +# Examples:
> +# /usr/lib64/somelib.so.5.4.0
> +# /lib/modules/4.3.0-rc5/kernel/fs/xfs/xfs.ko
> +# ./.emacs
> +# src/fs/file.c
> +
> +
> +export RE_DSO="(?:$RE_PATH_ABSOLUTE(?: \(deleted\))?|\[kernel\.kallsyms\]|\[unknown\]|\[vdso\]|\[kernel\.vmlinux\][\.\w]*)"
> +# A DSO name in various result tables
> +# Examples:
> +# /usr/lib64/somelib.so.5.4.0
> +# /usr/bin/somebinart (deleted)
> +# /lib/modules/4.3.0-rc5/kernel/fs/xfs/xfs.ko
> +# [kernel.kallsyms]
> +# [kernel.vmlinux]
> +# [vdso]
> +# [unknown]
> +
> +
> +export RE_LINE_COMMENT="^#.*"
> +# A comment line
> +# Examples:
> +# # Started on Thu Sep 10 11:43:00 2015
> +
> +
> +export RE_LINE_EMPTY="^\s*$"
> +# An empty line with possible whitespaces
> +# Examples:
> +#
> +
> +
> +export RE_LINE_RECORD1="^\[\s+perf\s+record:\s+Woken up $RE_NUMBER times? to write data\s+\].*$"
> +# The first line of perf-record "OK" output
> +# Examples:
> +# [ perf record: Woken up 1 times to write data ]
> +
> +
> +export RE_LINE_RECORD2="^\[\s+perf\s+record:\s+Captured and wrote $RE_NUMBER\s*MB\s+(?:[\w\+\.-]*(?:$RE_PATH)?\/)?perf\.data(?:\.\d+)?\s*\(~?$RE_NUMBER samples\)\s+\].*$"
> +# The second line of perf-record "OK" output
> +# Examples:
> +# [ perf record: Captured and wrote 0.405 MB perf.data (109 samples) ]
> +# [ perf record: Captured and wrote 0.405 MB perf.data (~109 samples) ]
> +# [ perf record: Captured and wrote 0.405 MB /some/temp/dir/perf.data (109 samples) ]
> +# [ perf record: Captured and wrote 0.405 MB ./perf.data (109 samples) ]
> +# [ perf record: Captured and wrote 0.405 MB ./perf.data.3 (109 samples) ]
> +
> +
> +export RE_LINE_RECORD2_TOLERANT="^\[\s+perf\s+record:\s+Captured and wrote $RE_NUMBER\s*MB\s+(?:[\w\+\.-]*(?:$RE_PATH)?\/)?perf\.data(?:\.\d+)?\s*(?:\(~?$RE_NUMBER samples\))?\s+\].*$"
> +# The second line of perf-record "OK" output, even no samples is OK here
> +# Examples:
> +# [ perf record: Captured and wrote 0.405 MB perf.data (109 samples) ]
> +# [ perf record: Captured and wrote 0.405 MB perf.data (~109 samples) ]
> +# [ perf record: Captured and wrote 0.405 MB /some/temp/dir/perf.data (109 samples) ]
> +# [ perf record: Captured and wrote 0.405 MB ./perf.data (109 samples) ]
> +# [ perf record: Captured and wrote 0.405 MB ./perf.data.3 (109 samples) ]
> +# [ perf record: Captured and wrote 0.405 MB perf.data ]
> +
> +
> +export RE_LINE_RECORD2_TOLERANT_FILENAME="^\[\s+perf\s+record:\s+Captured and wrote $RE_NUMBER\s*MB\s+(?:[\w\+\.-]*(?:$RE_PATH)?\/)?perf\w*\.data(?:\.\d+)?\s*\(~?$RE_NUMBER samples\)\s+\].*$"
> +# The second line of perf-record "OK" output
> +# Examples:
> +# [ perf record: Captured and wrote 0.405 MB perf.data (109 samples) ]
> +# [ perf record: Captured and wrote 0.405 MB perf_ls.data (~109 samples) ]
> +# [ perf record: Captured and wrote 0.405 MB perf_aNyCaSe.data (109 samples) ]
> +# [ perf record: Captured and wrote 0.405 MB ./perfdata.data.3 (109 samples) ]
> +#! [ perf record: Captured and wrote 0.405 MB /some/temp/dir/my_own.data (109 samples) ]
> +#! [ perf record: Captured and wrote 0.405 MB ./UPPERCASE.data (109 samples) ]
> +#! [ perf record: Captured and wrote 0.405 MB ./aNyKiNDoF.data.3 (109 samples) ]
> +#! [ perf record: Captured and wrote 0.405 MB perf.data ]
> +
> +
> +export RE_LINE_TRACE_FULL="^\s*$RE_NUMBER\s*\(\s*$RE_NUMBER\s*ms\s*\):\s*$RE_PROCESS_PID\s+.*\)\s+=\s+\-?$RE_NUMBER|$RE_NUMBER_HEX.*$"
> +# A line of perf-trace output
> +# Examples:
> +# 0.115 ( 0.005 ms): sleep/4102 open(filename: 0xd09e2ab2, flags: CLOEXEC ) = 3
> +# 0.157 ( 0.005 ms): sleep/4102 mmap(len: 3932736, prot: EXEC|READ, flags: PRIVATE|DENYWRITE, fd: 3 ) = 0x7f89d0605000
> +
> +export RE_LINE_TRACE_ONE_PROC="^\s*$RE_NUMBER\s*\(\s*$RE_NUMBER\s*ms\s*\):\s*\w+\(.*\)\s+=\s+(?:\-?$RE_NUMBER)|(?:0x$RE_NUMBER_HEX).*$"
> +# A line of perf-trace output
> +# Examples:
> +# 0.115 ( 0.005 ms): open(filename: 0xd09e2ab2, flags: CLOEXEC ) = 3
> +# 0.157 ( 0.005 ms): mmap(len: 3932736, prot: EXEC|READ, flags: PRIVATE|DENYWRITE, fd: 3 ) = 0x7f89d0605000
> +
> +export RE_LINE_TRACE_CONTINUED="^\s*$RE_NUMBER\s*\(\s*$RE_NUMBER\s*ms\s*\):\s*\.\.\.\s*\[continued\]:\s+\w+\(\).*\s+=\s+(?:\-?$RE_NUMBER)|(?:0x$RE_NUMBER_HEX).*$"
> +# A line of perf-trace output
> +# Examples:
> +# 0.000 ( 0.000 ms): ... [continued]: nanosleep()) = 0
> +# 0.000 ( 0.000 ms): ... [continued]: nanosleep()) = 0x00000000
> +
> +export RE_LINE_TRACE_SUMMARY_HEADER="\s*syscall\s+calls\s+(?:errors\s+)?total\s+min\s+avg\s+max\s+stddev"
> +# A header of a perf-trace summary table
> +# Example:
> +# syscall calls total min avg max stddev
> +# syscall calls errors total min avg max stddev
> +
> +
> +export RE_LINE_TRACE_SUMMARY_CONTENT="^\s*\w+\s+(?:$RE_NUMBER\s+){5,6}$RE_NUMBER%"
> +# A line of a perf-trace summary table
> +# Example:
> +# open 3 0.017 0.005 0.006 0.007 10.90%
> +# openat 2 0 0.017 0.008 0.009 0.010 12.29%
> +
> +
> +export RE_LINE_REPORT_CONTENT="^\s+$RE_NUMBER%\s+\w+\s+\S+\s+\S+\s+\S+" # FIXME
> +# A line from typicap perf report --stdio output
> +# Example:
> +# 100.00% sleep [kernel.vmlinux] [k] syscall_return_slowpath
> +
> +
> +export RE_TASK="\s+[\w~\/ \.\+:#-]+(?:\[-1(?:\/\d+)?\]|\[\d+(?:\/\d+)?\])"
> +# A name of a task used for perf sched timehist -s
> +# Example:
> +# sleep[62755]
> +# runtest.sh[62762]
> +# gmain[705/682]
> +# xfsaild/dm-0[495]
> +# kworker/u8:1-ev[62714]
> +# :-1[-1/62756]
> +# :-1[-1]
> +# :-1[62756]
> +
> +
> +export RE_SEGFAULT=".*(?:Segmentation\sfault|SIGSEGV|\score\s|dumped|segfault).*"
> +# Possible variations of the segfault message
> +# Example:
> +# /bin/bash: line 1: 32 Segmentation fault timeout 15s
> +# Segmentation fault (core dumped)
> +# Program terminated with signal SIGSEGV
> +#! WARNING: 12323431 isn't a 'cpu_core', please use a CPU list in the 'cpu_core' range (0-15)
> --
> 2.43.0
>
--
- Arnaldo
next prev parent reply other threads:[~2024-01-31 13:47 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-01-31 11:39 [PATCH 1/7] perf testsuite: Add common regex patters Michael Petlan
2024-01-31 11:39 ` [PATCH 2/7] perf testsuite: Add common setting for shell tests Michael Petlan
2024-01-31 11:39 ` [PATCH 3/7] perf testsuite: Add initialization script " Michael Petlan
2024-01-31 11:39 ` [PATCH 4/7] perf testsuite: Add test case for perf probe Michael Petlan
2024-01-31 11:39 ` [PATCH 5/7] perf testsuite: Add common output checking helpers Michael Petlan
2024-01-31 11:39 ` [PATCH 6/7] perf testsuite: Add test for kprobe handling Michael Petlan
2024-01-31 11:39 ` [PATCH 7/7] perf testsuite: Install kprobe tests and common files Michael Petlan
2024-01-31 13:47 ` Arnaldo Carvalho de Melo [this message]
2024-01-31 13:53 ` [PATCH 1/7] perf testsuite: Add common regex patters Arnaldo Carvalho de Melo
2024-02-01 23:59 ` Namhyung Kim
2024-02-02 0:05 ` Namhyung Kim
2024-02-08 16:49 ` Michael Petlan
2024-02-09 7:13 ` Namhyung Kim
2024-02-09 22:56 ` Namhyung Kim
2024-02-15 11:02 ` [PATCH v2 0/7] Add perf testsuite into perf-test Michael Petlan
2024-02-15 11:02 ` [PATCH v2 1/7] perf testsuite: Add common regex patters Michael Petlan
2024-02-15 11:02 ` [PATCH v2 2/7] perf testsuite: Add common setting for shell tests Michael Petlan
2024-02-15 11:02 ` [PATCH v2 3/7] perf testsuite: Add initialization script " Michael Petlan
2024-02-15 11:02 ` [PATCH v2 4/7] perf testsuite: Add test case for perf probe Michael Petlan
2024-02-15 11:02 ` [PATCH v2 5/7] perf testsuite: Add common output checking helpers Michael Petlan
2024-02-15 11:02 ` [PATCH v2 6/7] perf testsuite: Add test for kprobe handling Michael Petlan
2024-02-15 11:02 ` [PATCH v2 7/7] perf testsuite: Install kprobe tests and common files Michael Petlan
2024-02-21 1:58 ` [PATCH v2 0/7] Add perf testsuite into perf-test Namhyung Kim
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=ZbpPa1ZjoOdGw9Yd@kernel.org \
--to=acme@kernel.org \
--cc=acme@redhat.com \
--cc=linux-perf-users@vger.kernel.org \
--cc=mhiramat@kernel.org \
--cc=mpetlan@redhat.com \
--cc=vmolnaro@redhat.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).