xref: /openbmc/linux/tools/testing/selftests/ftrace/test.d/trigger/trigger-hist.tc (revision 762f99f4f3cb41a775b5157dd761217beba65873)
176929ab5SMasami Hiramatsu#!/bin/sh
2b2441318SGreg Kroah-Hartman# SPDX-License-Identifier: GPL-2.0
376929ab5SMasami Hiramatsu# description: event trigger - test histogram trigger
43591e90fSMasami Hiramatsu# requires: set_event events/sched/sched_process_fork/trigger events/sched/sched_process_fork/hist
5ca2958f1SSteven Rostedt (VMware)# flags: instance
676929ab5SMasami Hiramatsu
776929ab5SMasami Hiramatsufail() { #msg
876929ab5SMasami Hiramatsu    echo $1
942534b1fSMasami Hiramatsu    exit_fail
1076929ab5SMasami Hiramatsu}
1176929ab5SMasami Hiramatsu
1243708c0aSFlavio Suligoiecho "Test histogram basic trigger"
1376929ab5SMasami Hiramatsu
1476929ab5SMasami Hiramatsuecho 'hist:keys=parent_pid:vals=child_pid' > events/sched/sched_process_fork/trigger
1576929ab5SMasami Hiramatsufor i in `seq 1 10` ; do ( echo "forked" > /dev/null); done
1676929ab5SMasami Hiramatsugrep parent_pid events/sched/sched_process_fork/hist > /dev/null || \
1776929ab5SMasami Hiramatsu    fail "hist trigger on sched_process_fork did not work"
1876929ab5SMasami Hiramatsugrep child events/sched/sched_process_fork/hist > /dev/null || \
1976929ab5SMasami Hiramatsu    fail "hist trigger on sched_process_fork did not work"
2076929ab5SMasami Hiramatsu
2176929ab5SMasami Hiramatsureset_trigger
2276929ab5SMasami Hiramatsu
2376929ab5SMasami Hiramatsuecho "Test histogram with compound keys"
2476929ab5SMasami Hiramatsu
2576929ab5SMasami Hiramatsuecho 'hist:keys=parent_pid,child_pid' > events/sched/sched_process_fork/trigger
2676929ab5SMasami Hiramatsufor i in `seq 1 10` ; do ( echo "forked" > /dev/null); done
2776929ab5SMasami Hiramatsugrep '^{ parent_pid:.*, child_pid:.*}' events/sched/sched_process_fork/hist > /dev/null || \
2876929ab5SMasami Hiramatsu    fail "compound keys on sched_process_fork did not work"
2976929ab5SMasami Hiramatsu
3076929ab5SMasami Hiramatsureset_trigger
3176929ab5SMasami Hiramatsu
3276929ab5SMasami Hiramatsuecho "Test histogram with string key"
3376929ab5SMasami Hiramatsu
3476929ab5SMasami Hiramatsuecho 'hist:keys=parent_comm' > events/sched/sched_process_fork/trigger
3576929ab5SMasami Hiramatsufor i in `seq 1 10` ; do ( echo "forked" > /dev/null); done
3676929ab5SMasami HiramatsuCOMM=`cat /proc/$$/comm`
3776929ab5SMasami Hiramatsugrep "parent_comm: $COMM" events/sched/sched_process_fork/hist > /dev/null || \
3876929ab5SMasami Hiramatsu    fail "string key on sched_process_fork did not work"
3976929ab5SMasami Hiramatsu
4076929ab5SMasami Hiramatsureset_trigger
4176929ab5SMasami Hiramatsu
42*fa73514dSSteven Rostedt (VMware)echo "Test histogram with sym modifier"
43*fa73514dSSteven Rostedt (VMware)
44*fa73514dSSteven Rostedt (VMware)echo 'hist:keys=call_site.sym' > events/kmem/kmalloc/trigger
45*fa73514dSSteven Rostedt (VMware)for i in `seq 1 10` ; do ( echo "forked" > /dev/null); done
46*fa73514dSSteven Rostedt (VMware)grep '{ call_site: \[[0-9a-f][0-9a-f]*\] [_a-zA-Z][_a-zA-Z]* *}' events/kmem/kmalloc/hist > /dev/null || \
47*fa73514dSSteven Rostedt (VMware)    fail "sym modifier on kmalloc call_site did not work"
48*fa73514dSSteven Rostedt (VMware)
49*fa73514dSSteven Rostedt (VMware)reset_trigger
50*fa73514dSSteven Rostedt (VMware)
51*fa73514dSSteven Rostedt (VMware)echo "Test histogram with sym-offset modifier"
52*fa73514dSSteven Rostedt (VMware)
53*fa73514dSSteven Rostedt (VMware)echo 'hist:keys=call_site.sym-offset' > events/kmem/kmalloc/trigger
54*fa73514dSSteven Rostedt (VMware)for i in `seq 1 10` ; do ( echo "forked" > /dev/null); done
55*fa73514dSSteven Rostedt (VMware)grep '{ call_site: \[[0-9a-f][0-9a-f]*\] [_a-zA-Z][_a-zA-Z]*+0x[0-9a-f][0-9a-f]*' events/kmem/kmalloc/hist > /dev/null || \
56*fa73514dSSteven Rostedt (VMware)    fail "sym-offset modifier on kmalloc call_site did not work"
57*fa73514dSSteven Rostedt (VMware)
58*fa73514dSSteven Rostedt (VMware)reset_trigger
59*fa73514dSSteven Rostedt (VMware)
6076929ab5SMasami Hiramatsuecho "Test histogram with sort key"
6176929ab5SMasami Hiramatsu
6276929ab5SMasami Hiramatsuecho 'hist:keys=parent_pid,child_pid:sort=child_pid.ascending' > events/sched/sched_process_fork/trigger
6376929ab5SMasami Hiramatsufor i in `seq 1 10` ; do ( echo "forked" > /dev/null); done
6476929ab5SMasami Hiramatsu
6576929ab5SMasami Hiramatsucheck_inc() {
6676929ab5SMasami Hiramatsu    while [ $# -gt 1 ]; do
6776929ab5SMasami Hiramatsu        [ $1 -gt $2 ] && return 1
6876929ab5SMasami Hiramatsu        shift 1
6976929ab5SMasami Hiramatsu    done
7076929ab5SMasami Hiramatsu    return 0
7176929ab5SMasami Hiramatsu}
7276929ab5SMasami Hiramatsucheck_inc `grep -o "child_pid:[[:space:]]*[[:digit:]]*" \
7376929ab5SMasami Hiramatsu    events/sched/sched_process_fork/hist | cut -d: -f2 ` ||
7476929ab5SMasami Hiramatsu    fail "sort param on sched_process_fork did not work"
7576929ab5SMasami Hiramatsu
7676929ab5SMasami Hiramatsuexit 0
77