Whamcloud - gitweb
b=18468
[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 . ${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 # set NUM_FILES=0 to force TIME_PERIOD work  
17 NUM_FILES=${NUM_FILES:-1000000}
18 TIME_PERIOD=${TIME_PERIOD:-600}                        # seconds
19
20 # Local test variables
21 TESTDIR_SINGLE="${TESTDIR}/single"
22 TESTDIR_MULTI="${TESTDIR}/multi"
23
24 LOG=${TESTSUITELOG:-$TMP/$(basename $0 .sh).log}
25 CLIENT=$SINGLECLIENT
26 NODES_TO_USE=${NODES_TO_USE:-$CLIENTS}
27 NUM_CLIENTS=$(get_node_count ${NODES_TO_USE//,/ })
28
29 [ ! -x ${MDSRATE} ] && error "${MDSRATE} not built."
30
31 log "===== $0 ====== " 
32
33 check_and_setup_lustre
34
35 IFree=$(inodes_available)
36 if [ $IFree -lt $NUM_FILES ]; then
37     NUM_FILES=$IFree
38 fi
39
40 generate_machine_file $NODES_TO_USE $MACHINEFILE || error "can not generate machinefile"
41
42 $LFS setstripe $TESTDIR -c -1
43 get_stripe $TESTDIR
44
45 # Make sure we start with a clean slate
46 rm -f ${LOG} PI*
47
48 if [ -n "$NOSINGLE" ]; then
49     echo "NO Test for creates for a single client."
50 else
51     log "===== $0 ### 1 NODE CREATE ###"
52     echo "Running creates on 1 node(s)."
53
54     COMMAND="${MDSRATE} ${MDSRATE_DEBUG} --create --time ${TIME_PERIOD}
55                 --nfiles ${NUM_FILES} --dir ${TESTDIR_SINGLE} --filefmt 'f%%d'"
56     echo "+ ${COMMAND}"
57     mpi_run -np 1 -machinefile ${MACHINEFILE} ${COMMAND} | tee ${LOG}
58
59     if [ ${PIPESTATUS[0]} != 0 ]; then
60         [ -f $LOG ] && cat $LOG
61         error "mpirun ... mdsrate ... failed, aborting"
62     fi
63     
64     log "===== $0 ### 1 NODE UNLINK ###"
65     echo "Running unlinks on 1 node(s)."
66
67     COMMAND="${MDSRATE} ${MDSRATE_DEBUG} --unlink --time ${TIME_PERIOD}
68                 --nfiles ${NUM_FILES} --dir ${TESTDIR_SINGLE} --filefmt 'f%%d'"
69     echo "+ ${COMMAND}"
70     mpi_run -np 1 -machinefile ${MACHINEFILE} ${COMMAND} | tee ${LOG}
71  
72     if [ ${PIPESTATUS[0]} != 0 ]; then
73         [ -f $LOG ] && cat $LOG
74         error "mpirun ... mdsrate ... failed, aborting"
75     fi
76 fi
77
78 IFree=$(inodes_available)
79 if [ $IFree -lt $NUM_FILES ]; then
80     NUM_FILES=$IFree
81 fi
82
83 if [ -n "$NOMULTI" ]; then
84     echo "NO test for create on multiple nodes."
85 else
86
87     log "===== $0 ### $NUM_CLIENTS NODES CREATE ###"
88     echo "Running creates on ${NUM_CLIENTS} node(s)."
89
90     COMMAND="${MDSRATE} ${MDSRATE_DEBUG} --create --time ${TIME_PERIOD}
91                 --nfiles $NUM_FILES --dir ${TESTDIR_MULTI} --filefmt 'f%%d'"
92     echo "+ ${COMMAND}"
93     mpi_run -np ${NUM_CLIENTS} -machinefile ${MACHINEFILE} ${COMMAND} | tee ${LOG}
94
95     if [ ${PIPESTATUS[0]} != 0 ]; then
96         [ -f $LOG ] && cat $LOG
97         error "mpirun ... mdsrate ... failed, aborting"
98     fi
99
100     echo "Running unlinks on ${NUM_CLIENTS} node(s)."
101
102     COMMAND="${MDSRATE} ${MDSRATE_DEBUG} --unlink --time ${TIME_PERIOD}
103                 --nfiles ${NUM_FILES} --dir ${TESTDIR_MULTI} --filefmt 'f%%d'"
104     echo "+ ${COMMAND}"
105     mpi_run -np ${NUM_CLIENTS} -machinefile ${MACHINEFILE} ${COMMAND} | tee ${LOG}
106
107     if [ ${PIPESTATUS[0]} != 0 ]; then
108         [ -f $LOG ] && cat $LOG
109         error "mpirun ... mdsrate ... failed, aborting"
110     fi
111
112 fi
113
114 equals_msg `basename $0`: test complete, cleaning up
115 rm -f $MACHINEFILE
116 check_and_cleanup_lustre
117 #rm -f $LOG
118
119 exit 0