RE: [PATCH 3/3] selftests/ftrace: Use /bin/echo instead of built-in echo

2020-05-11 Thread David Laight
From: Masami Hiramatsu
> Sent: 11 May 2020 10:28
...
> > We may not avoid fixing related failures after your change:
> > 1) We have to reuse built-in echo (do alias echo=echo) if we want to
> > test common_pid for histogram.
> > 2) We have to reuse built-in echo if some new tests want to interpret
> > backslash escapes in future.
> 
> 1) yes, that's what I need to do for avoiding "pid" key histogram
>   (but I think we should have better way to test it)
> 2) No, in that case you should use "/bin/echo -e" explicitly.
>dash's built-in echo doesn't support it.
> 
> > Is it simple to provide two implementations of echo?(built-in echo and
> > echo command?) and then just apply echo command for kprobe_syntax_errors.tc?
> 
> Hmm, OK, there might be another reason we reconsider this patch.
> 
> - Alisasing echo (this patch) can avoid dash related issues but
>   this also makes "echo" running in another process implicitly.
> 
> - Using /bin/echo for backslash explicitly will be missed unless
>   user runs it on dash, but it will keep "echo" in same process.

Why not change to use printf - probably a builtin in both shells?

David

-
Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, 
UK
Registration No: 1397386 (Wales)



Re: [PATCH 3/3] selftests/ftrace: Use /bin/echo instead of built-in echo

2020-05-11 Thread Masami Hiramatsu
On Mon, 11 May 2020 15:22:25 +0800
Xiao Yang  wrote:

> On 2020/5/7 17:15, Masami Hiramatsu wrote:
> > On Thu, 7 May 2020 14:45:16 +0800
> > Xiao Yang  wrote:
> >
> >> On 2020/5/1 21:38, Masami Hiramatsu wrote:
> >>> Since the built-in echo has different behavior in POSIX shell
> >>> (dash) and bash, we forcibly use /bin/echo -E (not interpret
> >>> backslash escapes) by default.
> >>>
> >>> This also fixes some test cases which expects built-in
> >>> echo command.
> >>>
> >>> Reported-by: Liu Yiding
> >>> Signed-off-by: Masami Hiramatsu
> >>> ---
> >>>tools/testing/selftests/ftrace/test.d/functions|3 +++
> >>>.../test.d/trigger/trigger-trace-marker-hist.tc|2 +-
> >>>.../trigger-trace-marker-synthetic-kernel.tc   |4 
> >>>.../trigger/trigger-trace-marker-synthetic.tc  |4 ++--
> >>>4 files changed, 10 insertions(+), 3 deletions(-)
> >>>
> >>> diff --git a/tools/testing/selftests/ftrace/test.d/functions 
> >>> b/tools/testing/selftests/ftrace/test.d/functions
> >>> index 5d4550591ff9..ea59b6ea2c3e 100644
> >>> --- a/tools/testing/selftests/ftrace/test.d/functions
> >>> +++ b/tools/testing/selftests/ftrace/test.d/functions
> >>> @@ -1,3 +1,6 @@
> >>> +# Since the built-in echo has different behavior in POSIX shell (dash) 
> >>> and
> >>> +# bash, we forcibly use /bin/echo -E (not interpret backslash escapes).
> >>> +alias echo="/bin/echo -E"
> >> Hi Masami, Steven
> >>
> >> It seems that only kprobe_syntax_errors.tc is impacted by the issue
> >> currently.  Is it necessary for all tests to use /bin/echo and could we
> >> just make kprobe_syntax_errors.tc use /bin/echo?
> >
> > Yes, I would like to unify the "echo"'s behavior among the testcases
> > instead of patching each failure in the future.
> > Or would you have any concern on it?
> Hi Masami,
> 
> Very sorry for the late reply.
> 
> We may not avoid fixing related failures after your change:
> 1) We have to reuse built-in echo (do alias echo=echo) if we want to 
> test common_pid for histogram.
> 2) We have to reuse built-in echo if some new tests want to interpret 
> backslash escapes in future.

1) yes, that's what I need to do for avoiding "pid" key histogram
  (but I think we should have better way to test it)
2) No, in that case you should use "/bin/echo -e" explicitly.
   dash's built-in echo doesn't support it.

> Is it simple to provide two implementations of echo?(built-in echo and 
> echo command?) and then just apply echo command for kprobe_syntax_errors.tc?

Hmm, OK, there might be another reason we reconsider this patch.

- Alisasing echo (this patch) can avoid dash related issues but
  this also makes "echo" running in another process implicitly.

- Using /bin/echo for backslash explicitly will be missed unless
  user runs it on dash, but it will keep "echo" in same process.

So both have pros/cons, but your idea will be locally effected.
OK, I'll retry it.

Thank you,

-- 
Masami Hiramatsu 


Re: [PATCH 3/3] selftests/ftrace: Use /bin/echo instead of built-in echo

2020-05-11 Thread Xiao Yang

On 2020/5/7 17:15, Masami Hiramatsu wrote:

On Thu, 7 May 2020 14:45:16 +0800
Xiao Yang  wrote:


On 2020/5/1 21:38, Masami Hiramatsu wrote:

Since the built-in echo has different behavior in POSIX shell
(dash) and bash, we forcibly use /bin/echo -E (not interpret
backslash escapes) by default.

This also fixes some test cases which expects built-in
echo command.

Reported-by: Liu Yiding
Signed-off-by: Masami Hiramatsu
---
   tools/testing/selftests/ftrace/test.d/functions|3 +++
   .../test.d/trigger/trigger-trace-marker-hist.tc|2 +-
   .../trigger-trace-marker-synthetic-kernel.tc   |4 
   .../trigger/trigger-trace-marker-synthetic.tc  |4 ++--
   4 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/tools/testing/selftests/ftrace/test.d/functions 
b/tools/testing/selftests/ftrace/test.d/functions
index 5d4550591ff9..ea59b6ea2c3e 100644
--- a/tools/testing/selftests/ftrace/test.d/functions
+++ b/tools/testing/selftests/ftrace/test.d/functions
@@ -1,3 +1,6 @@
+# Since the built-in echo has different behavior in POSIX shell (dash) and
+# bash, we forcibly use /bin/echo -E (not interpret backslash escapes).
+alias echo="/bin/echo -E"

Hi Masami, Steven

It seems that only kprobe_syntax_errors.tc is impacted by the issue
currently.  Is it necessary for all tests to use /bin/echo and could we
just make kprobe_syntax_errors.tc use /bin/echo?


Yes, I would like to unify the "echo"'s behavior among the testcases
instead of patching each failure in the future.
Or would you have any concern on it?

Hi Masami,

Very sorry for the late reply.

We may not avoid fixing related failures after your change:
1) We have to reuse built-in echo (do alias echo=echo) if we want to 
test common_pid for histogram.
2) We have to reuse built-in echo if some new tests want to interpret 
backslash escapes in future.


Is it simple to provide two implementations of echo?(built-in echo and 
echo command?) and then just apply echo command for kprobe_syntax_errors.tc?


BTW: My suggestion may not be correct.

Best Regards,
Xiao Yang


Thank you,



Best Regards,
Xiao Yang



   clear_trace() { # reset trace output
   echo>   trace
diff --git 
a/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-hist.tc 
b/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-hist.tc
index ab6bedb25736..b3f70f53ee69 100644
--- a/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-hist.tc
+++ b/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-hist.tc
@@ -30,7 +30,7 @@ fi

   echo "Test histogram trace_marker tigger"

-echo 'hist:keys=common_pid'>   events/ftrace/print/trigger
+echo 'hist:keys=ip'>   events/ftrace/print/trigger
   for i in `seq 1 10` ; do echo "hello">   trace_marker; done
   grep 'hitcount: *10$' events/ftrace/print/hist>   /dev/null || \
   fail "hist trigger did not trigger correct times on trace_marker"
diff --git 
a/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-synthetic-kernel.tc
 
b/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-synthetic-kernel.tc
index 18b4d1c2807e..c1625d945f4d 100644
--- 
a/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-synthetic-kernel.tc
+++ 
b/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-synthetic-kernel.tc
@@ -44,6 +44,10 @@ echo 'latency u64 lat'>   synthetic_events
   echo 'hist:keys=pid:ts0=common_timestamp.usecs'>   
events/sched/sched_waking/trigger
   echo 
'hist:keys=common_pid:lat=common_timestamp.usecs-$ts0:onmatch(sched.sched_waking).latency($lat)'>
   events/ftrace/print/trigger
   echo 'hist:keys=common_pid,lat:sort=lat'>   events/synthetic/latency/trigger
+
+# We have to use the built-in echo here because waking up pid must be same
+# as echoing pid.
+alias echo=echo
   sleep 1
   echo "hello">   trace_marker

diff --git 
a/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-synthetic.tc
 
b/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-synthetic.tc
index dd262d6d0db6..23e52c8d71de 100644
--- 
a/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-synthetic.tc
+++ 
b/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-synthetic.tc
@@ -36,8 +36,8 @@ fi
   echo "Test histogram trace_marker to trace_marker latency histogram trigger"

   echo 'latency u64 lat'>   synthetic_events
-echo 'hist:keys=common_pid:ts0=common_timestamp.usecs if buf == "start"'>   
events/ftrace/print/trigger
-echo 'hist:keys=common_pid:lat=common_timestamp.usecs-$ts0:onmatch(ftrace.print).latency($lat) 
if buf == "end"'>>   events/ftrace/print/trigger
+echo 'hist:keys=ip:ts0=common_timestamp.usecs if buf == "start"'>   
events/ftrace/print/trigger
+echo 'hist:keys=ip:lat=common_timestamp.usecs-$ts0:onmatch(ftrace.print).latency($lat) if buf 
== "end"'>>   events/ftrace/print/trigger
   echo 'hist:keys=common_pid,lat:sort=lat'>   events/synthetic/latency/trigger
   

Re: [PATCH 3/3] selftests/ftrace: Use /bin/echo instead of built-in echo

2020-05-08 Thread Masami Hiramatsu
On Thu, 7 May 2020 15:32:46 -0500
"Zanussi, Tom"  wrote:

> Hi,
> 
> On 5/7/2020 12:25 PM, Steven Rostedt wrote:
> > On Fri, 8 May 2020 00:50:28 +0900
> > Masami Hiramatsu  wrote:
> > 
>  Yes, I need Tom's review for this change. As far as I can test, this
>  fixes the test failure. If this isn't acceptable, we can use "alias 
>  echo=echo"
>  for this test case.
> 
> >>>
> >>> I still don't see how changing "keys=common_pid" to "keys=ip" has anything
> >>> to do with the echo patch. If that is a problem, it should be a different
> >>> patch with explanation to why "keys=common_pid" is broken.
> >>
> >> This test case uses a trace_marker event to make a histogram with
> >> the common_pid key, and it expects the "echo" command is built-in command
> >> so that the pid is same while writing several events to trace_marker.
> >> I changed it to "ip" which is always same if trace_marker interface is
> >> used.
> > 
> > Can you explicitly state that in your change log? It wasn't obvious from
> > what you meant with:
> > 
> > "This also fixes some test cases which expects built-in echo command."

OK, will add the description.

> > 
> 
> With that change,
> 
> Reviewed-by: Tom Zanussi 

Thanks Tom!

> 
> Thanks,
> 
> Tom
> 
> > Thanks!
> > 
> > -- Steve
> > 


-- 
Masami Hiramatsu 


Re: [PATCH 3/3] selftests/ftrace: Use /bin/echo instead of built-in echo

2020-05-07 Thread Zanussi, Tom

Hi,

On 5/7/2020 12:25 PM, Steven Rostedt wrote:

On Fri, 8 May 2020 00:50:28 +0900
Masami Hiramatsu  wrote:


Yes, I need Tom's review for this change. As far as I can test, this
fixes the test failure. If this isn't acceptable, we can use "alias echo=echo"
for this test case.
   


I still don't see how changing "keys=common_pid" to "keys=ip" has anything
to do with the echo patch. If that is a problem, it should be a different
patch with explanation to why "keys=common_pid" is broken.


This test case uses a trace_marker event to make a histogram with
the common_pid key, and it expects the "echo" command is built-in command
so that the pid is same while writing several events to trace_marker.
I changed it to "ip" which is always same if trace_marker interface is
used.


Can you explicitly state that in your change log? It wasn't obvious from
what you meant with:

"This also fixes some test cases which expects built-in echo command."



With that change,

Reviewed-by: Tom Zanussi 

Thanks,

Tom


Thanks!

-- Steve



Re: [PATCH 3/3] selftests/ftrace: Use /bin/echo instead of built-in echo

2020-05-07 Thread Steven Rostedt
On Fri, 8 May 2020 00:50:28 +0900
Masami Hiramatsu  wrote:

> > > Yes, I need Tom's review for this change. As far as I can test, this
> > > fixes the test failure. If this isn't acceptable, we can use "alias 
> > > echo=echo"
> > > for this test case.
> > >   
> > 
> > I still don't see how changing "keys=common_pid" to "keys=ip" has anything
> > to do with the echo patch. If that is a problem, it should be a different
> > patch with explanation to why "keys=common_pid" is broken.  
> 
> This test case uses a trace_marker event to make a histogram with
> the common_pid key, and it expects the "echo" command is built-in command
> so that the pid is same while writing several events to trace_marker.
> I changed it to "ip" which is always same if trace_marker interface is
> used.

Can you explicitly state that in your change log? It wasn't obvious from
what you meant with:

"This also fixes some test cases which expects built-in echo command."

Thanks!

-- Steve


Re: [PATCH 3/3] selftests/ftrace: Use /bin/echo instead of built-in echo

2020-05-07 Thread Masami Hiramatsu
On Thu, 07 May 2020 11:22:28 +0200
Andreas Schwab  wrote:

> On Mai 01 2020, Masami Hiramatsu wrote:
> 
> > Since the built-in echo has different behavior in POSIX shell
> > (dash) and bash, we forcibly use /bin/echo -E (not interpret
> > backslash escapes) by default.
> 
> How about using printf instead (at least where it matters)?

Hmm, I think replacing all echos with printf in the testcase might be
much harder than this...

Thank you,

-- 
Masami Hiramatsu 


Re: [PATCH 3/3] selftests/ftrace: Use /bin/echo instead of built-in echo

2020-05-07 Thread Masami Hiramatsu
On Thu, 7 May 2020 09:12:07 -0400
Steven Rostedt  wrote:

> On Sat, 2 May 2020 12:08:42 +0900
> Masami Hiramatsu  wrote:
> 
> > > > diff --git 
> > > > a/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-hist.tc
> > > >  
> > > > b/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-hist.tc
> > > > index ab6bedb25736..b3f70f53ee69 100644
> > > > --- 
> > > > a/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-hist.tc
> > > > +++ 
> > > > b/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-hist.tc
> > > > @@ -30,7 +30,7 @@ fi
> > > >  
> > > >  echo "Test histogram trace_marker tigger"
> > > >  
> > > > -echo 'hist:keys=common_pid' > events/ftrace/print/trigger
> > > > +echo 'hist:keys=ip' > events/ftrace/print/trigger  
> > > 
> > > This is doing more than just changing the echo being used. It's changing
> > > the test being done.  
> > 
> > Yes, I need Tom's review for this change. As far as I can test, this
> > fixes the test failure. If this isn't acceptable, we can use "alias 
> > echo=echo"
> > for this test case.
> > 
> 
> I still don't see how changing "keys=common_pid" to "keys=ip" has anything
> to do with the echo patch. If that is a problem, it should be a different
> patch with explanation to why "keys=common_pid" is broken.

This test case uses a trace_marker event to make a histogram with
the common_pid key, and it expects the "echo" command is built-in command
so that the pid is same while writing several events to trace_marker.
I changed it to "ip" which is always same if trace_marker interface is
used.

Thank you,

> 
> -- Steve
> 


-- 
Masami Hiramatsu 


Re: [PATCH 3/3] selftests/ftrace: Use /bin/echo instead of built-in echo

2020-05-07 Thread Steven Rostedt
On Sat, 2 May 2020 12:08:42 +0900
Masami Hiramatsu  wrote:

> > > diff --git 
> > > a/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-hist.tc
> > >  
> > > b/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-hist.tc
> > > index ab6bedb25736..b3f70f53ee69 100644
> > > --- 
> > > a/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-hist.tc
> > > +++ 
> > > b/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-hist.tc
> > > @@ -30,7 +30,7 @@ fi
> > >  
> > >  echo "Test histogram trace_marker tigger"
> > >  
> > > -echo 'hist:keys=common_pid' > events/ftrace/print/trigger
> > > +echo 'hist:keys=ip' > events/ftrace/print/trigger  
> > 
> > This is doing more than just changing the echo being used. It's changing
> > the test being done.  
> 
> Yes, I need Tom's review for this change. As far as I can test, this
> fixes the test failure. If this isn't acceptable, we can use "alias echo=echo"
> for this test case.
> 

I still don't see how changing "keys=common_pid" to "keys=ip" has anything
to do with the echo patch. If that is a problem, it should be a different
patch with explanation to why "keys=common_pid" is broken.

-- Steve



Re: [PATCH 3/3] selftests/ftrace: Use /bin/echo instead of built-in echo

2020-05-07 Thread Andreas Schwab
On Mai 01 2020, Masami Hiramatsu wrote:

> Since the built-in echo has different behavior in POSIX shell
> (dash) and bash, we forcibly use /bin/echo -E (not interpret
> backslash escapes) by default.

How about using printf instead (at least where it matters)?

Andreas.

-- 
Andreas Schwab, sch...@linux-m68k.org
GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510  2552 DF73 E780 A9DA AEC1
"And now for something completely different."


Re: [PATCH 3/3] selftests/ftrace: Use /bin/echo instead of built-in echo

2020-05-07 Thread Masami Hiramatsu
On Thu, 7 May 2020 14:45:16 +0800
Xiao Yang  wrote:

> On 2020/5/1 21:38, Masami Hiramatsu wrote:
> > Since the built-in echo has different behavior in POSIX shell
> > (dash) and bash, we forcibly use /bin/echo -E (not interpret
> > backslash escapes) by default.
> >
> > This also fixes some test cases which expects built-in
> > echo command.
> >
> > Reported-by: Liu Yiding
> > Signed-off-by: Masami Hiramatsu
> > ---
> >   tools/testing/selftests/ftrace/test.d/functions|3 +++
> >   .../test.d/trigger/trigger-trace-marker-hist.tc|2 +-
> >   .../trigger-trace-marker-synthetic-kernel.tc   |4 
> >   .../trigger/trigger-trace-marker-synthetic.tc  |4 ++--
> >   4 files changed, 10 insertions(+), 3 deletions(-)
> >
> > diff --git a/tools/testing/selftests/ftrace/test.d/functions 
> > b/tools/testing/selftests/ftrace/test.d/functions
> > index 5d4550591ff9..ea59b6ea2c3e 100644
> > --- a/tools/testing/selftests/ftrace/test.d/functions
> > +++ b/tools/testing/selftests/ftrace/test.d/functions
> > @@ -1,3 +1,6 @@
> > +# Since the built-in echo has different behavior in POSIX shell (dash) and
> > +# bash, we forcibly use /bin/echo -E (not interpret backslash escapes).
> > +alias echo="/bin/echo -E"
> Hi Masami, Steven
> 
> It seems that only kprobe_syntax_errors.tc is impacted by the issue 
> currently.  Is it necessary for all tests to use /bin/echo and could we 
> just make kprobe_syntax_errors.tc use /bin/echo?

Yes, I would like to unify the "echo"'s behavior among the testcases
instead of patching each failure in the future.
Or would you have any concern on it?

Thank you,

> 
> Best Regards,
> Xiao Yang
> 
> >
> >   clear_trace() { # reset trace output
> >   echo>  trace
> > diff --git 
> > a/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-hist.tc
> >  
> > b/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-hist.tc
> > index ab6bedb25736..b3f70f53ee69 100644
> > --- 
> > a/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-hist.tc
> > +++ 
> > b/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-hist.tc
> > @@ -30,7 +30,7 @@ fi
> >
> >   echo "Test histogram trace_marker tigger"
> >
> > -echo 'hist:keys=common_pid'>  events/ftrace/print/trigger
> > +echo 'hist:keys=ip'>  events/ftrace/print/trigger
> >   for i in `seq 1 10` ; do echo "hello">  trace_marker; done
> >   grep 'hitcount: *10$' events/ftrace/print/hist>  /dev/null || \
> >   fail "hist trigger did not trigger correct times on trace_marker"
> > diff --git 
> > a/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-synthetic-kernel.tc
> >  
> > b/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-synthetic-kernel.tc
> > index 18b4d1c2807e..c1625d945f4d 100644
> > --- 
> > a/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-synthetic-kernel.tc
> > +++ 
> > b/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-synthetic-kernel.tc
> > @@ -44,6 +44,10 @@ echo 'latency u64 lat'>  synthetic_events
> >   echo 'hist:keys=pid:ts0=common_timestamp.usecs'>  
> > events/sched/sched_waking/trigger
> >   echo 
> > 'hist:keys=common_pid:lat=common_timestamp.usecs-$ts0:onmatch(sched.sched_waking).latency($lat)'>
> >   events/ftrace/print/trigger
> >   echo 'hist:keys=common_pid,lat:sort=lat'>  
> > events/synthetic/latency/trigger
> > +
> > +# We have to use the built-in echo here because waking up pid must be same
> > +# as echoing pid.
> > +alias echo=echo
> >   sleep 1
> >   echo "hello">  trace_marker
> >
> > diff --git 
> > a/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-synthetic.tc
> >  
> > b/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-synthetic.tc
> > index dd262d6d0db6..23e52c8d71de 100644
> > --- 
> > a/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-synthetic.tc
> > +++ 
> > b/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-synthetic.tc
> > @@ -36,8 +36,8 @@ fi
> >   echo "Test histogram trace_marker to trace_marker latency histogram 
> > trigger"
> >
> >   echo 'latency u64 lat'>  synthetic_events
> > -echo 'hist:keys=common_pid:ts0=common_timestamp.usecs if buf == "start"'>  
> > events/ftrace/print/trigger
> > -echo 
> > 'hist:keys=common_pid:lat=common_timestamp.usecs-$ts0:onmatch(ftrace.print).latency($lat)
> >  if buf == "end"'>>  events/ftrace/print/trigger
> > +echo 'hist:keys=ip:ts0=common_timestamp.usecs if buf == "start"'>  
> > events/ftrace/print/trigger
> > +echo 
> > 'hist:keys=ip:lat=common_timestamp.usecs-$ts0:onmatch(ftrace.print).latency($lat)
> >  if buf == "end"'>>  events/ftrace/print/trigger
> >   echo 'hist:keys=common_pid,lat:sort=lat'>  
> > events/synthetic/latency/trigger
> >   echo -n "start">  trace_marker
> >   echo -n "end">  trace_marker
> >
> >
> >
> > .
> >
> 
> 
> 


-- 
Masami Hiramatsu 


Re: [PATCH 3/3] selftests/ftrace: Use /bin/echo instead of built-in echo

2020-05-07 Thread Xiao Yang

On 2020/5/1 21:38, Masami Hiramatsu wrote:

Since the built-in echo has different behavior in POSIX shell
(dash) and bash, we forcibly use /bin/echo -E (not interpret
backslash escapes) by default.

This also fixes some test cases which expects built-in
echo command.

Reported-by: Liu Yiding
Signed-off-by: Masami Hiramatsu
---
  tools/testing/selftests/ftrace/test.d/functions|3 +++
  .../test.d/trigger/trigger-trace-marker-hist.tc|2 +-
  .../trigger-trace-marker-synthetic-kernel.tc   |4 
  .../trigger/trigger-trace-marker-synthetic.tc  |4 ++--
  4 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/tools/testing/selftests/ftrace/test.d/functions 
b/tools/testing/selftests/ftrace/test.d/functions
index 5d4550591ff9..ea59b6ea2c3e 100644
--- a/tools/testing/selftests/ftrace/test.d/functions
+++ b/tools/testing/selftests/ftrace/test.d/functions
@@ -1,3 +1,6 @@
+# Since the built-in echo has different behavior in POSIX shell (dash) and
+# bash, we forcibly use /bin/echo -E (not interpret backslash escapes).
+alias echo="/bin/echo -E"

Hi Masami, Steven

It seems that only kprobe_syntax_errors.tc is impacted by the issue 
currently.  Is it necessary for all tests to use /bin/echo and could we 
just make kprobe_syntax_errors.tc use /bin/echo?


Best Regards,
Xiao Yang



  clear_trace() { # reset trace output
  echo>  trace
diff --git 
a/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-hist.tc 
b/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-hist.tc
index ab6bedb25736..b3f70f53ee69 100644
--- a/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-hist.tc
+++ b/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-hist.tc
@@ -30,7 +30,7 @@ fi

  echo "Test histogram trace_marker tigger"

-echo 'hist:keys=common_pid'>  events/ftrace/print/trigger
+echo 'hist:keys=ip'>  events/ftrace/print/trigger
  for i in `seq 1 10` ; do echo "hello">  trace_marker; done
  grep 'hitcount: *10$' events/ftrace/print/hist>  /dev/null || \
  fail "hist trigger did not trigger correct times on trace_marker"
diff --git 
a/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-synthetic-kernel.tc
 
b/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-synthetic-kernel.tc
index 18b4d1c2807e..c1625d945f4d 100644
--- 
a/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-synthetic-kernel.tc
+++ 
b/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-synthetic-kernel.tc
@@ -44,6 +44,10 @@ echo 'latency u64 lat'>  synthetic_events
  echo 'hist:keys=pid:ts0=common_timestamp.usecs'>  
events/sched/sched_waking/trigger
  echo 
'hist:keys=common_pid:lat=common_timestamp.usecs-$ts0:onmatch(sched.sched_waking).latency($lat)'>
  events/ftrace/print/trigger
  echo 'hist:keys=common_pid,lat:sort=lat'>  events/synthetic/latency/trigger
+
+# We have to use the built-in echo here because waking up pid must be same
+# as echoing pid.
+alias echo=echo
  sleep 1
  echo "hello">  trace_marker

diff --git 
a/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-synthetic.tc
 
b/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-synthetic.tc
index dd262d6d0db6..23e52c8d71de 100644
--- 
a/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-synthetic.tc
+++ 
b/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-synthetic.tc
@@ -36,8 +36,8 @@ fi
  echo "Test histogram trace_marker to trace_marker latency histogram trigger"

  echo 'latency u64 lat'>  synthetic_events
-echo 'hist:keys=common_pid:ts0=common_timestamp.usecs if buf == "start"'>  
events/ftrace/print/trigger
-echo 'hist:keys=common_pid:lat=common_timestamp.usecs-$ts0:onmatch(ftrace.print).latency($lat) 
if buf == "end"'>>  events/ftrace/print/trigger
+echo 'hist:keys=ip:ts0=common_timestamp.usecs if buf == "start"'>  
events/ftrace/print/trigger
+echo 'hist:keys=ip:lat=common_timestamp.usecs-$ts0:onmatch(ftrace.print).latency($lat) if buf 
== "end"'>>  events/ftrace/print/trigger
  echo 'hist:keys=common_pid,lat:sort=lat'>  events/synthetic/latency/trigger
  echo -n "start">  trace_marker
  echo -n "end">  trace_marker



.







Re: [PATCH 3/3] selftests/ftrace: Use /bin/echo instead of built-in echo

2020-05-01 Thread Masami Hiramatsu
On Fri, 1 May 2020 10:19:42 -0400
Steven Rostedt  wrote:

> On Fri,  1 May 2020 22:38:00 +0900
> Masami Hiramatsu  wrote:
> 
> > Since the built-in echo has different behavior in POSIX shell
> > (dash) and bash, we forcibly use /bin/echo -E (not interpret
> > backslash escapes) by default.
> > 
> > This also fixes some test cases which expects built-in
> > echo command.
> > 
> > Reported-by: Liu Yiding 
> > Signed-off-by: Masami Hiramatsu 
> > ---
> >  tools/testing/selftests/ftrace/test.d/functions|3 +++
> >  .../test.d/trigger/trigger-trace-marker-hist.tc|2 +-
> >  .../trigger-trace-marker-synthetic-kernel.tc   |4 
> >  .../trigger/trigger-trace-marker-synthetic.tc  |4 ++--
> >  4 files changed, 10 insertions(+), 3 deletions(-)
> > 
> > diff --git a/tools/testing/selftests/ftrace/test.d/functions 
> > b/tools/testing/selftests/ftrace/test.d/functions
> > index 5d4550591ff9..ea59b6ea2c3e 100644
> > --- a/tools/testing/selftests/ftrace/test.d/functions
> > +++ b/tools/testing/selftests/ftrace/test.d/functions
> > @@ -1,3 +1,6 @@
> > +# Since the built-in echo has different behavior in POSIX shell (dash) and
> > +# bash, we forcibly use /bin/echo -E (not interpret backslash escapes).
> > +alias echo="/bin/echo -E"
> >  
> >  clear_trace() { # reset trace output
> >  echo > trace
> > diff --git 
> > a/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-hist.tc
> >  
> > b/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-hist.tc
> > index ab6bedb25736..b3f70f53ee69 100644
> > --- 
> > a/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-hist.tc
> > +++ 
> > b/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-hist.tc
> > @@ -30,7 +30,7 @@ fi
> >  
> >  echo "Test histogram trace_marker tigger"
> >  
> > -echo 'hist:keys=common_pid' > events/ftrace/print/trigger
> > +echo 'hist:keys=ip' > events/ftrace/print/trigger
> 
> This is doing more than just changing the echo being used. It's changing
> the test being done.

Yes, I need Tom's review for this change. As far as I can test, this
fixes the test failure. If this isn't acceptable, we can use "alias echo=echo"
for this test case.

Thank you,

> 
> >  for i in `seq 1 10` ; do echo "hello" > trace_marker; done
> >  grep 'hitcount: *10$' events/ftrace/print/hist > /dev/null || \
> >  fail "hist trigger did not trigger correct times on trace_marker"
> > diff --git 
> > a/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-synthetic-kernel.tc
> >  
> > b/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-synthetic-kernel.tc
> > index 18b4d1c2807e..c1625d945f4d 100644
> > --- 
> > a/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-synthetic-kernel.tc
> > +++ 
> > b/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-synthetic-kernel.tc
> > @@ -44,6 +44,10 @@ echo 'latency u64 lat' > synthetic_events
> >  echo 'hist:keys=pid:ts0=common_timestamp.usecs' > 
> > events/sched/sched_waking/trigger
> >  echo 
> > 'hist:keys=common_pid:lat=common_timestamp.usecs-$ts0:onmatch(sched.sched_waking).latency($lat)'
> >  > events/ftrace/print/trigger
> >  echo 'hist:keys=common_pid,lat:sort=lat' > events/synthetic/latency/trigger
> > +
> > +# We have to use the built-in echo here because waking up pid must be same
> > +# as echoing pid.
> > +alias echo=echo
> >  sleep 1
> >  echo "hello" > trace_marker
> >  
> > diff --git 
> > a/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-synthetic.tc
> >  
> > b/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-synthetic.tc
> > index dd262d6d0db6..23e52c8d71de 100644
> > --- 
> > a/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-synthetic.tc
> > +++ 
> > b/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-synthetic.tc
> > @@ -36,8 +36,8 @@ fi
> >  echo "Test histogram trace_marker to trace_marker latency histogram 
> > trigger"
> >  
> >  echo 'latency u64 lat' > synthetic_events
> > -echo 'hist:keys=common_pid:ts0=common_timestamp.usecs if buf == "start"' > 
> > events/ftrace/print/trigger
> > -echo 
> > 'hist:keys=common_pid:lat=common_timestamp.usecs-$ts0:onmatch(ftrace.print).latency($lat)
> >  if buf == "end"' >> events/ftrace/print/trigger
> > +echo 'hist:keys=ip:ts0=common_timestamp.usecs if buf == "start"' > 
> > events/ftrace/print/trigger
> > +echo 
> > 'hist:keys=ip:lat=common_timestamp.usecs-$ts0:onmatch(ftrace.print).latency($lat)
> >  if buf == "end"' >> events/ftrace/print/trigger
> 
> This too. And it's not explained in the change log why. In fact, these
> changes look like they belong in a separate patch.
> 
> -- Steve
> 
> >  echo 'hist:keys=common_pid,lat:sort=lat' > events/synthetic/latency/trigger
> >  echo -n "start" > trace_marker
> >  echo -n "end" > trace_marker
> 


-- 
Masami Hiramatsu 


Re: [PATCH 3/3] selftests/ftrace: Use /bin/echo instead of built-in echo

2020-05-01 Thread Steven Rostedt
On Fri,  1 May 2020 22:38:00 +0900
Masami Hiramatsu  wrote:

> Since the built-in echo has different behavior in POSIX shell
> (dash) and bash, we forcibly use /bin/echo -E (not interpret
> backslash escapes) by default.
> 
> This also fixes some test cases which expects built-in
> echo command.
> 
> Reported-by: Liu Yiding 
> Signed-off-by: Masami Hiramatsu 
> ---
>  tools/testing/selftests/ftrace/test.d/functions|3 +++
>  .../test.d/trigger/trigger-trace-marker-hist.tc|2 +-
>  .../trigger-trace-marker-synthetic-kernel.tc   |4 
>  .../trigger/trigger-trace-marker-synthetic.tc  |4 ++--
>  4 files changed, 10 insertions(+), 3 deletions(-)
> 
> diff --git a/tools/testing/selftests/ftrace/test.d/functions 
> b/tools/testing/selftests/ftrace/test.d/functions
> index 5d4550591ff9..ea59b6ea2c3e 100644
> --- a/tools/testing/selftests/ftrace/test.d/functions
> +++ b/tools/testing/selftests/ftrace/test.d/functions
> @@ -1,3 +1,6 @@
> +# Since the built-in echo has different behavior in POSIX shell (dash) and
> +# bash, we forcibly use /bin/echo -E (not interpret backslash escapes).
> +alias echo="/bin/echo -E"
>  
>  clear_trace() { # reset trace output
>  echo > trace
> diff --git 
> a/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-hist.tc 
> b/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-hist.tc
> index ab6bedb25736..b3f70f53ee69 100644
> --- 
> a/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-hist.tc
> +++ 
> b/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-hist.tc
> @@ -30,7 +30,7 @@ fi
>  
>  echo "Test histogram trace_marker tigger"
>  
> -echo 'hist:keys=common_pid' > events/ftrace/print/trigger
> +echo 'hist:keys=ip' > events/ftrace/print/trigger

This is doing more than just changing the echo being used. It's changing
the test being done.

>  for i in `seq 1 10` ; do echo "hello" > trace_marker; done
>  grep 'hitcount: *10$' events/ftrace/print/hist > /dev/null || \
>  fail "hist trigger did not trigger correct times on trace_marker"
> diff --git 
> a/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-synthetic-kernel.tc
>  
> b/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-synthetic-kernel.tc
> index 18b4d1c2807e..c1625d945f4d 100644
> --- 
> a/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-synthetic-kernel.tc
> +++ 
> b/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-synthetic-kernel.tc
> @@ -44,6 +44,10 @@ echo 'latency u64 lat' > synthetic_events
>  echo 'hist:keys=pid:ts0=common_timestamp.usecs' > 
> events/sched/sched_waking/trigger
>  echo 
> 'hist:keys=common_pid:lat=common_timestamp.usecs-$ts0:onmatch(sched.sched_waking).latency($lat)'
>  > events/ftrace/print/trigger
>  echo 'hist:keys=common_pid,lat:sort=lat' > events/synthetic/latency/trigger
> +
> +# We have to use the built-in echo here because waking up pid must be same
> +# as echoing pid.
> +alias echo=echo
>  sleep 1
>  echo "hello" > trace_marker
>  
> diff --git 
> a/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-synthetic.tc
>  
> b/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-synthetic.tc
> index dd262d6d0db6..23e52c8d71de 100644
> --- 
> a/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-synthetic.tc
> +++ 
> b/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-synthetic.tc
> @@ -36,8 +36,8 @@ fi
>  echo "Test histogram trace_marker to trace_marker latency histogram trigger"
>  
>  echo 'latency u64 lat' > synthetic_events
> -echo 'hist:keys=common_pid:ts0=common_timestamp.usecs if buf == "start"' > 
> events/ftrace/print/trigger
> -echo 
> 'hist:keys=common_pid:lat=common_timestamp.usecs-$ts0:onmatch(ftrace.print).latency($lat)
>  if buf == "end"' >> events/ftrace/print/trigger
> +echo 'hist:keys=ip:ts0=common_timestamp.usecs if buf == "start"' > 
> events/ftrace/print/trigger
> +echo 
> 'hist:keys=ip:lat=common_timestamp.usecs-$ts0:onmatch(ftrace.print).latency($lat)
>  if buf == "end"' >> events/ftrace/print/trigger

This too. And it's not explained in the change log why. In fact, these
changes look like they belong in a separate patch.

-- Steve

>  echo 'hist:keys=common_pid,lat:sort=lat' > events/synthetic/latency/trigger
>  echo -n "start" > trace_marker
>  echo -n "end" > trace_marker



[PATCH 3/3] selftests/ftrace: Use /bin/echo instead of built-in echo

2020-05-01 Thread Masami Hiramatsu
Since the built-in echo has different behavior in POSIX shell
(dash) and bash, we forcibly use /bin/echo -E (not interpret
backslash escapes) by default.

This also fixes some test cases which expects built-in
echo command.

Reported-by: Liu Yiding 
Signed-off-by: Masami Hiramatsu 
---
 tools/testing/selftests/ftrace/test.d/functions|3 +++
 .../test.d/trigger/trigger-trace-marker-hist.tc|2 +-
 .../trigger-trace-marker-synthetic-kernel.tc   |4 
 .../trigger/trigger-trace-marker-synthetic.tc  |4 ++--
 4 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/tools/testing/selftests/ftrace/test.d/functions 
b/tools/testing/selftests/ftrace/test.d/functions
index 5d4550591ff9..ea59b6ea2c3e 100644
--- a/tools/testing/selftests/ftrace/test.d/functions
+++ b/tools/testing/selftests/ftrace/test.d/functions
@@ -1,3 +1,6 @@
+# Since the built-in echo has different behavior in POSIX shell (dash) and
+# bash, we forcibly use /bin/echo -E (not interpret backslash escapes).
+alias echo="/bin/echo -E"
 
 clear_trace() { # reset trace output
 echo > trace
diff --git 
a/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-hist.tc 
b/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-hist.tc
index ab6bedb25736..b3f70f53ee69 100644
--- a/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-hist.tc
+++ b/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-hist.tc
@@ -30,7 +30,7 @@ fi
 
 echo "Test histogram trace_marker tigger"
 
-echo 'hist:keys=common_pid' > events/ftrace/print/trigger
+echo 'hist:keys=ip' > events/ftrace/print/trigger
 for i in `seq 1 10` ; do echo "hello" > trace_marker; done
 grep 'hitcount: *10$' events/ftrace/print/hist > /dev/null || \
 fail "hist trigger did not trigger correct times on trace_marker"
diff --git 
a/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-synthetic-kernel.tc
 
b/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-synthetic-kernel.tc
index 18b4d1c2807e..c1625d945f4d 100644
--- 
a/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-synthetic-kernel.tc
+++ 
b/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-synthetic-kernel.tc
@@ -44,6 +44,10 @@ echo 'latency u64 lat' > synthetic_events
 echo 'hist:keys=pid:ts0=common_timestamp.usecs' > 
events/sched/sched_waking/trigger
 echo 
'hist:keys=common_pid:lat=common_timestamp.usecs-$ts0:onmatch(sched.sched_waking).latency($lat)'
 > events/ftrace/print/trigger
 echo 'hist:keys=common_pid,lat:sort=lat' > events/synthetic/latency/trigger
+
+# We have to use the built-in echo here because waking up pid must be same
+# as echoing pid.
+alias echo=echo
 sleep 1
 echo "hello" > trace_marker
 
diff --git 
a/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-synthetic.tc
 
b/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-synthetic.tc
index dd262d6d0db6..23e52c8d71de 100644
--- 
a/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-synthetic.tc
+++ 
b/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-synthetic.tc
@@ -36,8 +36,8 @@ fi
 echo "Test histogram trace_marker to trace_marker latency histogram trigger"
 
 echo 'latency u64 lat' > synthetic_events
-echo 'hist:keys=common_pid:ts0=common_timestamp.usecs if buf == "start"' > 
events/ftrace/print/trigger
-echo 
'hist:keys=common_pid:lat=common_timestamp.usecs-$ts0:onmatch(ftrace.print).latency($lat)
 if buf == "end"' >> events/ftrace/print/trigger
+echo 'hist:keys=ip:ts0=common_timestamp.usecs if buf == "start"' > 
events/ftrace/print/trigger
+echo 
'hist:keys=ip:lat=common_timestamp.usecs-$ts0:onmatch(ftrace.print).latency($lat)
 if buf == "end"' >> events/ftrace/print/trigger
 echo 'hist:keys=common_pid,lat:sort=lat' > events/synthetic/latency/trigger
 echo -n "start" > trace_marker
 echo -n "end" > trace_marker