1*4882a593Smuzhiyun#!/bin/sh 2*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0 3*4882a593Smuzhiyun# description: event trigger - test histogram trigger 4*4882a593Smuzhiyun# requires: set_event events/sched/sched_process_fork/trigger events/sched/sched_process_fork/hist 5*4882a593Smuzhiyun# flags: instance 6*4882a593Smuzhiyun 7*4882a593Smuzhiyunfail() { #msg 8*4882a593Smuzhiyun echo $1 9*4882a593Smuzhiyun exit_fail 10*4882a593Smuzhiyun} 11*4882a593Smuzhiyun 12*4882a593Smuzhiyunecho "Test histogram basic trigger" 13*4882a593Smuzhiyun 14*4882a593Smuzhiyunecho 'hist:keys=parent_pid:vals=child_pid' > events/sched/sched_process_fork/trigger 15*4882a593Smuzhiyunfor i in `seq 1 10` ; do ( echo "forked" > /dev/null); done 16*4882a593Smuzhiyungrep parent_pid events/sched/sched_process_fork/hist > /dev/null || \ 17*4882a593Smuzhiyun fail "hist trigger on sched_process_fork did not work" 18*4882a593Smuzhiyungrep child events/sched/sched_process_fork/hist > /dev/null || \ 19*4882a593Smuzhiyun fail "hist trigger on sched_process_fork did not work" 20*4882a593Smuzhiyun 21*4882a593Smuzhiyunreset_trigger 22*4882a593Smuzhiyun 23*4882a593Smuzhiyunecho "Test histogram with compound keys" 24*4882a593Smuzhiyun 25*4882a593Smuzhiyunecho 'hist:keys=parent_pid,child_pid' > events/sched/sched_process_fork/trigger 26*4882a593Smuzhiyunfor i in `seq 1 10` ; do ( echo "forked" > /dev/null); done 27*4882a593Smuzhiyungrep '^{ parent_pid:.*, child_pid:.*}' events/sched/sched_process_fork/hist > /dev/null || \ 28*4882a593Smuzhiyun fail "compound keys on sched_process_fork did not work" 29*4882a593Smuzhiyun 30*4882a593Smuzhiyunreset_trigger 31*4882a593Smuzhiyun 32*4882a593Smuzhiyunecho "Test histogram with string key" 33*4882a593Smuzhiyun 34*4882a593Smuzhiyunecho 'hist:keys=parent_comm' > events/sched/sched_process_fork/trigger 35*4882a593Smuzhiyunfor i in `seq 1 10` ; do ( echo "forked" > /dev/null); done 36*4882a593SmuzhiyunCOMM=`cat /proc/$$/comm` 37*4882a593Smuzhiyungrep "parent_comm: $COMM" events/sched/sched_process_fork/hist > /dev/null || \ 38*4882a593Smuzhiyun fail "string key on sched_process_fork did not work" 39*4882a593Smuzhiyun 40*4882a593Smuzhiyunreset_trigger 41*4882a593Smuzhiyun 42*4882a593Smuzhiyunecho "Test histogram with sort key" 43*4882a593Smuzhiyun 44*4882a593Smuzhiyunecho 'hist:keys=parent_pid,child_pid:sort=child_pid.ascending' > events/sched/sched_process_fork/trigger 45*4882a593Smuzhiyunfor i in `seq 1 10` ; do ( echo "forked" > /dev/null); done 46*4882a593Smuzhiyun 47*4882a593Smuzhiyuncheck_inc() { 48*4882a593Smuzhiyun while [ $# -gt 1 ]; do 49*4882a593Smuzhiyun [ $1 -gt $2 ] && return 1 50*4882a593Smuzhiyun shift 1 51*4882a593Smuzhiyun done 52*4882a593Smuzhiyun return 0 53*4882a593Smuzhiyun} 54*4882a593Smuzhiyuncheck_inc `grep -o "child_pid:[[:space:]]*[[:digit:]]*" \ 55*4882a593Smuzhiyun events/sched/sched_process_fork/hist | cut -d: -f2 ` || 56*4882a593Smuzhiyun fail "sort param on sched_process_fork did not work" 57*4882a593Smuzhiyun 58*4882a593Smuzhiyunexit 0 59