Whamcloud - gitweb
b=15637
[fs/lustre-release.git] / lustre / tests / rundbench
1 #!/bin/sh
2
3 usage() {
4     echo "-C use chroot instead of cd"
5     echo "-D DIR - use 'DIR' as work directory"
6     echo
7     exit;
8 }
9
10 MOUNT=${MOUNT:-/mnt/lustre}
11 DIR=${DIR:-$MOUNT/`hostname`}
12
13 PREFIX="on"
14 while getopts "CD:" opt $*; do
15         case $opt in
16                 D) [ -d $OPTARG ] && DIR=$OPTARG ;;
17                 C) CHROOT="yes" ;;
18                 \?) usage ;;
19         esac
20 done
21
22 mkdir -p $DIR
23 TGT=$DIR/client.txt
24 CLIENT_PREFIX="${DBENCH_LIB} /usr/share/dbench /usr/local/share /usr/lib/dbench"
25 CLIENT_FILE="client.txt client_plain.txt dbench_client"
26 which dbench > /dev/null 2>&1 || { echo "dbench not installed, skip this test" && return 0; }
27 CLIENT=""
28
29 for prefix in $CLIENT_PREFIX; do
30         for file in $CLIENT_FILE; do
31                 if [ -s "${prefix}/${file}" ]; then
32                         CLIENT="${prefix}/${file}";
33                         break;
34                 fi
35         done
36         [ "x$CLIENT" != "x" ] && break;
37 done
38
39 if [ -n "$SRC" -a -s "$SRC" ]; then
40         CLIENT=${SRC}
41 fi
42
43 [ ! -s "$TGT" -a -n "$CLIENT" -a -s "$CLIENT" ] && echo "copying $CLIENT to $TGT" && cp $CLIENT $TGT
44 [ ! -s "$TGT" ] && echo "$0: $TGT doesn't exist (SRC=$CLIENT)" && exit 1
45
46 if [ "x$CHROOT" == "xyes" ]; then
47         echo "copying necessary libs to $DIR"
48         cp `which dbench` $DIR
49         LIBS71=$(ldd $DIR/dbench|sed -e 's/\t*//' -e 's/.*=> //' -e 's/ .*//' -e 's/^\///')
50         (cd / && tar chf - $LIBS71) | (cd $DIR && tar xvf -)
51         [ $? = 0 ] && ( echo "can't copy libs $LIBS71 to $DIR" && exit 1 )
52         RUN="chroot $DIR"
53         PREFIX="in"
54         PATH=.:/:$PATH
55 fi
56
57 shift $((OPTIND - 1))
58
59 cd $DIR
60 echo "running 'dbench $@' $PREFIX $PWD at `date`"
61 $RUN dbench -c client.txt $@
62 RC=$?
63 [ $RC -ne 0 ] && killall -9 dbench
64
65 rm -rf dbench $LIBS71 client.txt
66 exit $RC