Files
mckernel/test/user_space/swapout/swapout_copy_to_02.sh
Masamichi Takagi 502463ed9e test: Fix user_space, testing use of copy_from_user / copy_to_user
Change-Id: I2caef1ba6597f693dc4f773ef8fedbd837c45ce6
2018-11-29 19:32:04 +09:00

157 lines
6.1 KiB
Bash
Executable File

#!/bin/sh
# Functions
function reboot() {
count=`pgrep -c -f 'mcexec '`
if [ ${count} -gt 0 ]
then
echo "kill process :" ${count}
pgrep -l -f 'mcexec '
pgrep -f 'mcexec ' | xargs sudo kill -9
fi
# echo -n "mckernel stopping... "
sudo ${MCK_DIR}/sbin/mcstop+release.sh
# echo "done."
#sleep 1
echo -n "mckernel booting... " 1>&2
sudo ${MCK_DIR}/sbin/mcreboot.sh $BOOTPARAM
echo "done." 1>&2
}
function ok_out() {
echo "[OK] ${TEST_PREFIX}`printf %03d ${TEST_NUM}` $1"
(( TEST_NUM++ ))
TEST_CODE=`printf %03d ${TEST_NUM}`
}
function ng_out() {
echo "[NG] ${TEST_PREFIX}`printf %03d ${TEST_NUM}` $1"
exit 1
}
TEST_PARAM_FILE=$1
TEST_NUM=14
TEST_CODE=001
TEST_PREFIX=so_
ME=`whoami`
# read config
source ./config
mkdir -p ./result
reboot
make
#programを実行 logを保存
${MCK_DIR}/bin/mcexec ./swaptest 2 >./result/swapout_copy_to_02.log
#kmsgを保存
sudo ${MCK_DIR}/sbin/ihkosctl 0 kmsg >./result/swapout_copy_to_02.kmsg
#swapout014 arealist_preparewrite info[].start
start=`grep "arealist_preparewrite:.* info\[[0-9]\].start:" ./result/swapout_copy_to_02.kmsg | head -n 1 | sed s/"^.*copy_to_user info\[[0-9]\].start:\([0-9|a-f]*\),end:.*$"/"\1"/ `
#echo ${start}
wstart=`grep "arealist_preparewrite:.* ,went.pair\[[0-9]\]\.start:" ./result/swapout_copy_to_02.kmsg | head -n 1 | sed s/"^.* ,went.pair\[[0-9]\]\.start:\([0-9|a-f]*\),end:.*$"/"\1"/ `
#echo ${wstart}
if [ ${#start} -ne 0 -a "${start}" = "${wstart}" ]; then
text=`echo "arealist_preparewrite:info[].start matched went.pair[].start"`
ok_out "${text} :(${start})"
else
ng_out "arealist_preparewrite: does not match the value of info[].start"
fi
#swapout015 arealist_preparewrite info[].end
end=`grep "arealist_preparewrite:.* info\[[0-9]\].start:" ./result/swapout_copy_to_02.kmsg | head -n 1 | sed s/"^.*copy_to_user info\[[0-9]\].start:[0-9|a-f]*,end:\([0-9|a-f]*\),flag:.*$"/"\1"/ `
#echo ${end}
wend=`grep "arealist_preparewrite:.* ,went.pair\[[0-9]\]\.start:" ./result/swapout_copy_to_02.kmsg | head -n 1 | sed s/"^.* ,went.pair\[[0-9]\].start:[0-9|a-f]*,end:\([0-9|a-f]*\),flag:.*$"/"\1"/ `
#echo ${wend}
if [ ${#end} -ne 0 -a "${end}" = "${wend}" ]; then
text=`echo "arealist_preparewrite:info[].end matched went.pair[].end"`
ok_out "${text} :(${end})"
else
ng_out "arealist_preparewrite: does not match the value of info[].end"
fi
#swapout016 arealist_preparewrite info[].flag
flag=`grep "arealist_preparewrite:.* info\[[0-9]\].start:" ./result/swapout_copy_to_02.kmsg | head -n 1 | sed s/"^.*copy_to_user info\[[0-9]\].start:[0-9a-f]*,.*flag:\([0-9a-f]*\) ,.*$"/"\1"/ `
#echo ${flag}
wflag=`grep "arealist_preparewrite:.* ,went.pair\[[0-9]\]\.start:" ./result/swapout_copy_to_02.kmsg | head -n 1 | sed s/"^.* ,went.pair\[[0-9]\].start:[0-9a-f]*,.*flag:\([0-9a-f]*\)$"/"\1"/ `
#echo ${wflag}
if [ ${#flag} -ne 0 -a "${flag}" = "${wflag}" ]; then
text=`echo "arealist_preparewrite:info[].flag matched went.pair[].flag"`
ok_out "${text} :(${flag})"
else
ng_out "arealist_preparewrite: does not match the value of info[].flag"
fi
#swapout017 arealist_preparewrite info[].pos
pos=`grep "arealist_preparewrite:.* info\[[0-9]\].pos:" ./result/swapout_copy_to_02.kmsg | head -n 1 | sed s/"^.*copy_to_user info\[[0-9]\].pos:\([0-9a-f]*\),pos:[0-9a-f]*$"/"\1"/ `
#echo ${pos}
wpos=`grep "arealist_preparewrite:.* info\[[0-9]\].pos:" ./result/swapout_copy_to_02.kmsg | head -n 1 | sed s/"^.*copy_to_user info\[[0-9]\].pos:[0-9a-f]*,pos:\([0-9a-f]*\)$"/"\1"/ `
#echo ${wpos}
if [ ${#pos} -ne 0 -a "${pos}" = "${wpos}" ]; then
text=`echo "arealist_preparewrite:info[].pos matched went.pair[].pos"`
ok_out "${text} :(${pos})"
else
ng_out "arealist_preparewrite: does not match the value of info[].pos"
fi
#swapout018 pager_open swapfname
fname=`grep "pager_open: copy_to_user si->udata_buf:" ./result/swapout_copy_to_02.kmsg | head -n 1 | sed s/"^.* si->udata_buf:\(.*\),fname:.*$"/"\1"/ `
#echo ${fname}
wfname=`grep "pager_open: copy_to_user si->udata_buf:" ./result/swapout_copy_to_02.kmsg | head -n 1 | sed s/"^.* si->udata_buf:.*,fname:\(.*\)$"/"\1"/ `
#echo ${wfname}
if [ ${#fname} -ne 0 -a "${fname}" = "${wfname}" ]; then
text=`echo "pager_open:swapfname matched si-udate_buf"`
ok_out "${text} :(${fname})"
else
ng_out "pager_open: does not match the value of swapfname"
fi
#swapout019 pager_unlink swapfname
fname=`grep "pager_unlink: copy_to_user si->udata_buf:" ./result/swapout_copy_to_02.kmsg | head -n 1 | sed s/"^.* si->udata_buf:\(.*\),fname:.*$"/"\1"/ `
#echo ${fname}
wfname=`grep "pager_unlink: copy_to_user si->udata_buf:" ./result/swapout_copy_to_02.kmsg | head -n 1 | sed s/"^.* si->udata_buf:.*,fname:\(.*\)$"/"\1"/ `
#echo ${wfname}
if [ ${#fname} -ne 0 -a "${fname}" = "${wfname}" ]; then
text=`echo "pager_unlink:swapfname matched si-udate_buf"`
ok_out "${text} :(${fname})"
else
ng_out "pager_unlink: does not match the value of swapfname"
fi
#swapout020 arealist_get user_space initialize
count=`grep "arealist_get:" ./result/swapout_copy_to_02.kmsg | head -n 1 | sed s/"^.*tmp->count:\([0-9]\) area.*$"/"\1"/ `
#echo ${count}
if [ "${count}" = "0" ]; then
text=`echo "arealist_get:arealist is inistialized."`
ok_out "${text} :(${count})"
else
ng_out "arealist_get: arealist was not initialized"
fi
#swapout021 prealist_get arealist->next
next=`grep "arealist_get: copy_to_user" ./result/swapout_copy_to_02.kmsg | head -n 1 | sed s/"^.* area->tail->next \([0-9a-f]*\):\([0-9a-f]*\)$"/"\1"/ `
#echo ${next}
wnext=`grep "arealist_get: copy_to_user" ./result/swapout_copy_to_02.kmsg | head -n 1 | sed s/"^.* area->tail->next \([0-9a-f]*\):\([0-9a-f]*\)$"/"\2"/ `
#echo ${wnext}
if [ ${#next} -ne 0 -a "${next}" = "${wnext}" ]; then
text=`echo "arealist_get: area->tail->next is matched"`
ok_out "${text} :(${next})"
else
ng_out "arealist_get: does not match the value of area->tail->next"
fi
#swapout022 arealist_alloc user_space initialize
count=`grep "arealist_alloc:" ./result/swapout_copy_to_02.kmsg | head -n 1 | sed s/"^.*areap->head->count:\([0-9]\)$"/"\1"/ `
#echo ${count}
if [ "${count}" = "0" ]; then
text=`echo "arealist_alloc:arealist is inistialized."`
ok_out "${text} :(${count})"
else
ng_out "arealist_get: arealist was not initialized"
fi