18c2ecf20Sopenharmony_ci#!/bin/sh
28c2ecf20Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0
38c2ecf20Sopenharmony_ci# description: event trigger - test histogram trigger
48c2ecf20Sopenharmony_ci# requires: set_event events/sched/sched_process_fork/trigger events/sched/sched_process_fork/hist
58c2ecf20Sopenharmony_ci# flags: instance
68c2ecf20Sopenharmony_ci
78c2ecf20Sopenharmony_cifail() { #msg
88c2ecf20Sopenharmony_ci    echo $1
98c2ecf20Sopenharmony_ci    exit_fail
108c2ecf20Sopenharmony_ci}
118c2ecf20Sopenharmony_ci
128c2ecf20Sopenharmony_ciecho "Test histogram basic trigger"
138c2ecf20Sopenharmony_ci
148c2ecf20Sopenharmony_ciecho 'hist:keys=parent_pid:vals=child_pid' > events/sched/sched_process_fork/trigger
158c2ecf20Sopenharmony_cifor i in `seq 1 10` ; do ( echo "forked" > /dev/null); done
168c2ecf20Sopenharmony_cigrep parent_pid events/sched/sched_process_fork/hist > /dev/null || \
178c2ecf20Sopenharmony_ci    fail "hist trigger on sched_process_fork did not work"
188c2ecf20Sopenharmony_cigrep child events/sched/sched_process_fork/hist > /dev/null || \
198c2ecf20Sopenharmony_ci    fail "hist trigger on sched_process_fork did not work"
208c2ecf20Sopenharmony_ci
218c2ecf20Sopenharmony_cireset_trigger
228c2ecf20Sopenharmony_ci
238c2ecf20Sopenharmony_ciecho "Test histogram with compound keys"
248c2ecf20Sopenharmony_ci
258c2ecf20Sopenharmony_ciecho 'hist:keys=parent_pid,child_pid' > events/sched/sched_process_fork/trigger
268c2ecf20Sopenharmony_cifor i in `seq 1 10` ; do ( echo "forked" > /dev/null); done
278c2ecf20Sopenharmony_cigrep '^{ parent_pid:.*, child_pid:.*}' events/sched/sched_process_fork/hist > /dev/null || \
288c2ecf20Sopenharmony_ci    fail "compound keys on sched_process_fork did not work"
298c2ecf20Sopenharmony_ci
308c2ecf20Sopenharmony_cireset_trigger
318c2ecf20Sopenharmony_ci
328c2ecf20Sopenharmony_ciecho "Test histogram with string key"
338c2ecf20Sopenharmony_ci
348c2ecf20Sopenharmony_ciecho 'hist:keys=parent_comm' > events/sched/sched_process_fork/trigger
358c2ecf20Sopenharmony_cifor i in `seq 1 10` ; do ( echo "forked" > /dev/null); done
368c2ecf20Sopenharmony_ciCOMM=`cat /proc/$$/comm`
378c2ecf20Sopenharmony_cigrep "parent_comm: $COMM" events/sched/sched_process_fork/hist > /dev/null || \
388c2ecf20Sopenharmony_ci    fail "string key on sched_process_fork did not work"
398c2ecf20Sopenharmony_ci
408c2ecf20Sopenharmony_cireset_trigger
418c2ecf20Sopenharmony_ci
428c2ecf20Sopenharmony_ciecho "Test histogram with sort key"
438c2ecf20Sopenharmony_ci
448c2ecf20Sopenharmony_ciecho 'hist:keys=parent_pid,child_pid:sort=child_pid.ascending' > events/sched/sched_process_fork/trigger
458c2ecf20Sopenharmony_cifor i in `seq 1 10` ; do ( echo "forked" > /dev/null); done
468c2ecf20Sopenharmony_ci
478c2ecf20Sopenharmony_cicheck_inc() {
488c2ecf20Sopenharmony_ci    while [ $# -gt 1 ]; do
498c2ecf20Sopenharmony_ci        [ $1 -gt $2 ] && return 1
508c2ecf20Sopenharmony_ci        shift 1
518c2ecf20Sopenharmony_ci    done
528c2ecf20Sopenharmony_ci    return 0
538c2ecf20Sopenharmony_ci}
548c2ecf20Sopenharmony_cicheck_inc `grep -o "child_pid:[[:space:]]*[[:digit:]]*" \
558c2ecf20Sopenharmony_ci    events/sched/sched_process_fork/hist | cut -d: -f2 ` ||
568c2ecf20Sopenharmony_ci    fail "sort param on sched_process_fork did not work"
578c2ecf20Sopenharmony_ci
588c2ecf20Sopenharmony_ciexit 0
59