Add qlmpi and swap to mckernel (This is rebase commit for merging to development)
This commit is contained in:
committed by
Ken Sato
parent
74f15783d2
commit
236a072311
210
test/qlmpi/qlmpi_testsuite/ql_irreg.sh
Executable file
210
test/qlmpi/qlmpi_testsuite/ql_irreg.sh
Executable file
@ -0,0 +1,210 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Functions
|
||||
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
|
||||
}
|
||||
|
||||
function ng_out_cont {
|
||||
echo "[NG] ${TEST_PREFIX}`printf %03d ${TEST_NUM}` $1"
|
||||
(( TEST_NUM++ ))
|
||||
TEST_CODE=`printf %03d ${TEST_NUM}`
|
||||
}
|
||||
|
||||
if [ $# -lt 1 ]; then
|
||||
echo "too few arguments."
|
||||
echo "usage: `basename $0` <param_file>"
|
||||
fi
|
||||
|
||||
TEST_PARAM_FILE=$1
|
||||
TEST_NUM=1
|
||||
TEST_CODE=001
|
||||
|
||||
ME=`whoami`
|
||||
|
||||
# read config
|
||||
source ./config
|
||||
|
||||
# read test param
|
||||
source ${TEST_PARAM_FILE}
|
||||
|
||||
# make machinefile
|
||||
mkdir ./machinefiles &> /dev/null
|
||||
MFILE=./machinefiles/mfile_${TEST_PREFIX}
|
||||
echo ${MASTER}:${PROC_PER_NODE} > ${MFILE}
|
||||
for slave in ${SLAVE}
|
||||
do
|
||||
echo ${slave}:${PROC_PER_NODE} >> ${MFILE}
|
||||
done
|
||||
|
||||
PROC_NUM=`expr ${PROC_PER_NODE} \* ${MPI_NODE_NUM}`
|
||||
|
||||
# read machinefile
|
||||
declare -a node_arry
|
||||
while read line
|
||||
do
|
||||
node_arry+=(${line%:*})
|
||||
done < ${MFILE}
|
||||
MASTER=${node_arry[0]}
|
||||
|
||||
# make result directory
|
||||
RESULT_DIR=./result/${TEST_PREFIX}
|
||||
mkdir -p ${RESULT_DIR}
|
||||
|
||||
RANK_MAX=`expr ${PROC_NUM} - 1`
|
||||
|
||||
# Log files
|
||||
start_1st_A_log=${RESULT_DIR}/exec_1st_A.log
|
||||
start_1st_B_log=${RESULT_DIR}/exec_1st_B.log
|
||||
start_1st_C_log=${RESULT_DIR}/exec_1st_C.log
|
||||
|
||||
start_2nd_A_log=${RESULT_DIR}/exec_2nd_A.log
|
||||
start_2nd_B_log=${RESULT_DIR}/exec_2nd_B.log
|
||||
start_2nd_C_log=${RESULT_DIR}/exec_2nd_C.log
|
||||
|
||||
finalize_A_log=${RESULT_DIR}/finalize_A.log
|
||||
finalize_B_log=${RESULT_DIR}/finalize_B.log
|
||||
finalize_C_log=${RESULT_DIR}/finalize_C.log
|
||||
|
||||
# Arguments
|
||||
args_1st_A="1234 hoge 02hoge"
|
||||
args_2nd_A="foo 99bar test"
|
||||
|
||||
# Env
|
||||
envs_1st_A="1st_exec_A"
|
||||
envs_2nd_A="This_is_2nd_exec_A"
|
||||
|
||||
BK_PATH=${PATH}
|
||||
|
||||
### テスト開始時点でql_serverとテスト用MPIプログラムが各ノードで実行されていない
|
||||
for node in ${node_arry[@]}
|
||||
do
|
||||
cnt=`ssh $node "pgrep -u ${ME} -c 'ql_(server|talker)'"`
|
||||
if [ ${cnt} -gt 0 ]; then
|
||||
ng_out "ql_server is running on ${node}"
|
||||
fi
|
||||
|
||||
cnt=`ssh $node "pgrep -u ${ME} -c 'mpiexec'"`
|
||||
if [ ${cnt} -gt 0 ]; then
|
||||
ng_out "other MPI program is running on ${node}"
|
||||
fi
|
||||
done
|
||||
|
||||
### machinefile is not specified
|
||||
env QL_TEST=${envs_1st_A} ${START} -n ${PROC_NUM} ${USR_PRG_A} ${args_1st_A} > ${RESULT_DIR}/${TEST_CODE}.log
|
||||
rc=$?
|
||||
if [ ${rc} -eq 0 ]; then
|
||||
ng_out_cont "machinefile is not specified, but ql_mpiexec_start returns 0"
|
||||
else
|
||||
ok_out "machinefile is not specified, so ql_mpiexec_start returns not 0. returns ${rc}"
|
||||
fi
|
||||
|
||||
### MPI program is not specified
|
||||
env QL_TEST=${envs_1st_A} ${START} -n ${PROC_NUM} > ${RESULT_DIR}/${TEST_CODE}.log
|
||||
rc=$?
|
||||
if [ ${rc} -eq 0 ]; then
|
||||
ng_out_cont "MPI program is not specified, but ql_mpiexec_start returns 0"
|
||||
else
|
||||
ok_out "MPI program is not specified, so ql_mpiexec_start returns not 0. returns ${rc}"
|
||||
fi
|
||||
|
||||
### specified machinefile does not exist
|
||||
env QL_TEST=${envs_1st_A} ${START} -machinefile dose_not_exist -n ${PROC_NUM} ${USR_PRG_A} ${args_1st_A} > ${RESULT_DIR}/${TEST_CODE}.log
|
||||
rc=$?
|
||||
if [ ${rc} -eq 0 ]; then
|
||||
ng_out_cont "specified machinefile does not exist, but ql_mpiexec_start returns 0"
|
||||
else
|
||||
ok_out "specified machinefile does not exist, so ql_mpiexec_start returns not 0. returns ${rc}"
|
||||
fi
|
||||
|
||||
### specified MPI program does not exist
|
||||
env QL_TEST=${envs_1st_A} ${START} -machinefile ${MFILE} -n ${PROC_NUM} dose_not_exist ${args_1st_A} > ${RESULT_DIR}/${TEST_CODE}.log
|
||||
rc=$?
|
||||
if [ ${rc} -eq 0 ]; then
|
||||
ng_out_cont "specified MPI program does not exist, but ql_mpiexec_start returns 0"
|
||||
else
|
||||
ok_out "specified MPI program does not exist, so ql_mpiexec_start returns not 0. returns ${rc}"
|
||||
fi
|
||||
|
||||
### mpiexec is not found
|
||||
PATH="/usr/bin"
|
||||
env QL_TEST=${envs_1st_A} ${START} -machinefile ${MFILE} -n ${PROC_NUM} ${USR_PRG_A} ${args_1st_A} > ${RESULT_DIR}/${TEST_CODE}.log
|
||||
rc=$?
|
||||
if [ ${rc} -eq 0 ]; then
|
||||
ng_out_cont "mpiexec is not found, but ql_mpiexec_start returns 0"
|
||||
else
|
||||
ok_out "mpiexec is not found, so ql_mpiexec_start returns not 0. returns ${rc}"
|
||||
fi
|
||||
PATH=${BK_PATH}
|
||||
|
||||
### mpiexec abort
|
||||
PATH="./util:/usr/bin"
|
||||
env QL_TEST=${envs_1st_A} ${START} -machinefile ${MFILE} -n ${PROC_NUM} ${USR_PRG_A} ${args_1st_A} > ${RESULT_DIR}/${TEST_CODE}.log
|
||||
rc=$?
|
||||
if [ ${rc} -eq 0 ]; then
|
||||
ng_out_cont "mpiexec abort, but ql_mpiexec_start returns 0"
|
||||
else
|
||||
ok_out "mpiexec abort, so ql_mpiexec_start returns not 0. returns ${rc}"
|
||||
fi
|
||||
PATH=${BK_PATH}
|
||||
|
||||
### machinefile is not specified
|
||||
env QL_TEST=${envs_1st_A} ${START} -machinefile ${MFILE} -n ${PROC_NUM} ${USR_PRG_A} ${args_1st_A} > ${RESULT_DIR}/${TEST_CODE}.log
|
||||
|
||||
${FINALIZE} -n ${PROC_NUM} ${USR_PRG_A} >> ${RESULT_DIR}/${TEST_CODE}.log
|
||||
rc=$?
|
||||
if [ ${rc} -eq 0 ]; then
|
||||
ng_out_cont "machinefile is not specified, but ql_mpiexec_finalize returns 0"
|
||||
else
|
||||
ok_out "machinefile is not specified, so ql_mpiexec_finalize returns not 0. returns ${rc}"
|
||||
fi
|
||||
|
||||
### MPI program is not specified
|
||||
env QL_TEST=${envs_1st_A} ${START} -machinefile ${MFILE} -n ${PROC_NUM} ${USR_PRG_A} ${args_1st_A} > ${RESULT_DIR}/${TEST_CODE}.log
|
||||
${FINALIZE} -machinefile ${MFILE} -n ${PROC_NUM} >> ${RESULT_DIR}/${TEST_CODE}.log
|
||||
rc=$?
|
||||
if [ ${rc} -eq 0 ]; then
|
||||
ng_out_cont "MPI program is not specified, but ql_mpiexec_finalize returns 0"
|
||||
else
|
||||
ok_out "MPI program is not specified, so ql_mpiexec_finalize returns not 0. returns ${rc}"
|
||||
fi
|
||||
|
||||
### specified machinefile is wrong
|
||||
env QL_TEST=${envs_1st_A} ${START} -machinefile ${MFILE} -n ${PROC_NUM} ${USR_PRG_A} ${args_1st_A} > ${RESULT_DIR}/${TEST_CODE}.log
|
||||
${FINALIZE} -machinefile ./util/wrong_mfile -n ${PROC_NUM} ${USR_PRG_A} >> ${RESULT_DIR}/${TEST_CODE}.log
|
||||
rc=$?
|
||||
if [ ${rc} -eq 0 ]; then
|
||||
ng_out_cont "specified machinefile is wrong, but ql_mpiexec_finalize returns 0"
|
||||
else
|
||||
ok_out "specified machinefile is wrong, so ql_mpiexec_finalize returns not 0. returns ${rc}"
|
||||
fi
|
||||
|
||||
### specified MPI program name is wrong
|
||||
env QL_TEST=${envs_1st_A} ${START} -machinefile ${MFILE} -n ${PROC_NUM} ${USR_PRG_A} ${args_1st_A} > ${RESULT_DIR}/${TEST_CODE}.log
|
||||
${FINALIZE} -machinefile ${MFILE} -n ${PROC_NUM} ${USR_PRG_B} >> ${RESULT_DIR}/${TEST_CODE}.log
|
||||
rc=$?
|
||||
if [ ${rc} -eq 0 ]; then
|
||||
ng_out_cont "specified MPI program name is wrong, but ql_mpiexec_finalize returns 0"
|
||||
else
|
||||
ok_out "specified MPI program name is wrong, so ql_mpiexec_finalize returns not 0. returns ${rc}"
|
||||
fi
|
||||
|
||||
${FINALIZE} -machinefile ${MFILE} -n ${PROC_NUM} ${USR_PRG_A} > /dev/null
|
||||
|
||||
### one of MPI process aborts
|
||||
abort_rank=`expr ${PROC_NUM} - 1`
|
||||
env QL_TEST=${envs_1st_A} ${START} -machinefile ${MFILE} -n ${PROC_NUM} ${USR_PRG_IRREG} 0 > ${RESULT_DIR}/${TEST_CODE}.log
|
||||
rc=$?
|
||||
if [ ${rc} -eq 0 ]; then
|
||||
ng_out_cont "one of MPI processes aborts, but ql_mpiexec_start returns 0"
|
||||
else
|
||||
ok_out "one of MPI processes aborts, so ql_mpiexec_start returns not 0. returns ${rc}"
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user