Whamcloud - gitweb
LU-10059 tests: sanityn 32a error messages
[fs/lustre-release.git] / lustre / tests / mdsrate-create-large.sh
1 #!/bin/bash
2 #
3 # This test was used in a set of CMD3 tests (cmd3-4 test).
4
5 LUSTRE=${LUSTRE:-$(dirname $0)/..}
6 . $LUSTRE/tests/test-framework.sh
7 init_test_env $@
8
9 assert_env CLIENTS MDSRATE SINGLECLIENT MPIRUN
10
11 BASEDIR=$MOUNT/mdsrate
12
13 # Requirements
14 # set NUM_FILES=0 to force TIME_PERIOD work
15 NUM_FILES=${NUM_FILES:-1000000}
16 TIME_PERIOD=${TIME_PERIOD:-600}                        # seconds
17
18 # Local test variables
19 TESTDIR_SINGLE="${BASEDIR}/single"
20 TESTDIR_MULTI="${BASEDIR}/multi"
21
22 LOG=${TESTSUITELOG:-$TMP/$(basename $0 .sh).log}
23 CLIENT=$SINGLECLIENT
24 NODES_TO_USE=${NODES_TO_USE:-$CLIENTS}
25 NUM_CLIENTS=$(get_node_count ${NODES_TO_USE//,/ })
26
27 [ ! -x ${MDSRATE} ] && error "${MDSRATE} not built."
28
29 log "===== $0 ====== "
30
31 check_and_setup_lustre
32
33 mkdir -p $BASEDIR
34 chmod 0777 $BASEDIR
35 mdsrate_STRIPEPARAMS=${mdsrate_STRIPEPARAMS:-${fs_STRIPEPARAMS:-"-c -1"}}
36 setstripe_getstripe $BASEDIR $mdsrate_STRIPEPARAMS
37
38 IFree=$(mdsrate_inodes_available)
39 if [ $IFree -lt $NUM_FILES ]; then
40     NUM_FILES=$IFree
41 fi
42
43 generate_machine_file $NODES_TO_USE $MACHINEFILE || error "can not generate machinefile"
44
45 # Make sure we start with a clean slate
46 rm -f ${LOG}
47
48 if [ -n "$NOSINGLE" ]; then
49     echo "NO Test for creates for a single client."
50 else
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
53
54     log "===== $0 ### 1 NODE CREATE ###"
55
56         COMMAND="${MDSRATE} ${MDSRATE_DEBUG} --create --time ${TIME_PERIOD}
57                 --nfiles ${NUM_FILES} --dir ${TESTDIR_SINGLE} --filefmt 'f%%d'"
58         echo "+ ${COMMAND}"
59         mpi_run ${MACHINEFILE_OPTION} ${MACHINEFILE} -np 1 ${COMMAND} |
60                 tee ${LOG}
61
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
67                 exit 1
68         fi
69
70     log "===== $0 ### 1 NODE UNLINK ###"
71
72     COMMAND="${MDSRATE} ${MDSRATE_DEBUG} --unlink
73                 --nfiles ${NUM_FILES} --dir ${TESTDIR_SINGLE} --filefmt 'f%%d'"
74     echo "+ ${COMMAND}"
75     mpi_run ${MACHINEFILE_OPTION} ${MACHINEFILE} -np 1 ${COMMAND} | tee ${LOG}
76
77     if [ ${PIPESTATUS[0]} != 0 ]; then
78         [ -f $LOG ] && sed -e "s/^/log: /" $LOG
79         error "mdsrate unlink on a single client failed, aborting"
80     fi
81
82     rmdir $TESTDIR_SINGLE
83 fi
84
85 IFree=$(mdsrate_inodes_available)
86 if [ $IFree -lt $NUM_FILES ]; then
87     NUM_FILES=$IFree
88 fi
89
90 [ $NUM_CLIENTS -eq 1 ] && NOMULTI=yes
91 if [ -n "$NOMULTI" ]; then
92     echo "NO test for create on multiple nodes."
93 else
94     mdsrate_cleanup $NUM_CLIENTS $MACHINEFILE $NUM_FILES $TESTDIR_MULTI 'f%%d' --ignore
95
96     log "===== $0 ### $NUM_CLIENTS NODES CREATE ###"
97
98         COMMAND="${MDSRATE} ${MDSRATE_DEBUG} --create --time ${TIME_PERIOD}
99                 --nfiles $NUM_FILES --dir ${TESTDIR_MULTI} --filefmt 'f%%d'"
100         echo "+ ${COMMAND}"
101         mpi_run ${MACHINEFILE_OPTION} ${MACHINEFILE} -np ${NUM_CLIENTS} \
102                 ${COMMAND} | tee ${LOG}
103
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
109                 exit 1
110         fi
111
112     log "===== $0 ### $NUM_CLIENTS NODES UNLINK ###"
113
114         COMMAND="${MDSRATE} ${MDSRATE_DEBUG} --unlink
115                 --nfiles ${NUM_FILES} --dir ${TESTDIR_MULTI} --filefmt 'f%%d'"
116         echo "+ ${COMMAND}"
117         mpi_run ${MACHINEFILE_OPTION} ${MACHINEFILE} -np ${NUM_CLIENTS} \
118                 ${COMMAND} | tee ${LOG}
119
120     if [ ${PIPESTATUS[0]} != 0 ]; then
121         [ -f $LOG ] && sed -e "s/^/log: /" $LOG
122         error "mdsrate unlink on multiple nodes failed, aborting"
123     fi
124
125     rmdir $TESTDIR_MULTI
126 fi
127
128 rmdir $BASEDIR || true
129 rm -f $MACHINEFILE
130 check_and_cleanup_lustre
131 #rm -f $LOG
132
133 exit 0