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