Whamcloud - gitweb
- added test_3b which emulates recursive mount. Does not pass yet.
[fs/lustre-release.git] / lustre / tests / runregression-brw.sh
1 #!/bin/sh
2 SRCDIR="`dirname $0`/"
3 export PATH=/sbin:/usr/sbin:$SRCDIR/../utils:$PATH
4
5 LOOPS=${LOOPS:-1}
6 COUNT=${COUNT:-100000}
7 COUNT_10=`expr $COUNT / 10`
8 COUNT_100=`expr $COUNT / 100`
9
10 ENDRUN=endrun-`hostname`
11
12 ECHONAME="`lctl device_list 2> /dev/null | awk '/ echo_client / { print $4 }' | tail -n 1`"
13
14 if [ -z "$ECHONAME" ]; then
15         echo "$0: needs an ECHO_CLIENT set up first" 1>&2
16         exit 1
17 fi
18
19 cleanup () {
20         lctl --device \$$ECHONAME destroy $OID
21 }
22         
23 runthreads() {
24         THR=$1
25         DO=$2
26         CNT=$3
27         V=$4
28         PGS=$5
29
30         case $DO in
31         test_getattr)
32                 RW=
33                 ;;
34         test_brw_write)
35                 DO=test_brw
36                 RW=w
37                 ;;
38         test_brw_read)
39                 DO=test_brw
40                 RW=r
41                 ;;
42         esac
43
44         lctl --threads $THR v \$$ECHONAME $DO $CNT $RW $V $PGS $OID || exit 1
45
46         if [ -e $ENDRUN ]; then
47                 rm $ENDRUN
48                 echo "exiting because $ENDRUN file was found"
49                 cleanup
50         fi
51 }
52
53 [ -z "$OID" ] && OID=`lctl --device \\$$ECHONAME create 1 | awk '/is object id/ { print $6 }'` && echo "created object $OID"
54 [ -z "$OID" ] && echo "error creating object" 1>&2 && exit 1
55
56 # TODO: obdctl needs to check on the progress of each forked thread
57 #       (IPC SHM, sockets?) to see if it hangs.
58 for i in `seq $LOOPS`; do
59         PG=1
60         PGVW=${PGVW:-16}
61         PGVR=${PGVR:-16}
62
63         # We use '--threads 1 X' instead of '--device X' so that
64         # obdctl can monitor the forked thread for progress (TODO).
65         debug_server_off
66         debug_client_off
67         runthreads 1 test_brw_write 1000 -30 $PG
68         runthreads 1 test_brw_read 1000 -30 $PG
69
70         [ "$PGVW" ] && runthreads 1 test_brw_write 100 -30 $PGVW
71         [ "$PGVW" ] && runthreads 1 test_brw_read 1600 -30 $PG
72         [ "$PGVR" ] && runthreads 1 test_brw_read 100 -30 $PGVR
73
74         runthreads 1 test_brw_write $COUNT -30 $PG
75         runthreads 1 test_brw_read $COUNT -30 $PG
76
77         [ "$PGVW" ] && runthreads 1 test_brw_write $COUNT_10 -30 $PGVW
78         [ "$PGVR" ] && runthreads 1 test_brw_read $COUNT_10 -30 $PGVR
79
80         runthreads 2 test_brw_write $COUNT -30 $PG
81         runthreads 2 test_brw_read $COUNT -30 $PG
82
83         [ "$PGVW" ] && runthreads 2 test_brw_write $COUNT_10 -30 $PGVW
84         [ "$PGVR" ] && runthreads 2 test_brw_read $COUNT_10 -30 $PGVR
85
86         runthreads 10 test_brw_write $COUNT_10 -30 $PG
87         runthreads 10 test_brw_read $COUNT_10 -30 $PG
88
89         [ "$PGVW" ] && runthreads 10 test_brw_write $COUNT_100 -60 $PGVW
90         [ "$PGVR" ] && runthreads 10 test_brw_read $COUNT_100 -60 $PGVR
91
92         runthreads 32 test_brw_write $COUNT_10 -30 $PG
93         runthreads 32 test_brw_read $COUNT_10 -30 $PG
94
95         [ "$PGVW" ] && runthreads 32 test_brw_write $COUNT_100 -60 $PGVW
96         [ "$PGVR" ] && runthreads 32 test_brw_read $COUNT_100 -60 $PGVR
97
98         runthreads 64 test_brw_write $COUNT_10 -30 $PG
99         runthreads 64 test_brw_read $COUNT_10 -30 $PG
100
101         [ "$PGVW" ] && runthreads 64 test_brw_write $COUNT_100 -60 $PGVW
102         [ "$PGVR" ] && runthreads 64 test_brw_read $COUNT_100 -60 $PGVR
103
104         runthreads 100 test_brw_write $COUNT_100 -60 $PG
105         runthreads 100 test_brw_read $COUNT_100 -60 $PG
106
107         [ "$PGVW" ] && runthreads 100 test_brw_write $COUNT_100 -60 $PGVW
108         [ "$PGVR" ] && runthreads 100 test_brw_read $COUNT_100 -60 $PGVR
109 done
110
111 cleanup