From abf2237387d0d94ed623c64e1a44962242203aea Mon Sep 17 00:00:00 2001 From: grev Date: Fri, 3 Apr 2009 19:29:00 +0000 Subject: [PATCH] b=17973 i=Brian run_* scripts fix: kill PGID properly --- lustre/tests/Makefile.am | 3 ++- lustre/tests/functions.sh | 26 ++++++++++++++++++++++++++ lustre/tests/run_dbench.sh | 18 +++--------------- lustre/tests/run_dd.sh | 16 +++------------- lustre/tests/run_iozone.sh | 27 +++------------------------ lustre/tests/run_tar.sh | 16 +++------------- lustre/tests/test-framework.sh | 13 ++----------- 7 files changed, 42 insertions(+), 77 deletions(-) create mode 100644 lustre/tests/functions.sh diff --git a/lustre/tests/Makefile.am b/lustre/tests/Makefile.am index 5c4252d..e0bc586 100644 --- a/lustre/tests/Makefile.am +++ b/lustre/tests/Makefile.am @@ -5,7 +5,7 @@ AM_CFLAGS = $(LLCFLAGS) # LDADD := -lreadline -ltermcap # -lefence noinst_DATA = disk1_8.tar.bz2 -noinst_SCRIPTS = leak_finder.pl llmount.sh llmountcleanup.sh +noinst_SCRIPTS = leak_finder.pl llmount.sh llmountcleanup.sh functions.sh noinst_SCRIPTS += test-framework.sh runvmstat runiozone runtests noinst_SCRIPTS += sanity.sh rundbench acceptance-small.sh compile.sh noinst_SCRIPTS += conf-sanity.sh insanity.sh lfscktest.sh oos.sh oos2.sh @@ -19,6 +19,7 @@ noinst_SCRIPTS += lockorder.sh socketclient socketserver runmultiop_bg_pause noinst_SCRIPTS += sanity-sec.sh sanity-gss.sh krb5_login.sh setup_kerberos.sh noinst_SCRIPTS += recovery-mds-scale.sh run_dd.sh run_tar.sh run_iozone.sh noinst_SCRIPTS += run_dbench.sh recovery-double-scale.sh +noinst_SCRIPTS += recovery-random-scale.sh nobase_noinst_SCRIPTS = cfg/local.sh nobase_noinst_SCRIPTS += acl/make-tree acl/run cfg/ncli.sh nobase_noinst_SCRIPTS += racer/dir_create.sh racer/file_create.sh racer/file_list.sh diff --git a/lustre/tests/functions.sh b/lustre/tests/functions.sh new file mode 100644 index 0000000..c5b806e --- /dev/null +++ b/lustre/tests/functions.sh @@ -0,0 +1,26 @@ +#!/bin/bash + +# Simple function used by run_*.sh scripts + +assert_env() { + local failed="" + for name in $@; do + if [ -z "${!name}" ]; then + echo "$0: $name must be set" + failed=1 + fi + done + [ $failed ] && exit 1 || true +} + +echoerr () { echo "$@" 1>&2 ; } + +signaled() { + echoerr "$(date +'%F %H:%M:%S'): client load was signaled to terminate" + + local PGID=$(ps -eo "%c %p %r" | awk "/ $PPID / {print \$3}") + kill -TERM -$PGID + sleep 5 + kill -KILL -$PGID +} + diff --git a/lustre/tests/run_dbench.sh b/lustre/tests/run_dbench.sh index 45cfceb..f1520e8 100755 --- a/lustre/tests/run_dbench.sh +++ b/lustre/tests/run_dbench.sh @@ -12,25 +12,13 @@ mkdir -p ${LOG%/*} rm -f $LOG $DEBUGLOG exec 2>$DEBUGLOG -if [ -z "$MOUNT" -o -z "$END_RUN_FILE" -o -z "$LOAD_PID_FILE" ]; then - echo "The following must be set: MOUNT END_RUN_FILE LOAD_PID_FILE" - exit 1 -fi +. $(dirname $0)/functions.sh -echoerr () { echo "$@" 1>&2 ; } - -signaled() { - trap 0 - echoerr "$(date +'%F %H:%M:%S'): client load was signaled to terminate" - kill $load_pid - kill -TERM -$PPID - sleep 5 - kill -KILL -$PPID -} +assert_env MOUNT END_RUN_FILE LOAD_PID_FILE trap signaled TERM -# recovery-mds-scale uses this to signal the client loads to die +# recovery-*-scale scripts use this to signal the client loads to die echo $$ >$LOAD_PID_FILE TESTDIR=$MOUNT/d0.dbench-$(hostname) diff --git a/lustre/tests/run_dd.sh b/lustre/tests/run_dd.sh index f4f1a54..d50150e 100755 --- a/lustre/tests/run_dd.sh +++ b/lustre/tests/run_dd.sh @@ -12,23 +12,13 @@ mkdir -p ${LOG%/*} rm -f $LOG $DEBUGLOG exec 2>$DEBUGLOG -if [ -z "$MOUNT" -o -z "$END_RUN_FILE" -o -z "$LOAD_PID_FILE" ]; then - echo "The following must be set: MOUNT END_RUN_FILE LOAD_PID_FILE" - exit 1 -fi +. $(dirname $0)/functions.sh -echoerr () { echo "$@" 1>&2 ; } - -signaled() { - echoerr "$(date +'%F %H:%M:%S'): client load was signaled to terminate" - kill -TERM -$PPID - sleep 5 - kill -KILL -$PPID -} +assert_env MOUNT END_RUN_FILE LOAD_PID_FILE trap signaled TERM -# recovery-mds-scale uses this to signal the client loads to die +# recovery-*-scale scripts use this to signal the client loads to die echo $$ >$LOAD_PID_FILE TESTDIR=$MOUNT/d0.dd-$(hostname) diff --git a/lustre/tests/run_iozone.sh b/lustre/tests/run_iozone.sh index 2d075d7..297142d 100755 --- a/lustre/tests/run_iozone.sh +++ b/lustre/tests/run_iozone.sh @@ -12,35 +12,17 @@ mkdir -p ${LOG%/*} rm -f $LOG $DEBUGLOG exec 2>$DEBUGLOG -if [ -z "$MOUNT" -o -z "$END_RUN_FILE" -o -z "$LOAD_PID_FILE" ]; then - echo "The following must be set: MOUNT END_RUN_FILE LOAD_PID_FILE" - exit 1 -fi +. $(dirname $0)/functions.sh -echoerr () { echo "$@" 1>&2 ; } - -signaled() { - echoerr "$(date +'%F %H:%M:%S'): client load was signaled to terminate" - kill -TERM -$PPID - sleep 5 - kill -KILL -$PPID -} +assert_env MOUNT END_RUN_FILE LOAD_PID_FILE trap signaled TERM -# recovery-mds-scale uses this to signal the client loads to die +# recovery-*-scale scripts use this to signal the client loads to die echo $$ >$LOAD_PID_FILE TESTDIR=$MOUNT/d0.iozone-$(hostname) -# needed to debug oom problem -#echo 1 > /proc/sys/vm/vm_gfp_debug -#killpids="" -#vmstat 1 1000000 >$TMP/iozone.vmstat.out & -#killpids="$killpids $!" -#$LUSTRE_TESTS/runvmstat > $TMP/iozone.runvmstat.out & -#killpids="$killpids $!" - CONTINUE=true while [ ! -e "$END_RUN_FILE" ] && $CONTINUE; do echoerr "$(date +'%F %H:%M:%S'): iozone run starting" @@ -72,6 +54,3 @@ while [ ! -e "$END_RUN_FILE" ] && $CONTINUE; do done echoerr "$(date +'%F %H:%M:%S'): iozone run exiting" -#kill $killpids -#sleep 5 -#kill -9 $killpids diff --git a/lustre/tests/run_tar.sh b/lustre/tests/run_tar.sh index 5f40e68..9005ac4 100755 --- a/lustre/tests/run_tar.sh +++ b/lustre/tests/run_tar.sh @@ -12,23 +12,13 @@ mkdir -p ${LOG%/*} rm -f $LOG $DEBUGLOG exec 2>$DEBUGLOG -if [ -z "$MOUNT" -o -z "$END_RUN_FILE" -o -z "$LOAD_PID_FILE" ]; then - echo "The following must be set: MOUNT END_RUN_FILE LOAD_PID_FILE" - exit 1 -fi +. $(dirname $0)/functions.sh -echoerr () { echo "$@" 1>&2 ; } - -signaled() { - echoerr "$(date +'%F %H:%M:%S'): client load was signaled to terminate" - kill -TERM -$PPID - sleep 5 - kill -KILL -$PPID -} +assert_env MOUNT END_RUN_FILE LOAD_PID_FILE trap signaled TERM -# recovery-mds-scale uses this to signal the client loads to die +# recovery-*-scale scripts use this to signal the client loads to die echo $$ >$LOAD_PID_FILE TESTDIR=$MOUNT/d0.tar-$(hostname) diff --git a/lustre/tests/test-framework.sh b/lustre/tests/test-framework.sh index 920e6af..ed2eb76 100644 --- a/lustre/tests/test-framework.sh +++ b/lustre/tests/test-framework.sh @@ -18,17 +18,8 @@ export IDENTITY_UPCALL=default #export PDSH="pdsh -S -Rssh -w" -# eg, assert_env LUSTRE MDSNODES OSTNODES CLIENTS -assert_env() { - local failed="" - for name in $@; do - if [ -z "${!name}" ]; then - echo "$0: $name must be set" - failed=1 - fi - done - [ $failed ] && exit 1 || true -} +# function used by scripts run on remote nodes +. $(dirname $0)/functions.sh assert_DIR () { local failed="" -- 1.8.3.1