162306a36Sopenharmony_ci#!/bin/bash 262306a36Sopenharmony_ci# daemon operations 362306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0 462306a36Sopenharmony_ci 562306a36Sopenharmony_cicheck_line_first() 662306a36Sopenharmony_ci{ 762306a36Sopenharmony_ci local line=$1 862306a36Sopenharmony_ci local name=$2 962306a36Sopenharmony_ci local base=$3 1062306a36Sopenharmony_ci local output=$4 1162306a36Sopenharmony_ci local lock=$5 1262306a36Sopenharmony_ci local up=$6 1362306a36Sopenharmony_ci 1462306a36Sopenharmony_ci local line_name 1562306a36Sopenharmony_ci line_name=`echo "${line}" | awk 'BEGIN { FS = ":" } ; { print $2 }'` 1662306a36Sopenharmony_ci local line_base 1762306a36Sopenharmony_ci line_base=`echo "${line}" | awk 'BEGIN { FS = ":" } ; { print $3 }'` 1862306a36Sopenharmony_ci local line_output 1962306a36Sopenharmony_ci line_output=`echo "${line}" | awk 'BEGIN { FS = ":" } ; { print $4 }'` 2062306a36Sopenharmony_ci local line_lock 2162306a36Sopenharmony_ci line_lock=`echo "${line}" | awk 'BEGIN { FS = ":" } ; { print $5 }'` 2262306a36Sopenharmony_ci local line_up 2362306a36Sopenharmony_ci line_up=`echo "${line}" | awk 'BEGIN { FS = ":" } ; { print $6 }'` 2462306a36Sopenharmony_ci 2562306a36Sopenharmony_ci if [ "${name}" != "${line_name}" ]; then 2662306a36Sopenharmony_ci echo "FAILED: wrong name" 2762306a36Sopenharmony_ci error=1 2862306a36Sopenharmony_ci fi 2962306a36Sopenharmony_ci 3062306a36Sopenharmony_ci if [ "${base}" != "${line_base}" ]; then 3162306a36Sopenharmony_ci echo "FAILED: wrong base" 3262306a36Sopenharmony_ci error=1 3362306a36Sopenharmony_ci fi 3462306a36Sopenharmony_ci 3562306a36Sopenharmony_ci if [ "${output}" != "${line_output}" ]; then 3662306a36Sopenharmony_ci echo "FAILED: wrong output" 3762306a36Sopenharmony_ci error=1 3862306a36Sopenharmony_ci fi 3962306a36Sopenharmony_ci 4062306a36Sopenharmony_ci if [ "${lock}" != "${line_lock}" ]; then 4162306a36Sopenharmony_ci echo "FAILED: wrong lock" 4262306a36Sopenharmony_ci error=1 4362306a36Sopenharmony_ci fi 4462306a36Sopenharmony_ci 4562306a36Sopenharmony_ci if [ "${up}" != "${line_up}" ]; then 4662306a36Sopenharmony_ci echo "FAILED: wrong up" 4762306a36Sopenharmony_ci error=1 4862306a36Sopenharmony_ci fi 4962306a36Sopenharmony_ci} 5062306a36Sopenharmony_ci 5162306a36Sopenharmony_cicheck_line_other() 5262306a36Sopenharmony_ci{ 5362306a36Sopenharmony_ci local line=$1 5462306a36Sopenharmony_ci local name=$2 5562306a36Sopenharmony_ci local run=$3 5662306a36Sopenharmony_ci local base=$4 5762306a36Sopenharmony_ci local output=$5 5862306a36Sopenharmony_ci local control=$6 5962306a36Sopenharmony_ci local ack=$7 6062306a36Sopenharmony_ci local up=$8 6162306a36Sopenharmony_ci 6262306a36Sopenharmony_ci local line_name 6362306a36Sopenharmony_ci line_name=`echo "${line}" | awk 'BEGIN { FS = ":" } ; { print $2 }'` 6462306a36Sopenharmony_ci local line_run 6562306a36Sopenharmony_ci line_run=`echo "${line}" | awk 'BEGIN { FS = ":" } ; { print $3 }'` 6662306a36Sopenharmony_ci local line_base 6762306a36Sopenharmony_ci line_base=`echo "${line}" | awk 'BEGIN { FS = ":" } ; { print $4 }'` 6862306a36Sopenharmony_ci local line_output 6962306a36Sopenharmony_ci line_output=`echo "${line}" | awk 'BEGIN { FS = ":" } ; { print $5 }'` 7062306a36Sopenharmony_ci local line_control 7162306a36Sopenharmony_ci line_control=`echo "${line}" | awk 'BEGIN { FS = ":" } ; { print $6 }'` 7262306a36Sopenharmony_ci local line_ack 7362306a36Sopenharmony_ci line_ack=`echo "${line}" | awk 'BEGIN { FS = ":" } ; { print $7 }'` 7462306a36Sopenharmony_ci local line_up 7562306a36Sopenharmony_ci line_up=`echo "${line}" | awk 'BEGIN { FS = ":" } ; { print $8 }'` 7662306a36Sopenharmony_ci 7762306a36Sopenharmony_ci if [ "${name}" != "${line_name}" ]; then 7862306a36Sopenharmony_ci echo "FAILED: wrong name" 7962306a36Sopenharmony_ci error=1 8062306a36Sopenharmony_ci fi 8162306a36Sopenharmony_ci 8262306a36Sopenharmony_ci if [ "${run}" != "${line_run}" ]; then 8362306a36Sopenharmony_ci echo "FAILED: wrong run" 8462306a36Sopenharmony_ci error=1 8562306a36Sopenharmony_ci fi 8662306a36Sopenharmony_ci 8762306a36Sopenharmony_ci if [ "${base}" != "${line_base}" ]; then 8862306a36Sopenharmony_ci echo "FAILED: wrong base" 8962306a36Sopenharmony_ci error=1 9062306a36Sopenharmony_ci fi 9162306a36Sopenharmony_ci 9262306a36Sopenharmony_ci if [ "${output}" != "${line_output}" ]; then 9362306a36Sopenharmony_ci echo "FAILED: wrong output" 9462306a36Sopenharmony_ci error=1 9562306a36Sopenharmony_ci fi 9662306a36Sopenharmony_ci 9762306a36Sopenharmony_ci if [ "${control}" != "${line_control}" ]; then 9862306a36Sopenharmony_ci echo "FAILED: wrong control" 9962306a36Sopenharmony_ci error=1 10062306a36Sopenharmony_ci fi 10162306a36Sopenharmony_ci 10262306a36Sopenharmony_ci if [ "${ack}" != "${line_ack}" ]; then 10362306a36Sopenharmony_ci echo "FAILED: wrong ack" 10462306a36Sopenharmony_ci error=1 10562306a36Sopenharmony_ci fi 10662306a36Sopenharmony_ci 10762306a36Sopenharmony_ci if [ "${up}" != "${line_up}" ]; then 10862306a36Sopenharmony_ci echo "FAILED: wrong up" 10962306a36Sopenharmony_ci error=1 11062306a36Sopenharmony_ci fi 11162306a36Sopenharmony_ci} 11262306a36Sopenharmony_ci 11362306a36Sopenharmony_cidaemon_exit() 11462306a36Sopenharmony_ci{ 11562306a36Sopenharmony_ci local config=$1 11662306a36Sopenharmony_ci 11762306a36Sopenharmony_ci local line 11862306a36Sopenharmony_ci line=`perf daemon --config ${config} -x: | head -1` 11962306a36Sopenharmony_ci local pid 12062306a36Sopenharmony_ci pid=`echo "${line}" | awk 'BEGIN { FS = ":" } ; { print $1 }'` 12162306a36Sopenharmony_ci 12262306a36Sopenharmony_ci # Reset trap handler. 12362306a36Sopenharmony_ci trap - SIGINT SIGTERM 12462306a36Sopenharmony_ci 12562306a36Sopenharmony_ci # stop daemon 12662306a36Sopenharmony_ci perf daemon stop --config ${config} 12762306a36Sopenharmony_ci 12862306a36Sopenharmony_ci # ... and wait for the pid to go away 12962306a36Sopenharmony_ci tail --pid=${pid} -f /dev/null 13062306a36Sopenharmony_ci} 13162306a36Sopenharmony_ci 13262306a36Sopenharmony_cidaemon_start() 13362306a36Sopenharmony_ci{ 13462306a36Sopenharmony_ci local config=$1 13562306a36Sopenharmony_ci local session=$2 13662306a36Sopenharmony_ci 13762306a36Sopenharmony_ci perf daemon start --config ${config} 13862306a36Sopenharmony_ci 13962306a36Sopenharmony_ci # Clean up daemon if interrupted. 14062306a36Sopenharmony_ci trap 'echo "FAILED: Signal caught"; daemon_exit "${config}"; exit 1' SIGINT SIGTERM 14162306a36Sopenharmony_ci 14262306a36Sopenharmony_ci # wait for the session to ping 14362306a36Sopenharmony_ci local state="FAIL" 14462306a36Sopenharmony_ci local retries=0 14562306a36Sopenharmony_ci while [ "${state}" != "OK" ]; do 14662306a36Sopenharmony_ci state=`perf daemon ping --config ${config} --session ${session} | awk '{ print $1 }'` 14762306a36Sopenharmony_ci sleep 0.05 14862306a36Sopenharmony_ci retries=$((${retries} +1)) 14962306a36Sopenharmony_ci if [ ${retries} -ge 600 ]; then 15062306a36Sopenharmony_ci echo "FAILED: Timeout waiting for daemon to ping" 15162306a36Sopenharmony_ci daemon_exit ${config} 15262306a36Sopenharmony_ci exit 1 15362306a36Sopenharmony_ci fi 15462306a36Sopenharmony_ci done 15562306a36Sopenharmony_ci} 15662306a36Sopenharmony_ci 15762306a36Sopenharmony_citest_list() 15862306a36Sopenharmony_ci{ 15962306a36Sopenharmony_ci echo "test daemon list" 16062306a36Sopenharmony_ci 16162306a36Sopenharmony_ci local config 16262306a36Sopenharmony_ci config=$(mktemp /tmp/perf.daemon.config.XXX) 16362306a36Sopenharmony_ci local base 16462306a36Sopenharmony_ci base=$(mktemp -d /tmp/perf.daemon.base.XXX) 16562306a36Sopenharmony_ci 16662306a36Sopenharmony_ci cat <<EOF > ${config} 16762306a36Sopenharmony_ci[daemon] 16862306a36Sopenharmony_cibase=BASE 16962306a36Sopenharmony_ci 17062306a36Sopenharmony_ci[session-size] 17162306a36Sopenharmony_cirun = -e cpu-clock -m 1 sleep 10 17262306a36Sopenharmony_ci 17362306a36Sopenharmony_ci[session-time] 17462306a36Sopenharmony_cirun = -e task-clock -m 1 sleep 10 17562306a36Sopenharmony_ciEOF 17662306a36Sopenharmony_ci 17762306a36Sopenharmony_ci sed -i -e "s|BASE|${base}|" ${config} 17862306a36Sopenharmony_ci 17962306a36Sopenharmony_ci # start daemon 18062306a36Sopenharmony_ci daemon_start ${config} size 18162306a36Sopenharmony_ci 18262306a36Sopenharmony_ci # check first line 18362306a36Sopenharmony_ci # pid:daemon:base:base/output:base/lock 18462306a36Sopenharmony_ci local line 18562306a36Sopenharmony_ci line=`perf daemon --config ${config} -x: | head -1` 18662306a36Sopenharmony_ci check_line_first ${line} daemon ${base} ${base}/output ${base}/lock "0" 18762306a36Sopenharmony_ci 18862306a36Sopenharmony_ci # check 1st session 18962306a36Sopenharmony_ci # pid:size:-e cpu-clock:base/size:base/size/output:base/size/control:base/size/ack:0 19062306a36Sopenharmony_ci local line 19162306a36Sopenharmony_ci line=`perf daemon --config ${config} -x: | head -2 | tail -1` 19262306a36Sopenharmony_ci check_line_other "${line}" size "-e cpu-clock -m 1 sleep 10" ${base}/session-size \ 19362306a36Sopenharmony_ci ${base}/session-size/output ${base}/session-size/control \ 19462306a36Sopenharmony_ci ${base}/session-size/ack "0" 19562306a36Sopenharmony_ci 19662306a36Sopenharmony_ci # check 2nd session 19762306a36Sopenharmony_ci # pid:time:-e task-clock:base/time:base/time/output:base/time/control:base/time/ack:0 19862306a36Sopenharmony_ci local line 19962306a36Sopenharmony_ci line=`perf daemon --config ${config} -x: | head -3 | tail -1` 20062306a36Sopenharmony_ci check_line_other "${line}" time "-e task-clock -m 1 sleep 10" ${base}/session-time \ 20162306a36Sopenharmony_ci ${base}/session-time/output ${base}/session-time/control \ 20262306a36Sopenharmony_ci ${base}/session-time/ack "0" 20362306a36Sopenharmony_ci 20462306a36Sopenharmony_ci # stop daemon 20562306a36Sopenharmony_ci daemon_exit ${config} 20662306a36Sopenharmony_ci 20762306a36Sopenharmony_ci rm -rf ${base} 20862306a36Sopenharmony_ci rm -f ${config} 20962306a36Sopenharmony_ci} 21062306a36Sopenharmony_ci 21162306a36Sopenharmony_citest_reconfig() 21262306a36Sopenharmony_ci{ 21362306a36Sopenharmony_ci echo "test daemon reconfig" 21462306a36Sopenharmony_ci 21562306a36Sopenharmony_ci local config 21662306a36Sopenharmony_ci config=$(mktemp /tmp/perf.daemon.config.XXX) 21762306a36Sopenharmony_ci local base 21862306a36Sopenharmony_ci base=$(mktemp -d /tmp/perf.daemon.base.XXX) 21962306a36Sopenharmony_ci 22062306a36Sopenharmony_ci # prepare config 22162306a36Sopenharmony_ci cat <<EOF > ${config} 22262306a36Sopenharmony_ci[daemon] 22362306a36Sopenharmony_cibase=BASE 22462306a36Sopenharmony_ci 22562306a36Sopenharmony_ci[session-size] 22662306a36Sopenharmony_cirun = -e cpu-clock -m 1 sleep 10 22762306a36Sopenharmony_ci 22862306a36Sopenharmony_ci[session-time] 22962306a36Sopenharmony_cirun = -e task-clock -m 1 sleep 10 23062306a36Sopenharmony_ciEOF 23162306a36Sopenharmony_ci 23262306a36Sopenharmony_ci sed -i -e "s|BASE|${base}|" ${config} 23362306a36Sopenharmony_ci 23462306a36Sopenharmony_ci # start daemon 23562306a36Sopenharmony_ci daemon_start ${config} size 23662306a36Sopenharmony_ci 23762306a36Sopenharmony_ci # check 2nd session 23862306a36Sopenharmony_ci # pid:time:-e task-clock:base/time:base/time/output:base/time/control:base/time/ack:0 23962306a36Sopenharmony_ci local line 24062306a36Sopenharmony_ci line=`perf daemon --config ${config} -x: | head -3 | tail -1` 24162306a36Sopenharmony_ci check_line_other "${line}" time "-e task-clock -m 1 sleep 10" ${base}/session-time \ 24262306a36Sopenharmony_ci ${base}/session-time/output ${base}/session-time/control ${base}/session-time/ack "0" 24362306a36Sopenharmony_ci local pid 24462306a36Sopenharmony_ci pid=`echo "${line}" | awk 'BEGIN { FS = ":" } ; { print $1 }'` 24562306a36Sopenharmony_ci 24662306a36Sopenharmony_ci # prepare new config 24762306a36Sopenharmony_ci local config_new=${config}.new 24862306a36Sopenharmony_ci cat <<EOF > ${config_new} 24962306a36Sopenharmony_ci[daemon] 25062306a36Sopenharmony_cibase=BASE 25162306a36Sopenharmony_ci 25262306a36Sopenharmony_ci[session-size] 25362306a36Sopenharmony_cirun = -e cpu-clock -m 1 sleep 10 25462306a36Sopenharmony_ci 25562306a36Sopenharmony_ci[session-time] 25662306a36Sopenharmony_cirun = -e cpu-clock -m 1 sleep 10 25762306a36Sopenharmony_ciEOF 25862306a36Sopenharmony_ci 25962306a36Sopenharmony_ci # TEST 1 - change config 26062306a36Sopenharmony_ci 26162306a36Sopenharmony_ci sed -i -e "s|BASE|${base}|" ${config_new} 26262306a36Sopenharmony_ci cp ${config_new} ${config} 26362306a36Sopenharmony_ci 26462306a36Sopenharmony_ci # wait for old session to finish 26562306a36Sopenharmony_ci tail --pid=${pid} -f /dev/null 26662306a36Sopenharmony_ci 26762306a36Sopenharmony_ci # wait for new one to start 26862306a36Sopenharmony_ci local state="FAIL" 26962306a36Sopenharmony_ci while [ "${state}" != "OK" ]; do 27062306a36Sopenharmony_ci state=`perf daemon ping --config ${config} --session time | awk '{ print $1 }'` 27162306a36Sopenharmony_ci done 27262306a36Sopenharmony_ci 27362306a36Sopenharmony_ci # check reconfigured 2nd session 27462306a36Sopenharmony_ci # pid:time:-e task-clock:base/time:base/time/output:base/time/control:base/time/ack:0 27562306a36Sopenharmony_ci local line 27662306a36Sopenharmony_ci line=`perf daemon --config ${config} -x: | head -3 | tail -1` 27762306a36Sopenharmony_ci check_line_other "${line}" time "-e cpu-clock -m 1 sleep 10" ${base}/session-time \ 27862306a36Sopenharmony_ci ${base}/session-time/output ${base}/session-time/control ${base}/session-time/ack "0" 27962306a36Sopenharmony_ci 28062306a36Sopenharmony_ci # TEST 2 - empty config 28162306a36Sopenharmony_ci 28262306a36Sopenharmony_ci local config_empty=${config}.empty 28362306a36Sopenharmony_ci cat <<EOF > ${config_empty} 28462306a36Sopenharmony_ci[daemon] 28562306a36Sopenharmony_cibase=BASE 28662306a36Sopenharmony_ciEOF 28762306a36Sopenharmony_ci 28862306a36Sopenharmony_ci # change config 28962306a36Sopenharmony_ci sed -i -e "s|BASE|${base}|" ${config_empty} 29062306a36Sopenharmony_ci cp ${config_empty} ${config} 29162306a36Sopenharmony_ci 29262306a36Sopenharmony_ci # wait for sessions to finish 29362306a36Sopenharmony_ci local state="OK" 29462306a36Sopenharmony_ci while [ "${state}" != "FAIL" ]; do 29562306a36Sopenharmony_ci state=`perf daemon ping --config ${config} --session time | awk '{ print $1 }'` 29662306a36Sopenharmony_ci done 29762306a36Sopenharmony_ci 29862306a36Sopenharmony_ci local state="OK" 29962306a36Sopenharmony_ci while [ "${state}" != "FAIL" ]; do 30062306a36Sopenharmony_ci state=`perf daemon ping --config ${config} --session size | awk '{ print $1 }'` 30162306a36Sopenharmony_ci done 30262306a36Sopenharmony_ci 30362306a36Sopenharmony_ci local one 30462306a36Sopenharmony_ci one=`perf daemon --config ${config} -x: | wc -l` 30562306a36Sopenharmony_ci 30662306a36Sopenharmony_ci if [ ${one} -ne "1" ]; then 30762306a36Sopenharmony_ci echo "FAILED: wrong list output" 30862306a36Sopenharmony_ci error=1 30962306a36Sopenharmony_ci fi 31062306a36Sopenharmony_ci 31162306a36Sopenharmony_ci # TEST 3 - config again 31262306a36Sopenharmony_ci 31362306a36Sopenharmony_ci cp ${config_new} ${config} 31462306a36Sopenharmony_ci 31562306a36Sopenharmony_ci # wait for size to start 31662306a36Sopenharmony_ci local state="FAIL" 31762306a36Sopenharmony_ci while [ "${state}" != "OK" ]; do 31862306a36Sopenharmony_ci state=`perf daemon ping --config ${config} --session size | awk '{ print $1 }'` 31962306a36Sopenharmony_ci done 32062306a36Sopenharmony_ci 32162306a36Sopenharmony_ci # wait for time to start 32262306a36Sopenharmony_ci local state="FAIL" 32362306a36Sopenharmony_ci while [ "${state}" != "OK" ]; do 32462306a36Sopenharmony_ci state=`perf daemon ping --config ${config} --session time | awk '{ print $1 }'` 32562306a36Sopenharmony_ci done 32662306a36Sopenharmony_ci 32762306a36Sopenharmony_ci # stop daemon 32862306a36Sopenharmony_ci daemon_exit ${config} 32962306a36Sopenharmony_ci 33062306a36Sopenharmony_ci rm -rf ${base} 33162306a36Sopenharmony_ci rm -f ${config} 33262306a36Sopenharmony_ci rm -f ${config_new} 33362306a36Sopenharmony_ci rm -f ${config_empty} 33462306a36Sopenharmony_ci} 33562306a36Sopenharmony_ci 33662306a36Sopenharmony_citest_stop() 33762306a36Sopenharmony_ci{ 33862306a36Sopenharmony_ci echo "test daemon stop" 33962306a36Sopenharmony_ci 34062306a36Sopenharmony_ci local config 34162306a36Sopenharmony_ci config=$(mktemp /tmp/perf.daemon.config.XXX) 34262306a36Sopenharmony_ci local base 34362306a36Sopenharmony_ci base=$(mktemp -d /tmp/perf.daemon.base.XXX) 34462306a36Sopenharmony_ci 34562306a36Sopenharmony_ci # prepare config 34662306a36Sopenharmony_ci cat <<EOF > ${config} 34762306a36Sopenharmony_ci[daemon] 34862306a36Sopenharmony_cibase=BASE 34962306a36Sopenharmony_ci 35062306a36Sopenharmony_ci[session-size] 35162306a36Sopenharmony_cirun = -e cpu-clock -m 1 sleep 10 35262306a36Sopenharmony_ci 35362306a36Sopenharmony_ci[session-time] 35462306a36Sopenharmony_cirun = -e task-clock -m 1 sleep 10 35562306a36Sopenharmony_ciEOF 35662306a36Sopenharmony_ci 35762306a36Sopenharmony_ci sed -i -e "s|BASE|${base}|" ${config} 35862306a36Sopenharmony_ci 35962306a36Sopenharmony_ci # start daemon 36062306a36Sopenharmony_ci daemon_start ${config} size 36162306a36Sopenharmony_ci 36262306a36Sopenharmony_ci local pid_size 36362306a36Sopenharmony_ci pid_size=`perf daemon --config ${config} -x: | head -2 | tail -1 | 36462306a36Sopenharmony_ci awk 'BEGIN { FS = ":" } ; { print $1 }'` 36562306a36Sopenharmony_ci local pid_time 36662306a36Sopenharmony_ci pid_time=`perf daemon --config ${config} -x: | head -3 | tail -1 | 36762306a36Sopenharmony_ci awk 'BEGIN { FS = ":" } ; { print $1 }'` 36862306a36Sopenharmony_ci 36962306a36Sopenharmony_ci # check that sessions are running 37062306a36Sopenharmony_ci if [ ! -d "/proc/${pid_size}" ]; then 37162306a36Sopenharmony_ci echo "FAILED: session size not up" 37262306a36Sopenharmony_ci fi 37362306a36Sopenharmony_ci 37462306a36Sopenharmony_ci if [ ! -d "/proc/${pid_time}" ]; then 37562306a36Sopenharmony_ci echo "FAILED: session time not up" 37662306a36Sopenharmony_ci fi 37762306a36Sopenharmony_ci 37862306a36Sopenharmony_ci # stop daemon 37962306a36Sopenharmony_ci daemon_exit ${config} 38062306a36Sopenharmony_ci 38162306a36Sopenharmony_ci # check that sessions are gone 38262306a36Sopenharmony_ci if [ -d "/proc/${pid_size}" ]; then 38362306a36Sopenharmony_ci echo "FAILED: session size still up" 38462306a36Sopenharmony_ci fi 38562306a36Sopenharmony_ci 38662306a36Sopenharmony_ci if [ -d "/proc/${pid_time}" ]; then 38762306a36Sopenharmony_ci echo "FAILED: session time still up" 38862306a36Sopenharmony_ci fi 38962306a36Sopenharmony_ci 39062306a36Sopenharmony_ci rm -rf ${base} 39162306a36Sopenharmony_ci rm -f ${config} 39262306a36Sopenharmony_ci} 39362306a36Sopenharmony_ci 39462306a36Sopenharmony_citest_signal() 39562306a36Sopenharmony_ci{ 39662306a36Sopenharmony_ci echo "test daemon signal" 39762306a36Sopenharmony_ci 39862306a36Sopenharmony_ci local config 39962306a36Sopenharmony_ci config=$(mktemp /tmp/perf.daemon.config.XXX) 40062306a36Sopenharmony_ci local base 40162306a36Sopenharmony_ci base=$(mktemp -d /tmp/perf.daemon.base.XXX) 40262306a36Sopenharmony_ci 40362306a36Sopenharmony_ci # prepare config 40462306a36Sopenharmony_ci cat <<EOF > ${config} 40562306a36Sopenharmony_ci[daemon] 40662306a36Sopenharmony_cibase=BASE 40762306a36Sopenharmony_ci 40862306a36Sopenharmony_ci[session-test] 40962306a36Sopenharmony_cirun = -e cpu-clock --switch-output -m 1 sleep 10 41062306a36Sopenharmony_ciEOF 41162306a36Sopenharmony_ci 41262306a36Sopenharmony_ci sed -i -e "s|BASE|${base}|" ${config} 41362306a36Sopenharmony_ci 41462306a36Sopenharmony_ci # start daemon 41562306a36Sopenharmony_ci daemon_start ${config} test 41662306a36Sopenharmony_ci 41762306a36Sopenharmony_ci # send 2 signals 41862306a36Sopenharmony_ci perf daemon signal --config ${config} --session test 41962306a36Sopenharmony_ci perf daemon signal --config ${config} 42062306a36Sopenharmony_ci 42162306a36Sopenharmony_ci # stop daemon 42262306a36Sopenharmony_ci daemon_exit ${config} 42362306a36Sopenharmony_ci 42462306a36Sopenharmony_ci # count is 2 perf.data for signals and 1 for perf record finished 42562306a36Sopenharmony_ci count=`ls ${base}/session-test/*perf.data* | wc -l` 42662306a36Sopenharmony_ci if [ ${count} -ne 3 ]; then 42762306a36Sopenharmony_ci error=1 42862306a36Sopenharmony_ci echo "FAILED: perf data no generated" 42962306a36Sopenharmony_ci fi 43062306a36Sopenharmony_ci 43162306a36Sopenharmony_ci rm -rf ${base} 43262306a36Sopenharmony_ci rm -f ${config} 43362306a36Sopenharmony_ci} 43462306a36Sopenharmony_ci 43562306a36Sopenharmony_citest_ping() 43662306a36Sopenharmony_ci{ 43762306a36Sopenharmony_ci echo "test daemon ping" 43862306a36Sopenharmony_ci 43962306a36Sopenharmony_ci local config 44062306a36Sopenharmony_ci config=$(mktemp /tmp/perf.daemon.config.XXX) 44162306a36Sopenharmony_ci local base 44262306a36Sopenharmony_ci base=$(mktemp -d /tmp/perf.daemon.base.XXX) 44362306a36Sopenharmony_ci 44462306a36Sopenharmony_ci # prepare config 44562306a36Sopenharmony_ci cat <<EOF > ${config} 44662306a36Sopenharmony_ci[daemon] 44762306a36Sopenharmony_cibase=BASE 44862306a36Sopenharmony_ci 44962306a36Sopenharmony_ci[session-size] 45062306a36Sopenharmony_cirun = -e cpu-clock -m 1 sleep 10 45162306a36Sopenharmony_ci 45262306a36Sopenharmony_ci[session-time] 45362306a36Sopenharmony_cirun = -e task-clock -m 1 sleep 10 45462306a36Sopenharmony_ciEOF 45562306a36Sopenharmony_ci 45662306a36Sopenharmony_ci sed -i -e "s|BASE|${base}|" ${config} 45762306a36Sopenharmony_ci 45862306a36Sopenharmony_ci # start daemon 45962306a36Sopenharmony_ci daemon_start ${config} size 46062306a36Sopenharmony_ci 46162306a36Sopenharmony_ci size=`perf daemon ping --config ${config} --session size | awk '{ print $1 }'` 46262306a36Sopenharmony_ci type=`perf daemon ping --config ${config} --session time | awk '{ print $1 }'` 46362306a36Sopenharmony_ci 46462306a36Sopenharmony_ci if [ ${size} != "OK" ] || [ ${type} != "OK" ]; then 46562306a36Sopenharmony_ci error=1 46662306a36Sopenharmony_ci echo "FAILED: daemon ping failed" 46762306a36Sopenharmony_ci fi 46862306a36Sopenharmony_ci 46962306a36Sopenharmony_ci # stop daemon 47062306a36Sopenharmony_ci daemon_exit ${config} 47162306a36Sopenharmony_ci 47262306a36Sopenharmony_ci rm -rf ${base} 47362306a36Sopenharmony_ci rm -f ${config} 47462306a36Sopenharmony_ci} 47562306a36Sopenharmony_ci 47662306a36Sopenharmony_citest_lock() 47762306a36Sopenharmony_ci{ 47862306a36Sopenharmony_ci echo "test daemon lock" 47962306a36Sopenharmony_ci 48062306a36Sopenharmony_ci local config 48162306a36Sopenharmony_ci config=$(mktemp /tmp/perf.daemon.config.XXX) 48262306a36Sopenharmony_ci local base 48362306a36Sopenharmony_ci base=$(mktemp -d /tmp/perf.daemon.base.XXX) 48462306a36Sopenharmony_ci 48562306a36Sopenharmony_ci # prepare config 48662306a36Sopenharmony_ci cat <<EOF > ${config} 48762306a36Sopenharmony_ci[daemon] 48862306a36Sopenharmony_cibase=BASE 48962306a36Sopenharmony_ci 49062306a36Sopenharmony_ci[session-size] 49162306a36Sopenharmony_cirun = -e cpu-clock -m 1 sleep 10 49262306a36Sopenharmony_ciEOF 49362306a36Sopenharmony_ci 49462306a36Sopenharmony_ci sed -i -e "s|BASE|${base}|" ${config} 49562306a36Sopenharmony_ci 49662306a36Sopenharmony_ci # start daemon 49762306a36Sopenharmony_ci daemon_start ${config} size 49862306a36Sopenharmony_ci 49962306a36Sopenharmony_ci # start second daemon over the same config/base 50062306a36Sopenharmony_ci failed=`perf daemon start --config ${config} 2>&1 | awk '{ print $1 }'` 50162306a36Sopenharmony_ci 50262306a36Sopenharmony_ci # check that we failed properly 50362306a36Sopenharmony_ci if [ ${failed} != "failed:" ]; then 50462306a36Sopenharmony_ci error=1 50562306a36Sopenharmony_ci echo "FAILED: daemon lock failed" 50662306a36Sopenharmony_ci fi 50762306a36Sopenharmony_ci 50862306a36Sopenharmony_ci # stop daemon 50962306a36Sopenharmony_ci daemon_exit ${config} 51062306a36Sopenharmony_ci 51162306a36Sopenharmony_ci rm -rf ${base} 51262306a36Sopenharmony_ci rm -f ${config} 51362306a36Sopenharmony_ci} 51462306a36Sopenharmony_ci 51562306a36Sopenharmony_cierror=0 51662306a36Sopenharmony_ci 51762306a36Sopenharmony_citest_list 51862306a36Sopenharmony_citest_reconfig 51962306a36Sopenharmony_citest_stop 52062306a36Sopenharmony_citest_signal 52162306a36Sopenharmony_citest_ping 52262306a36Sopenharmony_citest_lock 52362306a36Sopenharmony_ci 52462306a36Sopenharmony_ciexit ${error} 525