#!/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 ${MCMOD_DIR}/sbin/mcstop+release.sh # echo "done." #sleep 1 echo -n "mckernel booting... " 1>&2 sudo ${MCMOD_DIR}/sbin/mcreboot.sh $* 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=7 TEST_CODE=001 TEST_PREFIX=so_ ME=`whoami` # read config source ./config MCPATH=${MCMOD_DIR} mkdir -p result reboot #programを実行 logを保存 ${MCPATH}/bin/mcexec ./swaptest 2 >./result/swapout_copy_to_01.log #kmsgを保存 sudo ${MCPATH}/sbin/ihkosctl 0 kmsg >./result/swapout_copy_to_01.kmsg #swapout007 arealist_update i and count check. arealist_i=`grep "arealist_update" ./result/swapout_copy_to_01.kmsg | head -n 1 | sed s/"^.*copy_to_user i:\([0-9a-f]*\),.*$"/"\1"/ ` #echo ${arearlist_i} arealist_count=`grep "arealist_update" ./result/swapout_copy_to_01.kmsg | head -n 1 | sed s/"^.*count:\([0-9a-f]*\).*$"/"\1"/ ` #echo ${arearlist_count} if [ ${#arealist_i} -ne 0 -a ${arealist_i} = ${arealist_count} ]; then text=`echo "arealist_update:variable i matched rea->tail->count"` ok_out "${text} :(${arealist_i})" else ng_out "arealist_update: The value of count does not match the value of i." fi #swapout008 arealist_add addr->start and waddr.start check. addr=`grep "arealist_add" ./result/swapout_copy_to_01.kmsg | head -n 1 | sed s/"^.*copy_to_user addr->start:\([0-9a-f]*\),.*$"/"\1"/ ` #echo ${addr} waddr=`grep "arealist_add" ./result/swapout_copy_to_01.kmsg | head -n 1 | sed s/"^.*waddr.start:\([0-9a-f]*\)$"/"\1"/ ` #echo ${waddr} if [ ${#addr} -ne 0 -a ${addr} = ${waddr} ]; then text=`echo "arealist_add:addr->start matched waddr.start"` ok_out "${text} :(${waddr})" else ng_out "arealist_add: The value of addr->start does not match the value of wsddr.start." fi #swapout009 do_pageout si->swapfname and si->udata_buf check. udata_buf=`grep "do_pageout" ./result/swapout_copy_to_01.kmsg | head -n 1 | sed s/"^.*copy_to_user si->udata_buf:\(.*\),.*$"/"\1"/ ` #echo ${udata_buf} swapfname=`grep "do_pageout" ./result/swapout_copy_to_01.kmsg | head -n 1 | sed s/"^.*si->swapfname:\(.*\)$"/"\1"/ ` #echo ${swapfname} if [ ${#udata_buf} -ne 0 -a "${udata_buf}" = "${swapfname}" ]; then text=`echo "do_pageout:variable si->udata_buf matched si->swapfname"` ok_out "${text} :(${udata_buf})" else ng_out "do_pageout: The value of si->udata_buf does not match the value of si->swapfname." fi #swapout010 do_pageout si->swphdr->magic magic=`grep "do_pageout:.* si->swphdr->magic" ./result/swapout_copy_to_01.kmsg | head -n 1 | sed s/"^.*copy_to_user si->swphdr->magic:\(.*\),si->swphdr->version:.*$"/"\1"/ ` #echo ${magic} if [ "${magic}" = "McKernel swap" ]; then text=`echo "do_pageout:si->swphdr->magic is McKernel swap"` ok_out "${text} :(${magic})" else ng_out "do_pageout: does not match the value of si->swphdr->magic." fi #swapout011 do_pageout si->swphdr->version version=`grep "do_pageout:.*,si->swphdr->version" ./result/swapout_copy_to_01.kmsg | head -n 1 | sed s/"^.*copy_to_user .*,si->swphdr->version:\(.*\),si->swphdr->count_sarea:.*$"/"\1"/ ` #echo ${version} if [ "${version}" = "0.9.0" ]; then text=`echo "do_pageout:si->swphdr->version is 0.9.0"` ok_out "${text} :(${version})" else ng_out "do_pageout: does not match the value of si->swphdr->version." fi #swapout012 d_pageout si->swphdr->count_sarea sarea=`grep "do_pageout:.*,si->swphdr->count_sarea" ./result/swapout_copy_to_01.kmsg | head -n 1 | sed s/"^.*copy_to_user .*,si->swphdr->count_sarea:\([0-9|a-f]*\),.*$"/"\1"/ ` echo ${sarea} count=`grep "do_pageout:.*,si->swphdr->count_sarea" ./result/swapout_copy_to_01.kmsg | head -n 1 | sed s/"^.*si->swap_area.count:\([0-9|a-f]*\),.*$"/"\1"/ ` #echo ${count} if [ ${#sarea} -ne 0 -a ${sarea} = ${count} ]; then text=`echo "do_pageout:variable count_sarea matched swap_area.count"` ok_out "${text} :(${sarea})" else ng_out "do_pageout: The value of count_sarea does not match the value of swap_area.count." fi #swapout013 d_pageout si->swphdr->count_marea marea=`grep "do_pageout:.*si->swphdr->count_marea" ./result/swapout_copy_to_01.kmsg | head -n 1 | sed s/"^.*copy_to_user .*,si->swphdr->count_marea:\([0-9|a-f]*\),.*$"/"\1"/ ` #echo ${marea} count=`grep "do_pageout:.*si->mlock_area.count" ./result/swapout_copy_to_01.kmsg | head -n 1 | sed s/"^.*si->mlock_area.count:\([0-9|a-f]*\)$"/"\1"/ ` #echo ${count} if [ ${#marea} -ne 0 -a ${marea} = ${count} ]; then text=`echo "do_pageout:variable count_marea matched mlock_area.count"` ok_out "${text} :(${marea})" else ng_out "do_pageout: The value of count_marea does not match the value of mlock_area.count." fi