Home | History | Annotate | Download | only in trigger
      1 #!/bin/sh
      2 # description: event trigger - test histogram trigger
      3 
      4 do_reset() {
      5     reset_trigger
      6     echo > set_event
      7     clear_trace
      8 }
      9 
     10 fail() { #msg
     11     do_reset
     12     echo $1
     13     exit $FAIL
     14 }
     15 
     16 if [ ! -f set_event -o ! -d events/sched ]; then
     17     echo "event tracing is not supported"
     18     exit_unsupported
     19 fi
     20 
     21 if [ ! -f events/sched/sched_process_fork/trigger ]; then
     22     echo "event trigger is not supported"
     23     exit_unsupported
     24 fi
     25 
     26 if [ ! -f events/sched/sched_process_fork/hist ]; then
     27     echo "hist trigger is not supported"
     28     exit_unsupported
     29 fi
     30 
     31 reset_tracer
     32 do_reset
     33 
     34 echo "Test histogram basic tigger"
     35 
     36 echo 'hist:keys=parent_pid:vals=child_pid' > events/sched/sched_process_fork/trigger
     37 for i in `seq 1 10` ; do ( echo "forked" > /dev/null); done
     38 grep parent_pid events/sched/sched_process_fork/hist > /dev/null || \
     39     fail "hist trigger on sched_process_fork did not work"
     40 grep child events/sched/sched_process_fork/hist > /dev/null || \
     41     fail "hist trigger on sched_process_fork did not work"
     42 
     43 reset_trigger
     44 
     45 echo "Test histogram with compound keys"
     46 
     47 echo 'hist:keys=parent_pid,child_pid' > events/sched/sched_process_fork/trigger
     48 for i in `seq 1 10` ; do ( echo "forked" > /dev/null); done
     49 grep '^{ parent_pid:.*, child_pid:.*}' events/sched/sched_process_fork/hist > /dev/null || \
     50     fail "compound keys on sched_process_fork did not work"
     51 
     52 reset_trigger
     53 
     54 echo "Test histogram with string key"
     55 
     56 echo 'hist:keys=parent_comm' > events/sched/sched_process_fork/trigger
     57 for i in `seq 1 10` ; do ( echo "forked" > /dev/null); done
     58 COMM=`cat /proc/$$/comm`
     59 grep "parent_comm: $COMM" events/sched/sched_process_fork/hist > /dev/null || \
     60     fail "string key on sched_process_fork did not work"
     61 
     62 reset_trigger
     63 
     64 echo "Test histogram with sort key"
     65 
     66 echo 'hist:keys=parent_pid,child_pid:sort=child_pid.ascending' > events/sched/sched_process_fork/trigger
     67 for i in `seq 1 10` ; do ( echo "forked" > /dev/null); done
     68 
     69 check_inc() {
     70     while [ $# -gt 1 ]; do
     71         [ $1 -gt $2 ] && return 1
     72         shift 1
     73     done
     74     return 0
     75 }
     76 check_inc `grep -o "child_pid:[[:space:]]*[[:digit:]]*" \
     77     events/sched/sched_process_fork/hist | cut -d: -f2 ` ||
     78     fail "sort param on sched_process_fork did not work"
     79 
     80 do_reset
     81 
     82 exit 0
     83