All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/2] perf test: Add tests/shell/lib/waiting.sh
@ 2022-09-14  8:01 Adrian Hunter
  2022-09-14  8:01 ` [PATCH 1/2] perf test: test_intel_pt.sh: Move helper functions for waiting Adrian Hunter
                   ` (3 more replies)
  0 siblings, 4 replies; 6+ messages in thread
From: Adrian Hunter @ 2022-09-14  8:01 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: Jiri Olsa, Namhyung Kim, Ian Rogers, linux-kernel

Hi

As requested by Namhyung, move functions from test_intel_pt.sh
to tests/shell/lib/waiting.sh, and parameterize timeouts.


Adrian Hunter (2):
      perf test: test_intel_pt.sh: Move helper functions for waiting
      perf test: waiting.sh: Parameterize timeouts

 tools/perf/tests/shell/lib/waiting.sh   | 77 +++++++++++++++++++++++++++++++++
 tools/perf/tests/shell/test_intel_pt.sh | 68 ++---------------------------
 2 files changed, 81 insertions(+), 64 deletions(-)
 create mode 100644 tools/perf/tests/shell/lib/waiting.sh


Regards
Adrian

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH 1/2] perf test: test_intel_pt.sh: Move helper functions for waiting
  2022-09-14  8:01 [PATCH 0/2] perf test: Add tests/shell/lib/waiting.sh Adrian Hunter
@ 2022-09-14  8:01 ` Adrian Hunter
  2022-09-14  8:01 ` [PATCH 2/2] perf test: waiting.sh: Parameterize timeouts Adrian Hunter
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 6+ messages in thread
From: Adrian Hunter @ 2022-09-14  8:01 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: Jiri Olsa, Namhyung Kim, Ian Rogers, linux-kernel

Move helper functions for waiting to a separate file so they can be
shared.

Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
---
 tools/perf/tests/shell/lib/waiting.sh   | 69 +++++++++++++++++++++++++
 tools/perf/tests/shell/test_intel_pt.sh | 68 ++----------------------
 2 files changed, 73 insertions(+), 64 deletions(-)
 create mode 100644 tools/perf/tests/shell/lib/waiting.sh

diff --git a/tools/perf/tests/shell/lib/waiting.sh b/tools/perf/tests/shell/lib/waiting.sh
new file mode 100644
index 000000000000..dbd5bd90105e
--- /dev/null
+++ b/tools/perf/tests/shell/lib/waiting.sh
@@ -0,0 +1,69 @@
+# SPDX-License-Identifier: GPL-2.0
+
+tenths=date\ +%s%1N
+
+# Wait for PID $1 to have $2 number of threads started
+wait_for_threads()
+{
+	start_time=$($tenths)
+	while [ -e "/proc/$1/task" ] ; do
+		th_cnt=$(find "/proc/$1/task" -mindepth 1 -maxdepth 1 -printf x | wc -c)
+		if [ "${th_cnt}" -ge "$2" ] ; then
+			return 0
+		fi
+		# Wait at most 5 seconds
+		if [ $(($($tenths) - start_time)) -ge 50 ] ; then
+			echo "PID $1 does not have $2 threads"
+			return 1
+		fi
+	done
+	return 1
+}
+
+# Wait for perf record -vvv 2>$2 with PID $1 to start by looking at file $2
+# It depends on capturing perf record debug message "perf record has started"
+wait_for_perf_to_start()
+{
+	echo "Waiting for \"perf record has started\" message"
+	start_time=$($tenths)
+	while [ -e "/proc/$1" ] ; do
+		if grep -q "perf record has started" "$2" ; then
+			echo OK
+			break
+		fi
+		# Wait at most 5 seconds
+		if [ $(($($tenths) - start_time)) -ge 50 ] ; then
+			echo "perf recording did not start"
+			return 1
+		fi
+	done
+	return 0
+}
+
+# Wait for process PID %1 to exit
+wait_for_process_to_exit()
+{
+	start_time=$($tenths)
+	while [ -e "/proc/$1" ] ; do
+		# Wait at most 5 seconds
+		if [ $(($($tenths) - start_time)) -ge 50 ] ; then
+			echo "PID $1 did not exit as expected"
+			return 1
+		fi
+	done
+	return 0
+}
+
+# Check if PID $1 is still running after 0.3 seconds
+is_running()
+{
+	start_time=$($tenths)
+	while [ -e "/proc/$1" ] ; do
+		# Check for at least 0.3s
+		if [ $(($($tenths) - start_time)) -gt 3 ] ; then
+			return 0
+		fi
+	done
+	echo "PID $1 exited prematurely"
+	return 1
+}
diff --git a/tools/perf/tests/shell/test_intel_pt.sh b/tools/perf/tests/shell/test_intel_pt.sh
index 051d088c1b74..efaad9566c34 100755
--- a/tools/perf/tests/shell/test_intel_pt.sh
+++ b/tools/perf/tests/shell/test_intel_pt.sh
@@ -4,11 +4,12 @@
 
 set -e
 
-tenths=date\ +%s%1N
-
 # Skip if no Intel PT
 perf list | grep -q 'intel_pt//' || exit 2
 
+shelldir=$(dirname "$0")
+. "${shelldir}"/lib/waiting.sh
+
 skip_cnt=0
 ok_cnt=0
 err_cnt=0
@@ -112,67 +113,6 @@ can_kernel()
 	return 0
 }
 
-wait_for_threads()
-{
-	start_time=$($tenths)
-	while [ -e "/proc/$1/task" ] ; do
-		th_cnt=$(find "/proc/$1/task" -mindepth 1 -maxdepth 1 -printf x | wc -c)
-		if [ "${th_cnt}" -ge "$2" ] ; then
-			return 0
-		fi
-		# Wait at most 5 seconds
-		if [ $(($($tenths) - start_time)) -ge 50 ] ; then
-			echo "PID $1 does not have $2 threads"
-			return 1
-		fi
-	done
-	return 1
-}
-
-wait_for_perf_to_start()
-{
-	echo "Waiting for \"perf record has started\" message"
-	start_time=$($tenths)
-	while [ -e "/proc/$1" ] ; do
-		if grep -q "perf record has started" "${errfile}" ; then
-			echo OK
-			break
-		fi
-		# Wait at most 5 seconds
-		if [ $(($($tenths) - start_time)) -ge 50 ] ; then
-			echo "perf recording did not start"
-			return 1
-		fi
-	done
-	return 0
-}
-
-wait_for_process_to_exit()
-{
-	start_time=$($tenths)
-	while [ -e "/proc/$1" ] ; do
-		# Wait at most 5 seconds
-		if [ $(($($tenths) - start_time)) -ge 50 ] ; then
-			echo "PID $1 did not exit as expected"
-			return 1
-		fi
-	done
-	return 0
-}
-
-is_running()
-{
-	start_time=$($tenths)
-	while [ -e "/proc/$1" ] ; do
-		# Check for at least 0.3s
-		if [ $(($($tenths) - start_time)) -gt 3 ] ; then
-			return 0
-		fi
-	done
-	echo "PID $1 exited prematurely"
-	return 1
-}
-
 test_per_thread()
 {
 	k="$1"
@@ -298,7 +238,7 @@ test_per_thread()
 	perf record -B -N --no-bpf-event -o "${perfdatafile}" -e intel_pt//u"${k}" -vvv --per-thread -p "${w1},${w2}" 2>"${errfile}" >"${outfile}" &
 	ppid=$!
 	echo "perf PID is $ppid"
-	wait_for_perf_to_start ${ppid} || return 1
+	wait_for_perf_to_start ${ppid} "${errfile}" || return 1
 
 	kill ${w1}
 	wait_for_process_to_exit ${w1} || return 1
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 2/2] perf test: waiting.sh: Parameterize timeouts
  2022-09-14  8:01 [PATCH 0/2] perf test: Add tests/shell/lib/waiting.sh Adrian Hunter
  2022-09-14  8:01 ` [PATCH 1/2] perf test: test_intel_pt.sh: Move helper functions for waiting Adrian Hunter
@ 2022-09-14  8:01 ` Adrian Hunter
  2022-09-14  8:09 ` [PATCH 0/2] perf test: Add tests/shell/lib/waiting.sh Adrian Hunter
  2022-09-14 16:41 ` Namhyung Kim
  3 siblings, 0 replies; 6+ messages in thread
From: Adrian Hunter @ 2022-09-14  8:01 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: Jiri Olsa, Namhyung Kim, Ian Rogers, linux-kernel

Let helper functions accept a parameter to specify time out values in
tenths of a second.

Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
---
 tools/perf/tests/shell/lib/waiting.sh | 26 +++++++++++++++++---------
 1 file changed, 17 insertions(+), 9 deletions(-)

diff --git a/tools/perf/tests/shell/lib/waiting.sh b/tools/perf/tests/shell/lib/waiting.sh
index dbd5bd90105e..e7a39134a68e 100644
--- a/tools/perf/tests/shell/lib/waiting.sh
+++ b/tools/perf/tests/shell/lib/waiting.sh
@@ -3,16 +3,18 @@
 tenths=date\ +%s%1N
 
 # Wait for PID $1 to have $2 number of threads started
+# Time out after $3 tenths of a second or 5 seconds if $3 is ""
 wait_for_threads()
 {
+	tm_out=$3 ; [ -n "${tm_out}" ] || tm_out=50
 	start_time=$($tenths)
 	while [ -e "/proc/$1/task" ] ; do
 		th_cnt=$(find "/proc/$1/task" -mindepth 1 -maxdepth 1 -printf x | wc -c)
 		if [ "${th_cnt}" -ge "$2" ] ; then
 			return 0
 		fi
-		# Wait at most 5 seconds
-		if [ $(($($tenths) - start_time)) -ge 50 ] ; then
+		# Wait at most tm_out tenths of a second
+		if [ $(($($tenths) - start_time)) -ge $tm_out ] ; then
 			echo "PID $1 does not have $2 threads"
 			return 1
 		fi
@@ -22,8 +24,10 @@ wait_for_threads()
 
 # Wait for perf record -vvv 2>$2 with PID $1 to start by looking at file $2
 # It depends on capturing perf record debug message "perf record has started"
+# Time out after $3 tenths of a second or 5 seconds if $3 is ""
 wait_for_perf_to_start()
 {
+	tm_out=$3 ; [ -n "${tm_out}" ] || tm_out=50
 	echo "Waiting for \"perf record has started\" message"
 	start_time=$($tenths)
 	while [ -e "/proc/$1" ] ; do
@@ -31,8 +35,8 @@ wait_for_perf_to_start()
 			echo OK
 			break
 		fi
-		# Wait at most 5 seconds
-		if [ $(($($tenths) - start_time)) -ge 50 ] ; then
+		# Wait at most tm_out tenths of a second
+		if [ $(($($tenths) - start_time)) -ge $tm_out ] ; then
 			echo "perf recording did not start"
 			return 1
 		fi
@@ -41,12 +45,14 @@ wait_for_perf_to_start()
 }
 
 # Wait for process PID %1 to exit
+# Time out after $2 tenths of a second or 5 seconds if $2 is ""
 wait_for_process_to_exit()
 {
+	tm_out=$2 ; [ -n "${tm_out}" ] || tm_out=50
 	start_time=$($tenths)
 	while [ -e "/proc/$1" ] ; do
-		# Wait at most 5 seconds
-		if [ $(($($tenths) - start_time)) -ge 50 ] ; then
+		# Wait at most tm_out tenths of a second
+		if [ $(($($tenths) - start_time)) -ge $tm_out ] ; then
 			echo "PID $1 did not exit as expected"
 			return 1
 		fi
@@ -54,13 +60,15 @@ wait_for_process_to_exit()
 	return 0
 }
 
-# Check if PID $1 is still running after 0.3 seconds
+# Check if PID $1 is still running after $2 tenths of a second
+# or 0.3 seconds if $2 is ""
 is_running()
 {
+	tm_out=$2 ; [ -n "${tm_out}" ] || tm_out=3
 	start_time=$($tenths)
 	while [ -e "/proc/$1" ] ; do
-		# Check for at least 0.3s
-		if [ $(($($tenths) - start_time)) -gt 3 ] ; then
+		# Check for at least tm_out tenths of a second
+		if [ $(($($tenths) - start_time)) -gt $tm_out ] ; then
 			return 0
 		fi
 	done
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH 0/2] perf test: Add tests/shell/lib/waiting.sh
  2022-09-14  8:01 [PATCH 0/2] perf test: Add tests/shell/lib/waiting.sh Adrian Hunter
  2022-09-14  8:01 ` [PATCH 1/2] perf test: test_intel_pt.sh: Move helper functions for waiting Adrian Hunter
  2022-09-14  8:01 ` [PATCH 2/2] perf test: waiting.sh: Parameterize timeouts Adrian Hunter
@ 2022-09-14  8:09 ` Adrian Hunter
  2022-09-14 16:41 ` Namhyung Kim
  3 siblings, 0 replies; 6+ messages in thread
From: Adrian Hunter @ 2022-09-14  8:09 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: Jiri Olsa, Namhyung Kim, Ian Rogers, linux-kernel,
	linux-perf-users

On 14/09/22 11:01, Adrian Hunter wrote:
> Hi
> 
> As requested by Namhyung, move functions from test_intel_pt.sh
> to tests/shell/lib/waiting.sh, and parameterize timeouts.

This is on top of series "perf test: test_intel_pt.sh: Add per-thread test"

	https://lore.kernel.org/lkml/20220912083412.7058-1-adrian.hunter@intel.com/

For Namhyung's comments refer also:

	https://lore.kernel.org/lkml/CAM9d7ci3JKNaLDMo6patFHZbLSm-r1UmOmZtrwCX8Gu0nsPMBA@mail.gmail.com/
	https://lore.kernel.org/lkml/CAM9d7ciRCnpNjOfoEbO27pNk28ddjg1vVdgrZtvWQ-mbD7jg0w@mail.gmail.com/

> 
> 
> Adrian Hunter (2):
>       perf test: test_intel_pt.sh: Move helper functions for waiting
>       perf test: waiting.sh: Parameterize timeouts
> 
>  tools/perf/tests/shell/lib/waiting.sh   | 77 +++++++++++++++++++++++++++++++++
>  tools/perf/tests/shell/test_intel_pt.sh | 68 ++---------------------------
>  2 files changed, 81 insertions(+), 64 deletions(-)
>  create mode 100644 tools/perf/tests/shell/lib/waiting.sh
> 
> 
> Regards
> Adrian


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 0/2] perf test: Add tests/shell/lib/waiting.sh
  2022-09-14  8:01 [PATCH 0/2] perf test: Add tests/shell/lib/waiting.sh Adrian Hunter
                   ` (2 preceding siblings ...)
  2022-09-14  8:09 ` [PATCH 0/2] perf test: Add tests/shell/lib/waiting.sh Adrian Hunter
@ 2022-09-14 16:41 ` Namhyung Kim
  2022-09-26 19:36   ` Arnaldo Carvalho de Melo
  3 siblings, 1 reply; 6+ messages in thread
From: Namhyung Kim @ 2022-09-14 16:41 UTC (permalink / raw)
  To: Adrian Hunter
  Cc: Arnaldo Carvalho de Melo, Jiri Olsa, Ian Rogers, linux-kernel

On Wed, Sep 14, 2022 at 1:02 AM Adrian Hunter <adrian.hunter@intel.com> wrote:
>
> Hi
>
> As requested by Namhyung, move functions from test_intel_pt.sh
> to tests/shell/lib/waiting.sh, and parameterize timeouts.
>
>
> Adrian Hunter (2):
>       perf test: test_intel_pt.sh: Move helper functions for waiting
>       perf test: waiting.sh: Parameterize timeouts

Acked-by: Namhyung Kim <namhyung@kernel.org>

Thanks,
Namhyung


>
>  tools/perf/tests/shell/lib/waiting.sh   | 77 +++++++++++++++++++++++++++++++++
>  tools/perf/tests/shell/test_intel_pt.sh | 68 ++---------------------------
>  2 files changed, 81 insertions(+), 64 deletions(-)
>  create mode 100644 tools/perf/tests/shell/lib/waiting.sh
>
>
> Regards
> Adrian

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 0/2] perf test: Add tests/shell/lib/waiting.sh
  2022-09-14 16:41 ` Namhyung Kim
@ 2022-09-26 19:36   ` Arnaldo Carvalho de Melo
  0 siblings, 0 replies; 6+ messages in thread
From: Arnaldo Carvalho de Melo @ 2022-09-26 19:36 UTC (permalink / raw)
  To: Namhyung Kim; +Cc: Adrian Hunter, Jiri Olsa, Ian Rogers, linux-kernel

Em Wed, Sep 14, 2022 at 09:41:09AM -0700, Namhyung Kim escreveu:
> On Wed, Sep 14, 2022 at 1:02 AM Adrian Hunter <adrian.hunter@intel.com> wrote:
> >
> > Hi
> >
> > As requested by Namhyung, move functions from test_intel_pt.sh
> > to tests/shell/lib/waiting.sh, and parameterize timeouts.
> >
> >
> > Adrian Hunter (2):
> >       perf test: test_intel_pt.sh: Move helper functions for waiting
> >       perf test: waiting.sh: Parameterize timeouts
> 
> Acked-by: Namhyung Kim <namhyung@kernel.org>

Thanks, applied.

- Arnaldo

 
> Thanks,
> Namhyung
> 
> 
> >
> >  tools/perf/tests/shell/lib/waiting.sh   | 77 +++++++++++++++++++++++++++++++++
> >  tools/perf/tests/shell/test_intel_pt.sh | 68 ++---------------------------
> >  2 files changed, 81 insertions(+), 64 deletions(-)
> >  create mode 100644 tools/perf/tests/shell/lib/waiting.sh
> >
> >
> > Regards
> > Adrian

-- 

- Arnaldo

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2022-09-26 19:36 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-09-14  8:01 [PATCH 0/2] perf test: Add tests/shell/lib/waiting.sh Adrian Hunter
2022-09-14  8:01 ` [PATCH 1/2] perf test: test_intel_pt.sh: Move helper functions for waiting Adrian Hunter
2022-09-14  8:01 ` [PATCH 2/2] perf test: waiting.sh: Parameterize timeouts Adrian Hunter
2022-09-14  8:09 ` [PATCH 0/2] perf test: Add tests/shell/lib/waiting.sh Adrian Hunter
2022-09-14 16:41 ` Namhyung Kim
2022-09-26 19:36   ` Arnaldo Carvalho de Melo

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.