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