3 # This test was used in a set of CMD3 tests (cmd3-4 test).
5 LUSTRE=${LUSTRE:-$(dirname $0)/..}
6 . $LUSTRE/tests/test-framework.sh
9 assert_env CLIENTS MDSRATE SINGLECLIENT MPIRUN
11 BASEDIR=$MOUNT/mdsrate
14 # set NUM_FILES=0 to force TIME_PERIOD work
15 NUM_FILES=${NUM_FILES:-1000000}
16 TIME_PERIOD=${TIME_PERIOD:-600} # seconds
18 # Local test variables
19 TESTDIR_SINGLE="${BASEDIR}/single"
20 TESTDIR_MULTI="${BASEDIR}/multi"
22 LOG=${TESTSUITELOG:-$TMP/$(basename $0 .sh).log}
24 NODES_TO_USE=${NODES_TO_USE:-$CLIENTS}
25 NUM_CLIENTS=$(get_node_count ${NODES_TO_USE//,/ })
27 [ ! -x ${MDSRATE} ] && error "${MDSRATE} not built."
29 log "===== $0 ====== "
31 check_and_setup_lustre
35 mdsrate_STRIPEPARAMS=${mdsrate_STRIPEPARAMS:-${fs_STRIPEPARAMS:-"-c -1"}}
36 setstripe_getstripe $BASEDIR $mdsrate_STRIPEPARAMS
38 IFree=$(mdsrate_inodes_available)
39 if [ $IFree -lt $NUM_FILES ]; then
43 generate_machine_file $NODES_TO_USE $MACHINEFILE || error "can not generate machinefile"
45 # Make sure we start with a clean slate
48 if [ -n "$NOSINGLE" ]; then
49 echo "NO Test for creates for a single client."
51 # We can use np = $NUM_CLIENTS to speed up the cleanup
52 mdsrate_cleanup $NUM_CLIENTS $MACHINEFILE $NUM_FILES $TESTDIR_SINGLE 'f%%d' --ignore
54 log "===== $0 ### 1 NODE CREATE ###"
56 COMMAND="${MDSRATE} ${MDSRATE_DEBUG} --create --time ${TIME_PERIOD}
57 --nfiles ${NUM_FILES} --dir ${TESTDIR_SINGLE} --filefmt 'f%%d'"
59 mpi_run ${MACHINEFILE_OPTION} ${MACHINEFILE} -np 1 ${COMMAND} |
62 if [ ${PIPESTATUS[0]} != 0 ]; then
63 [ -f $LOG ] && sed -e "s/^/log: /" $LOG
64 error_noexit "mdsrate create on single client failed, aborting"
65 mdsrate_cleanup $NUM_CLIENTS $MACHINEFILE $NUM_FILES \
66 $TESTDIR_SINGLE 'f%%d' --ignore
70 log "===== $0 ### 1 NODE UNLINK ###"
72 COMMAND="${MDSRATE} ${MDSRATE_DEBUG} --unlink
73 --nfiles ${NUM_FILES} --dir ${TESTDIR_SINGLE} --filefmt 'f%%d'"
75 mpi_run ${MACHINEFILE_OPTION} ${MACHINEFILE} -np 1 ${COMMAND} | tee ${LOG}
77 if [ ${PIPESTATUS[0]} != 0 ]; then
78 [ -f $LOG ] && sed -e "s/^/log: /" $LOG
79 error "mdsrate unlink on a single client failed, aborting"
85 IFree=$(mdsrate_inodes_available)
86 if [ $IFree -lt $NUM_FILES ]; then
90 [ $NUM_CLIENTS -eq 1 ] && NOMULTI=yes
91 if [ -n "$NOMULTI" ]; then
92 echo "NO test for create on multiple nodes."
94 mdsrate_cleanup $NUM_CLIENTS $MACHINEFILE $NUM_FILES $TESTDIR_MULTI 'f%%d' --ignore
96 log "===== $0 ### $NUM_CLIENTS NODES CREATE ###"
98 COMMAND="${MDSRATE} ${MDSRATE_DEBUG} --create --time ${TIME_PERIOD}
99 --nfiles $NUM_FILES --dir ${TESTDIR_MULTI} --filefmt 'f%%d'"
101 mpi_run ${MACHINEFILE_OPTION} ${MACHINEFILE} -np ${NUM_CLIENTS} \
102 ${COMMAND} | tee ${LOG}
104 if [ ${PIPESTATUS[0]} != 0 ]; then
105 [ -f $LOG ] && sed -e "s/^/log: /" $LOG
106 error_noexit "mdsrate create on multiple nodes failed, aborting"
107 mdsrate_cleanup $NUM_CLIENTS $MACHINEFILE $NUM_FILES \
108 $TESTDIR_MULTI 'f%%d' --ignore
112 log "===== $0 ### $NUM_CLIENTS NODES UNLINK ###"
114 COMMAND="${MDSRATE} ${MDSRATE_DEBUG} --unlink
115 --nfiles ${NUM_FILES} --dir ${TESTDIR_MULTI} --filefmt 'f%%d'"
117 mpi_run ${MACHINEFILE_OPTION} ${MACHINEFILE} -np ${NUM_CLIENTS} \
118 ${COMMAND} | tee ${LOG}
120 if [ ${PIPESTATUS[0]} != 0 ]; then
121 [ -f $LOG ] && sed -e "s/^/log: /" $LOG
122 error "mdsrate unlink on multiple nodes failed, aborting"
128 rmdir $BASEDIR || true
130 check_and_cleanup_lustre