diff --git a/lustre/tests/acceptance-small.sh b/lustre/tests/acceptance-small.sh index b6fe84dededf69054f5801d33b2fe59621511926..8d445de8e37e913c2504d70f88ed8712323242c0 100755 --- a/lustre/tests/acceptance-small.sh +++ b/lustre/tests/acceptance-small.sh @@ -124,14 +124,14 @@ for NAME in $CONFIGS; do duration="" [ "$SLOW" = "no" ] && duration=" -t 120" if [ "$SLOW" != "no" -o $DB_THREADS -eq 1 ]; then - DIR=$DBENCHDIR $myRUNAS bash rundbench 1 $duration + $myRUNAS bash rundbench -D $DBENCHDIR 1 $duration || error "dbench failed!" $DEBUG_ON $CLEANUP $SETUP fi if [ $DB_THREADS -gt 1 ]; then $DEBUG_OFF - DIR=$DBENCHDIR $myRUNAS bash rundbench $DB_THREADS $duration + $myRUNAS bash rundbench -D $DBENCHDIR $DB_THREADS $duration $DEBUG_ON $CLEANUP $SETUP diff --git a/lustre/tests/rundbench b/lustre/tests/rundbench index 40a8fdea9d58610210c395a2cb03866298bc9994..ce51eaff7a8dd4bf7d09241bd83982f30cf5d3e7 100755 --- a/lustre/tests/rundbench +++ b/lustre/tests/rundbench @@ -1,20 +1,66 @@ #!/bin/sh + +usage() { + echo "-C use chroot instead of cd" + echo "-D DIR - use 'DIR' as work directory" + echo + exit; +} + MOUNT=${MOUNT:-/mnt/lustre} DIR=${DIR:-$MOUNT/`hostname`} -#[ -e /proc/sys/lnet/debug ] && echo 0 > /proc/sys/lnet/debug + +PREFIX="on" +while getopts "CD:" opt $*; do + case $opt in + D) [ -d $OPTARG ] && DIR=$OPTARG ;; + C) CHROOT="yes" ;; + \?) usage ;; + esac +done + mkdir -p $DIR TGT=$DIR/client.txt -DBENCH_LIB=${DBENCH_LIB:-/usr/share/dbench} -SRC=${SRC:-$DBENCH_LIB/client.txt} -[ ! -s $TGT -a -s $SRC ] && echo "copying $SRC to $TGT" && cp $SRC $TGT -SRC=${SRC:-/usr/lib/dbench/client.txt} -[ ! -s $TGT -a -s $SRC ] && echo "copying $SRC to $TGT" && cp $SRC $TGT -SRC=/usr/lib/dbench/client_plain.txt -[ ! -s $TGT -a -s $SRC ] && echo "copying $SRC to $TGT" && cp $SRC $TGT -[ ! -s $TGT ] && echo "$0: $TGT doesn't exist (SRC=$SRC)" && exit 1 +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; } +CLIENT="" + +for prefix in $CLIENT_PREFIX; do + for file in $CLIENT_FILE; do + if [ -s "${prefix}/${file}" ]; then + CLIENT="${prefix}/${file}"; + break; + fi + done + [ "x$CLIENT" != "x" ] && break; +done + +if [ -n "$SRC" -a -s "$SRC" ]; then + CLIENT=${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 + +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 ) + RUN="chroot $DIR" + PREFIX="in" + PATH=.:/:$PATH +fi + +shift $((OPTIND - 1)) + cd $DIR -echo "running 'dbench $@' on $PWD at `date`" -dbench -c client.txt $@ +echo "running 'dbench $@' $PREFIX $PWD at `date`" +$RUN dbench -c client.txt $@ RC=$? [ $RC -ne 0 ] && killall -9 dbench + +rm -rf dbench $LIBS71 client.txt exit $RC diff --git a/lustre/tests/sanity.sh b/lustre/tests/sanity.sh index cf59d9544b967db6292a46c6269e72ce1ddfa978..85911175d7e62374b9191fb30fcefb6d9df54735 100644 --- a/lustre/tests/sanity.sh +++ b/lustre/tests/sanity.sh @@ -3037,27 +3037,7 @@ test_69() { run_test 69 "verify oa2dentry return -ENOENT doesn't LBUG ======" test_71() { - which dbench > /dev/null 2>&1 || { skip "dbench not installed, skip this test" && return 0; } - DBENCH_LIB=${DBENCH_LIB:-/usr/lib/dbench} - PATH=${DBENCH_LIB}:${PATH} - cp `which dbench` $DIR - - TGT=$DIR/client.txt - SRC=${SRC:-$DBENCH_LIB/client.txt} - [ ! -e $TGT -a -e $SRC ] && echo "copying $SRC to $TGT" && cp $SRC $TGT - SRC=$DBENCH_LIB/client_plain.txt - [ ! -e $TGT -a -e $SRC ] && echo "copying $SRC to $TGT" && cp $SRC $TGT - echo "copying necessary libs to $DIR" - LIBS71=$(ldd $DIR/dbench|sed -e 's/\t*//' -e 's/.*=> //' -e 's/ .*//' -e 's/^\///') - (cd / && tar chf - $LIBS71) | (cd $DIR && tar xvf -) - [ $? = 0 ] || error "can't copy libs $LIBS71 to $DIR" - echo "chroot $DIR /dbench -c client.txt 2" - chroot $DIR /dbench -c client.txt 2 - RC=$? - - rm -rf $DIR/dbench $DIR/lib $DIR/lib64 - - return $RC + sh rundbench -C -D $DIR 2 || error "dbench failed!" } run_test 71 "Running dbench on lustre (don't segment fault) ===="