All of lore.kernel.org
 help / color / mirror / Atom feed
From: Namhyung Kim <namhyung@kernel.org>
To: Arnaldo Carvalho de Melo <acme@kernel.org>, Jiri Olsa <jolsa@kernel.org>
Cc: Ingo Molnar <mingo@kernel.org>,
	Peter Zijlstra <peterz@infradead.org>,
	LKML <linux-kernel@vger.kernel.org>,
	Ian Rogers <irogers@google.com>,
	Adrian Hunter <adrian.hunter@intel.com>,
	linux-perf-users@vger.kernel.org
Subject: [PATCH 4/8] perf test: Wait for a new thread when testing --per-thread record
Date: Thu, 20 Oct 2022 10:26:39 -0700	[thread overview]
Message-ID: <20221020172643.3458767-5-namhyung@kernel.org> (raw)
In-Reply-To: <20221020172643.3458767-1-namhyung@kernel.org>

Just running the target program is not enough to test multi-thread
target because it'd be racy perf vs target startup.  I used the
initial delay but it cannot guarantee for perf to see the thread.

Instead, use wait_for_threads helper from shell/lib/waiting.sh to make
sure it starts the sibling thread first.  Then perf record can use -p
option to profile the target process.

Signed-off-by: Namhyung Kim <namhyung@kernel.org>
---
 tools/perf/tests/shell/record.sh | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/tools/perf/tests/shell/record.sh b/tools/perf/tests/shell/record.sh
index 952981481239..d1640d1daf2e 100755
--- a/tools/perf/tests/shell/record.sh
+++ b/tools/perf/tests/shell/record.sh
@@ -4,6 +4,9 @@
 
 set -e
 
+shelldir=$(dirname "$0")
+. "${shelldir}"/lib/waiting.sh
+
 err=0
 perfdata=$(mktemp /tmp/__perf_test.perf.data.XXXXX)
 testprog=$(mktemp /tmp/__perf_test.prog.XXXXXX)
@@ -96,6 +99,30 @@ test_per_thread() {
     err=1
     return
   fi
+
+  # run the test program in background (forever)
+  ${testprog} 1 &
+  TESTPID=$!
+
+  rm -f "${perfdata}"
+
+  wait_for_threads ${TESTPID} 2
+  perf record -p "${TESTPID}" --per-thread -o "${perfdata}" sleep 1 2> /dev/null
+  kill ${TESTPID}
+
+  if [ ! -e "${perfdata}" ]
+  then
+    echo "Per-thread record [Failed record -p]"
+    err=1
+    return
+  fi
+  if ! perf report -i "${perfdata}" -q | grep -q "${testsym}"
+  then
+    echo "Per-thread record [Failed -p missing output]"
+    err=1
+    return
+  fi
+
   echo "Basic --per-thread mode test [Success]"
 }
 
-- 
2.38.0.135.g90850a2211-goog


  parent reply	other threads:[~2022-10-20 17:27 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-10-20 17:26 [PATCHSET 0/8] perf test: Improve perf record tests (v2) Namhyung Kim
2022-10-20 17:26 ` [PATCH 1/8] perf test: Do not use instructions:u explicitly Namhyung Kim
2022-10-20 23:47   ` Ian Rogers
2022-10-20 17:26 ` [PATCH 2/8] perf test: Fix shellcheck issues in the record test Namhyung Kim
2022-10-20 23:48   ` Ian Rogers
2022-10-21  8:45   ` Adrian Hunter
2022-10-20 17:26 ` [PATCH 3/8] perf test: Use a test program in perf record tests Namhyung Kim
2022-10-20 23:52   ` Ian Rogers
2022-10-24 11:33     ` Arnaldo Carvalho de Melo
2022-10-24 14:00       ` Adrian Hunter
2022-10-24 16:00         ` Arnaldo Carvalho de Melo
2022-10-25  4:12           ` Namhyung Kim
2022-10-25 13:10             ` Arnaldo Carvalho de Melo
2022-10-25 13:17           ` Adrian Hunter
2022-10-25  4:18       ` Namhyung Kim
2022-10-21  8:45   ` Adrian Hunter
2022-10-20 17:26 ` Namhyung Kim [this message]
2022-10-20 23:57   ` [PATCH 4/8] perf test: Wait for a new thread when testing --per-thread record Ian Rogers
2022-10-21  8:45   ` Adrian Hunter
2022-10-20 17:26 ` [PATCH 5/8] perf test: Add system-wide mode in perf record tests Namhyung Kim
2022-10-21  0:00   ` Ian Rogers
2022-10-26 14:11     ` Arnaldo Carvalho de Melo
2022-10-20 17:26 ` [PATCH 6/8] perf test: Add target workload test " Namhyung Kim
2022-10-21  0:01   ` Ian Rogers
2022-10-21  8:45   ` Adrian Hunter
2022-10-20 17:26 ` [PATCH 7/8] perf test: Test record with --threads option Namhyung Kim
2022-10-21  0:02   ` Ian Rogers
2022-10-21  8:45   ` Adrian Hunter
2022-10-20 17:26 ` [PATCH 8/8] perf test: Do not set TEST_SKIP for record subtests Namhyung Kim
2022-10-21  0:05   ` Ian Rogers
2022-10-24 11:34     ` Arnaldo Carvalho de Melo
2022-10-26 14:15 ` [PATCHSET 0/8] perf test: Improve perf record tests (v2) Arnaldo Carvalho de Melo

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=20221020172643.3458767-5-namhyung@kernel.org \
    --to=namhyung@kernel.org \
    --cc=acme@kernel.org \
    --cc=adrian.hunter@intel.com \
    --cc=irogers@google.com \
    --cc=jolsa@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=peterz@infradead.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.