Whamcloud - gitweb
LU-14786 lod: create missing debugfs file
[fs/lustre-release.git] / lustre / tests / mdsrate-create-small.sh
1  #!/bin/bash
2 #
3 # This test was used in a set of CMD3 tests (cmd3-3 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 NUM_FILES=${NUM_FILES:-1000000}
15 TIME_PERIOD=${TIME_PERIOD:-600}                        # seconds
16
17 # Local test variables
18 TESTDIR_SINGLE="${BASEDIR}/single"
19 TESTDIR_MULTI="${BASEDIR}/multi"
20
21 LOG=${TESTSUITELOG:-$TMP/$(basename $0 .sh).log}
22 CLIENT=$SINGLECLIENT
23 NODES_TO_USE=${NODES_TO_USE:-$CLIENTS}
24 NUM_CLIENTS=$(get_node_count ${NODES_TO_USE//,/ })
25 # XXX - this needs to be determined given the number of MDTs and the number
26 #       of clients.
27 THREADS_PER_CLIENT=3                   # threads/client for multi client test
28 if [ $NUM_CLIENTS -gt 50 ]; then
29     THREADS_PER_CLIENT=1
30 fi
31
32 [ ! -x ${MDSRATE} ] && error "${MDSRATE} not built."
33
34 # Make sure we start with a clean slate
35 rm -f ${LOG}
36
37 log "===== $0 ====== "
38
39 check_and_setup_lustre
40
41 mkdir -p $BASEDIR
42 chmod 0777 $BASEDIR
43 mdsrate_STRIPEPARAMS=${mdsrate_STRIPEPARAMS:-${fs_STRIPEPARAMS:-"-i 0 -c 1"}}
44 setstripe_getstripe $BASEDIR $mdsrate_STRIPEPARAMS
45
46 IFree=$(mdsrate_inodes_available)
47 if [ $IFree -lt $NUM_FILES ]; then
48     NUM_FILES=$IFree
49 fi
50
51 generate_machine_file $NODES_TO_USE $MACHINEFILE || error "can not generate machinefile"
52
53 if [ -n "$NOSINGLE" ]; then
54     echo "NO Tests on single client."
55 else
56     if [ -n "$NOCREATE" ]; then
57         echo "NO Test for creates for a single client."
58     else
59         # We can use np = $NUM_CLIENTS to speed up the cleanup
60         mdsrate_cleanup $NUM_CLIENTS $MACHINEFILE $NUM_FILES $TESTDIR_SINGLE 'f%%d' --ignore
61
62         log "===== $0 ### 1 NODE CREATE ###"
63
64         COMMAND="${MDSRATE} ${MDSRATE_DEBUG} --create --time ${TIME_PERIOD}
65                 --nfiles $NUM_FILES --dir ${TESTDIR_SINGLE} --filefmt 'f%%d'"
66         echo "+ ${COMMAND}"
67         mpi_run ${MACHINEFILE_OPTION} ${MACHINEFILE} -np 1 ${COMMAND} |
68                 tee ${LOG}
69
70         if [ ${PIPESTATUS[0]} != 0 ]; then
71                 [ -f $LOG ] && sed -e "s/^/log: /" $LOG
72                 error_noexit "mdsrate create on single client failed, aborting"
73                 mdsrate_cleanup $NUM_CLIENTS $MACHINEFILE $NUM_FILES \
74                                 $TESTDIR_SINGLE 'f%%d' --ignore
75                 exit 1
76         fi
77     fi
78
79     if [ -n "$NOUNLINK" ]; then
80         echo "NO Test for unlinks for a single client."
81     else
82         log "===== $0 ### 1 NODE UNLINK ###"
83
84         COMMAND="${MDSRATE} ${MDSRATE_DEBUG} --unlink
85                      --nfiles ${NUM_FILES} --dir ${TESTDIR_SINGLE} --filefmt 'f%%d'"
86         echo "+ ${COMMAND}"
87         mpi_run ${MACHINEFILE_OPTION} ${MACHINEFILE} -np 1 ${COMMAND} |
88                 tee ${LOG}
89
90         if [ ${PIPESTATUS[0]} != 0 ]; then
91             [ -f $LOG ] && sed -e "s/^/log: /" $LOG
92             error "mdsrate unlinks for a single client failed, aborting"
93         fi
94
95         rmdir $TESTDIR_SINGLE
96     fi
97 fi
98
99 IFree=$(mdsrate_inodes_available)
100 if [ $IFree -lt $NUM_FILES ]; then
101     NUM_FILES=$IFree
102 fi
103
104 if [ -n "$NOMULTI" ]; then
105     echo "NO tests on multiple nodes."
106 else
107     if [ -n "$NOCREATE" ]; then
108         echo "NO test for create on multiple nodes."
109     else
110         mdsrate_cleanup $NUM_CLIENTS $MACHINEFILE $NUM_FILES $TESTDIR_MULTI 'f%%d' --ignore
111
112         log "===== $0 ### $NUM_CLIENTS NODES CREATE with $THREADS_PER_CLIENT threads per client ###"
113
114         COMMAND="${MDSRATE} ${MDSRATE_DEBUG} --create --time ${TIME_PERIOD}
115                 --nfiles $NUM_FILES --dir ${TESTDIR_MULTI} --filefmt 'f%%d'"
116         echo "+ ${COMMAND}"
117         mpi_run ${MACHINEFILE_OPTION} ${MACHINEFILE} \
118                 -np $((NUM_CLIENTS * THREADS_PER_CLIENT)) ${COMMAND} |
119                 tee ${LOG}
120
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                 mdsrate_cleanup $((NUM_CLIENTS * THREADS_PER_CLIENT)) \
125                                 $MACHINEFILE $NUM_FILES \
126                                 $TESTDIR_MULTI 'f%%d' --ignore
127                 exit 1
128         fi
129     fi
130
131     if [ -n "$NOUNLINK" ]; then
132         echo "NO Test for unlinks multiple nodes."
133     else
134         log "===== $0 ### $NUM_CLIENTS NODES UNLINK with $THREADS_PER_CLIENT threads per client ###"
135
136         COMMAND="${MDSRATE} ${MDSRATE_DEBUG} --unlink
137                       --nfiles ${NUM_FILES} --dir ${TESTDIR_MULTI} --filefmt 'f%%d'"
138         echo "+ ${COMMAND}"
139         mpi_run ${MACHINEFILE_OPTION} ${MACHINEFILE} \
140                 -np $((NUM_CLIENTS * THREADS_PER_CLIENT)) ${COMMAND} |
141                 tee ${LOG}
142         if [ ${PIPESTATUS[0]} != 0 ]; then
143             [ -f $LOG ] && sed -e "s/^/log: /" $LOG
144             error "mdsrate unlinks multiple nodes failed, aborting"
145         fi
146
147         rmdir $TESTDIR_MULTI
148     fi
149 fi
150
151 complete $SECONDS
152 rmdir $BASEDIR || true
153 rm -f $MACHINEFILE
154 check_and_cleanup_lustre
155 #rm -f $LOG
156
157 exit 0