X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Ftests%2Frundbench;h=2b17ebd9e1ba98e0a9e28c77a91cfb54fab55232;hb=08aa217ce49aba1ded52e0f7adb8a607035123fd;hp=ce51eaff7a8dd4bf7d09241bd83982f30cf5d3e7;hpb=9920721b613fcbf82469c4f8117f1a10b0381793;p=fs%2Flustre-release.git diff --git a/lustre/tests/rundbench b/lustre/tests/rundbench index ce51eaf..2b17ebd 100755 --- a/lustre/tests/rundbench +++ b/lustre/tests/rundbench @@ -1,4 +1,7 @@ -#!/bin/sh +#!/bin/bash + +LUSTRE=${LUSTRE:-$(cd $(dirname $0)/..; echo $PWD)} +. $LUSTRE/tests/test-framework.sh usage() { echo "-C use chroot instead of cd" @@ -7,6 +10,7 @@ usage() { exit; } +PATH=${DBENCH_LIB}:${PATH} MOUNT=${MOUNT:-/mnt/lustre} DIR=${DIR:-$MOUNT/`hostname`} @@ -23,7 +27,11 @@ mkdir -p $DIR TGT=$DIR/client.txt CLIENT_PREFIX="${DBENCH_LIB} /usr/share/dbench /usr/local/share /usr/lib/dbench" CLIENT_FILE="client.txt client_plain.txt dbench_client" -which dbench > /dev/null 2>&1 || { echo "dbench not installed, skip this test" && return 0; } +if ! which dbench > /dev/null 2>&1 ; then + [ "$MISSING_DBENCH_OK" ] || { error "$0 : $(hostname) dbench is not installed !" && exit 3; } + skip_env "$0 : $(hostname) dbench is not installed" + exit 0 +fi CLIENT="" for prefix in $CLIENT_PREFIX; do @@ -36,19 +44,28 @@ for prefix in $CLIENT_PREFIX; do [ "x$CLIENT" != "x" ] && break; done -if [ -n "$SRC" -a -s "$SRC" ]; then - CLIENT=${SRC} +if [ -n "$DBENCH_SRC" -a -s "$DBENCH_SRC" ]; then + CLIENT=$DBENCH_SRC fi -[ ! -s "$TGT" -a -n "$CLIENT" -a -s "$CLIENT" ] && echo "copying $CLIENT to $TGT" && cp $CLIENT $TGT -[ ! -s "$TGT" ] && echo "$0: $TGT doesn't exist (SRC=$CLIENT)" && exit 1 +[ ! -s "$CLIENT" ] && + skip_env "$0: no client file found for dbench on $(hostname): "\ + "DBENCH_LIB=$DBENCH_LIB DBENCH_SRC=$DBENCH_SRC" && exit 0 + +[ ! -s "$TGT" ] && echo "copying $CLIENT to $TGT" && cp $CLIENT $TGT +[ ! -s "$TGT" ] && \ + echo "$0 : $(hostname) $TGT file doesn't exist after cp $CLIENT $TGT" && exit 1 if [ "x$CHROOT" == "xyes" ]; then echo "copying necessary libs to $DIR" cp `which dbench` $DIR LIBS71=$(ldd $DIR/dbench|sed -e 's/\t*//' -e 's/.*=> //' -e 's/ .*//' -e 's/^\///') - (cd / && tar chf - $LIBS71) | (cd $DIR && tar xvf -) - [ $? = 0 ] && ( echo "can't copy libs $LIBS71 to $DIR" && exit 1 ) + tar -C / -chf - $LIBS71 | tar -C $DIR -xvf - + if [ "${PIPESTATUS[*]}" != "0 0" ]; then + echo "can't copy libs $LIBS71 to $DIR" + rm -f $DIR/dbench + exit 1 + fi RUN="chroot $DIR" PREFIX="in" PATH=.:/:$PATH @@ -56,9 +73,20 @@ fi shift $((OPTIND - 1)) +trap ' +echo kill dbench main pid=$DBENCHPID +kill $DBENCHPID +rm -rf dbench $LIBS71 client.txt +exit 0 +' TERM + cd $DIR echo "running 'dbench $@' $PREFIX $PWD at `date`" -$RUN dbench -c client.txt $@ + +$RUN dbench -c client.txt $@ & +DBENCHPID=$! +echo "dbench PID=$DBENCHPID" +wait $DBENCHPID RC=$? [ $RC -ne 0 ] && killall -9 dbench