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
33 MDSRATE_ENABLE_DNE=${MDSRATE_ENABLE_DNE:-false}
34 if $MDSRATE_ENABLE_DNE; then
36 mdtcount_opt="--mdtcount $MDSCOUNT"
44 mdsrate_STRIPEPARAMS=${mdsrate_STRIPEPARAMS:-${fs_STRIPEPARAMS:-"-c -1"}}
45 setstripe_getstripe $BASEDIR $mdsrate_STRIPEPARAMS
47 IFree=$(mdsrate_inodes_available)
48 if [ $IFree -lt $NUM_FILES ]; then
52 generate_machine_file $NODES_TO_USE $MACHINEFILE ||
53 error "can not generate machinefile"
55 p="$TMP/$TESTSUITE-$TESTNAME.parameters"
56 save_lustre_params $(get_facets MDS) mdt.*.enable_remote_dir_gid > $p
57 do_nodes $(comma_list $(mdts_nodes)) \
58 $LCTL set_param mdt.*.enable_remote_dir_gid=-1
60 # Make sure we start with a clean slate
63 if [ -n "$NOSINGLE" ]; then
64 echo "NO Test for creates for a single client."
66 # We can use np = $NUM_CLIENTS to speed up the cleanup
67 mdsrate_cleanup $NUM_CLIENTS $MACHINEFILE $NUM_FILES $TESTDIR_SINGLE 'f%%d' --ignore
69 log "===== $0 ### 1 NODE CREATE ###"
71 COMMAND="${MDSRATE} ${MDSRATE_DEBUG} --create --time ${TIME_PERIOD}
72 --nfiles ${NUM_FILES} --dir ${TESTDIR_SINGLE} --filefmt 'f%%d'
73 $mdtcount_opt $debug_opt"
75 mpi_run ${MACHINEFILE_OPTION} ${MACHINEFILE} -np 1 ${COMMAND} |
78 if [ ${PIPESTATUS[0]} != 0 ]; then
79 [ -f $LOG ] && sed -e "s/^/log: /" $LOG
80 error_noexit "mdsrate create on single client failed, aborting"
81 restore_lustre_params < $p
82 mdsrate_cleanup $NUM_CLIENTS $MACHINEFILE $NUM_FILES \
83 $TESTDIR_SINGLE 'f%%d' --ignore
87 log "===== $0 ### 1 NODE UNLINK ###"
89 COMMAND="${MDSRATE} ${MDSRATE_DEBUG} --unlink
90 --nfiles ${NUM_FILES} --dir ${TESTDIR_SINGLE} --filefmt 'f%%d'"
92 mpi_run ${MACHINEFILE_OPTION} ${MACHINEFILE} -np 1 ${COMMAND} | tee ${LOG}
94 if [ ${PIPESTATUS[0]} != 0 ]; then
95 [ -f $LOG ] && sed -e "s/^/log: /" $LOG
96 error "mdsrate unlink on a single client failed, aborting"
102 IFree=$(mdsrate_inodes_available)
103 if [ $IFree -lt $NUM_FILES ]; then
107 [ $NUM_CLIENTS -eq 1 ] && NOMULTI=yes
108 if [ -n "$NOMULTI" ]; then
109 echo "NO test for create on multiple nodes."
111 mdsrate_cleanup $NUM_CLIENTS $MACHINEFILE $NUM_FILES $TESTDIR_MULTI 'f%%d' --ignore
113 log "===== $0 ### $NUM_CLIENTS NODES CREATE ###"
115 COMMAND="${MDSRATE} ${MDSRATE_DEBUG} --create --time ${TIME_PERIOD}
116 --nfiles $NUM_FILES --dir ${TESTDIR_MULTI} --filefmt 'f%%d'"
118 mpi_run ${MACHINEFILE_OPTION} ${MACHINEFILE} -np ${NUM_CLIENTS} \
119 ${COMMAND} | tee ${LOG}
121 if [ ${PIPESTATUS[0]} != 0 ]; then
122 [ -f $LOG ] && sed -e "s/^/log: /" $LOG
123 error_noexit "mdsrate create on multiple nodes failed, aborting"
124 restore_lustre_params < $p
125 mdsrate_cleanup $NUM_CLIENTS $MACHINEFILE $NUM_FILES \
126 $TESTDIR_MULTI 'f%%d' --ignore
130 log "===== $0 ### $NUM_CLIENTS NODES UNLINK ###"
132 COMMAND="${MDSRATE} ${MDSRATE_DEBUG} --unlink
133 --nfiles ${NUM_FILES} --dir ${TESTDIR_MULTI} --filefmt 'f%%d'"
135 mpi_run ${MACHINEFILE_OPTION} ${MACHINEFILE} -np ${NUM_CLIENTS} \
136 ${COMMAND} | tee ${LOG}
138 if [ ${PIPESTATUS[0]} != 0 ]; then
139 [ -f $LOG ] && sed -e "s/^/log: /" $LOG
140 error "mdsrate unlink on multiple nodes failed, aborting"
146 restore_lustre_params < $p
147 rmdir $BASEDIR || true
149 check_and_cleanup_lustre