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