Whamcloud - gitweb
b=18468
[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 . ${CONFIG:=$LUSTRE/tests/cfg/$NAME.sh}
9
10 assert_env CLIENTS MDSRATE SINGLECLIENT MPIRUN
11
12 MACHINEFILE=${MACHINEFILE:-$TMP/$(basename $0 .sh).machines}
13 TESTDIR=$MOUNT
14
15 # Requirements
16 NUM_FILES=${NUM_FILES:-1000000}
17 TIME_PERIOD=${TIME_PERIOD:-600}                        # seconds
18
19 # Local test variables
20 TESTDIR_SINGLE="${TESTDIR}/single"
21 TESTDIR_MULTI="${TESTDIR}/multi"
22
23 LOG=${TESTSUITELOG:-$TMP/$(basename $0 .sh).log}
24 CLIENT=$SINGLECLIENT
25 NODES_TO_USE=${NODES_TO_USE:-$CLIENTS}
26 NUM_CLIENTS=$(get_node_count ${NODES_TO_USE//,/ })
27 # XXX - this needs to be determined given the number of MDTs and the number
28 #       of clients.
29 THREADS_PER_CLIENT=3                   # threads/client for multi client test
30 if [ $NUM_CLIENTS -gt 50 ]; then
31     THREADS_PER_CLIENT=1
32 fi
33
34 [ ! -x ${MDSRATE} ] && error "${MDSRATE} not built."
35
36 # Make sure we start with a clean slate
37 rm -f ${LOG} PI*
38
39 log "===== $0 ====== " 
40
41 check_and_setup_lustre
42
43 IFree=$(inodes_available)
44 if [ $IFree -lt $NUM_FILES ]; then
45     NUM_FILES=$IFree
46 fi
47   
48 generate_machine_file $NODES_TO_USE $MACHINEFILE || error "can not generate machinefile"
49
50 $LFS setstripe $TESTDIR -i 0 -c 1
51 get_stripe $TESTDIR
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         do_node ${CLIENT} "rm -rf $TESTDIR_SINGLE"
60
61         log "===== $0 ### 1 NODE CREATE ###"
62         echo "Running creates on 1 node(s)."
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 -np 1 -machinefile ${MACHINEFILE} ${COMMAND} | tee ${LOG}
68
69         if [ ${PIPESTATUS[0]} != 0 ]; then
70         [ -f $LOG ] && cat $LOG
71             error "mpirun ... mdsrate ... failed, aborting"
72         fi
73     fi
74
75     if [ -n "$NOUNLINK" ]; then
76         echo "NO Test for unlinks for a single client."
77     else
78         log "===== $0 ### 1 NODE UNLINK ###"
79         echo "Running unlinks on 1 node(s)."
80
81         COMMAND="${MDSRATE} ${MDSRATE_DEBUG} --unlink --time ${TIME_PERIOD}
82                      --nfiles ${NUM_FILES} --dir ${TESTDIR_SINGLE} --filefmt 'f%%d'"
83         echo "+ ${COMMAND}"
84         mpi_run -np 1 -machinefile ${MACHINEFILE} ${COMMAND} | tee ${LOG}
85
86         if [ ${PIPESTATUS[0]} != 0 ]; then
87         [ -f $LOG ] && cat $LOG
88             error "mpirun ... mdsrate ... failed, aborting"
89         fi
90     fi
91 fi
92
93 IFree=$(inodes_available)
94 if [ $IFree -lt $NUM_FILES ]; then
95     NUM_FILES=$IFree
96 fi
97
98 if [ -n "$NOMULTI" ]; then
99     echo "NO tests on multiple nodes."
100 else
101     if [ -n "$NOCREATE" ]; then
102         echo "NO test for create on multiple nodes."
103     else
104         do_node $CLIENT rm -rf $TESTDIR_MULTI
105
106         log "===== $0 ### $NUM_CLIENTS NODES CREATE ###"
107         echo "Running creates on ${NUM_CLIENTS} node(s) with $THREADS_PER_CLIENT threads per client."
108
109         COMMAND="${MDSRATE} ${MDSRATE_DEBUG} --create --time ${TIME_PERIOD}
110                     --nfiles $NUM_FILES --dir ${TESTDIR_MULTI} --filefmt 'f%%d'"
111         echo "+ ${COMMAND}"
112         mpi_run -np $((NUM_CLIENTS * THREADS_PER_CLIENT)) -machinefile ${MACHINEFILE} \
113             ${COMMAND} | tee ${LOG}
114         if [ ${PIPESTATUS[0]} != 0 ]; then
115             [ -f $LOG ] && cat $LOG
116             error "mpirun ... mdsrate ... failed, aborting"
117         fi
118     fi
119
120     if [ -n "$NOUNLINK" ]; then
121         echo "NO Test for unlinks multiple nodes."
122     else
123         log "===== $0 ### $NUM_CLIENTS NODES UNLINK ###"
124         echo "Running unlinks on ${NUM_CLIENTS} node(s) with $THREADS_PER_CLIENT threads per client."
125
126         COMMAND="${MDSRATE} ${MDSRATE_DEBUG} --unlink --time ${TIME_PERIOD}
127                       --nfiles ${NUM_FILES} --dir ${TESTDIR_MULTI} --filefmt 'f%%d'"
128         echo "+ ${COMMAND}"
129         mpi_run -np $((NUM_CLIENTS * THREADS_PER_CLIENT)) -machinefile ${MACHINEFILE} \
130             ${COMMAND} | tee ${LOG}
131         if [ ${PIPESTATUS[0]} != 0 ]; then
132             [ -f $LOG ] && cat $LOG
133             error "mpirun ... mdsrate ... failed, aborting"
134         fi
135     fi
136 fi
137
138 equals_msg `basename $0`: test complete, cleaning up
139 rm -f $MACHINEFILE 
140 check_and_cleanup_lustre
141 #rm -f $LOG
142
143 exit 0