Files
mckernel/test/mcstat/arm64/run.sh
Shiratori, Takehiro 05c315857c Test "Add mcstat tool" on arm64
Change-Id: I4bf1260e999c16fe7b9c339af3833ea007277889
2018-12-07 06:24:18 +00:00

197 lines
5.0 KiB
Bash
Executable File

#!/bin/sh
## run.sh COPYRIGHT FUJITSU LIMITED 2018 ##
USELTP=0
USEOSTEST=1
MCREBOOT=0
. ../../common.sh
MCSTAT="${BIN}/mcstat"
BOOTPARAM="-c 4-7 -m 512M@0"
mcreboot
sleep 1
${MCEXEC} ${TESTMCK} -s mem_limits -n 0 -- -s $((64*1024*1024)) -c 1 -f mmap > /dev/null 2>&1
sleep 1
result=0
#################
## mcstat test ##
#################
output=`${MCSTAT} | sed -n -e 3p`
mck_mem_total=$(awk '{print $1}' <<< ${output})
mem_current=$(awk '{print $2}' <<< ${output})
mem_max=$(awk '{print $3}' <<< ${output})
tsc_system=$(awk '{print $4}' <<< ${output})
tsc_user=$(awk '{print $5}' <<< ${output})
thread_current=$(awk '{print $6}' <<< ${output})
thread_max=$(awk '{print $7}' <<< ${output})
output=`./get_rusage 0`
exp_kmem_current=`echo "${output}" | grep "memory_kmem_usage" | cut -c 21-`
exp_umem_current=`echo "${output}" | grep "memory_numa_stat\[0\]" | cut -c 23-`
exp_mem_current=$((${exp_kmem_current}+${exp_umem_current}))
exp_kmem_max=`echo "${output}" | grep "memory_kmem_max_usage" | cut -c 25-`
exp_umem_max=`echo "${output}" | grep "memory_max_usage" | cut -c 20-`
exp_mem_max=$((${exp_kmem_max}+${exp_umem_max}))
exp_tsc_system=`echo "${output}" | grep "cpuacct_stat_system" | cut -c 23-`
exp_tsc_user=`echo "${output}" | grep "cpuacct_stat_user" | cut -c 21-`
exp_thread_current=`echo "${output}" | grep "num_threads" | head -1 | cut -c 15-`
exp_thread_max=`echo "${output}" | grep "max_num_threads" | cut -c 19-`
mck_mem_total=`echo "scale=3; ${mck_mem_total} - ${mem_current}" | bc`
mck_mem_total=${mck_mem_total%.*}
if [ 502 -le ${mck_mem_total} -a ${mck_mem_total} -lt 512 ]; then
echo "TEST001: OK"
else
echo "TEST001: NG, memory total value (exp:near512MiB val:${mck_mem_total}MiB)."
result=-1
fi
exp_mem_current=$((${exp_mem_current} / 1024 / 1024))
mem_current=${mem_current%.*}
if [ ${mem_current} == ${exp_mem_current} ]; then
echo "TEST002: OK"
else
echo "TEST002: NG, memory current value (exp:${exp_mem_current}MiB val:${mem_current}MiB)"
result=-1
fi
exp_mem_max=$((${exp_mem_max} / 1024 / 1024))
mem_max=${mem_max%.*}
if [ ${mem_max} == ${exp_mem_max} ]; then
echo "TEST003: OK"
else
echo "TEST003: NG, memory max value (exp:${exp_mem_max}MiB val:${mem_current}MiB)"
result=-1
fi
exp_tsc_system=$((${exp_tsc_system}))
if [ ${tsc_system} == ${exp_tsc_system} ]; then
echo "TEST004: OK"
else
echo "TEST004: NG, tsc system value (exp:${exp_tsc_system} val:${tsc_system})"
result=-1
fi
exp_tsc_user=$((${exp_tsc_user}))
if [ ${tsc_user} == ${exp_tsc_user} ]; then
echo "TEST005: OK"
else
echo "TEST005: NG, tsc user value (exp:${exp_tsc_system} val:${tsc_system})"
result=-1
fi
exp_thread_current=$((${exp_thread_current}))
if [ ${thread_current} == ${exp_thread_current} ]; then
echo "TEST006: OK"
else
echo "TEST006: NG, current thread value (exp:${exp_thread_current} val:${thread_current})"
result=-1
fi
exp_thread_max=$((${exp_thread_max}))
if [ ${thread_max} == ${exp_thread_max} ]; then
echo "TEST007: OK"
else
echo "TEST007: NG, max thread value (exp:${exp_thread_max} val:${thread_max})"
result=-1
fi
output=`${MCSTAT} -n 1 20 | grep -c "\-\-\-\-\-\-\- memory"`
if [ ${output} == 1 ]; then
echo "TEST008: OK"
else
echo "TEST008: NG, header output frequency -n option setting."
result=-1
fi
output=`${MCSTAT} 1 20 | grep -c "\-\-\-\-\-\-\- memory"`
if [ ${output} == 2 ]; then
echo "TEST009: OK"
else
echo "TEST009: NG, header output frequency -n option not setting."
result=-1
fi
output=`${MCSTAT} -s | awk '{print toupper($0)}'`
output=`echo ${output} | cut -c 18-`
exp_status=`${IHKOSCTL} 0 get status`
if [ ${output} == ${exp_status} ]; then
echo "TEST010: OK"
else
echo "TEST010: NG, -s option get status.(exp:${exp_status} status:${output})"
result=-1
fi
${MCSTAT} -h 2>&1 | grep -q "Usage"
if [ $? == 0 ]; then
echo "TEST011: OK"
else
echo "TEST011: NG, -h option setting."
result=-1
fi
${MCSTAT} -s -h 2>&1 | grep -q "Usage"
if [ $? == 0 ]; then
echo "TEST012: OK"
else
echo "TEST012: NG, -h and other option setting."
result=-1
fi
(time ${MCSTAT} 5 2) > ./tmp.log 2>&1
output=`cat ./tmp.log | tac | sed -n -e 3p | cut -c 8-12`
output=${output%.*}
if [ ${output} == 5 ]; then
output=`cat ./tmp.log | sort | uniq -c | sort -nr | head -1 | cut -c 7-8`
if [ ${output} == 2 ]; then
echo "TEST013: OK"
else
echo "TEST013: NG, delay/count option setting. (lines mismatch)"
result=-1
fi
else
echo "TEST013: NG, delay/count option setting. (times mismatch)"
result=-1
fi
stdbuf -i0 -o0 -e0 ${MCSTAT} 1 > ./tmp.log 2>&1 &
sleep 10
kill `pidof mcstat`
output=`cat ./tmp.log | sort | uniq -c | sort -nr | head -1 | cut -c 6-7`
if [ ${output} == 11 ]; then
echo "TEST014: OK"
else
echo "TEST014: NG, delay option only setting."
result=-1
fi
${MCSTAT} -k > ./tmp.log 2>&1
if [ $? == 0 ]; then
cat ./tmp.log | grep -q "invalid option"
if [ $? == 0 ]; then
echo "TEST015: OK"
else
echo "TEST015: NG, invalid option setting. (log mismatch)"
result=-1
fi
else
echo "TEST015: NG, invalid option setting. (result mismatch)"
result=-1
fi
rm -f ./tmp.log
exit ${result}