Darryl L. Pierce
2009-Apr-15 18:05 UTC
[Ovirt-devel] [PATCH node-image] Fixed how autotest would exit in the middle of a run.
The ultimate cause was "virsh ttyconsole" setting the return code to 1 regardless of whether it ran successfully or not. So, for the time being, fail-on-error has been disabled in autotest. Signed-off-by: Darryl L. Pierce <dpierce at redhat.com> --- autotest.sh | 29 ++++++++++++++--------------- 1 files changed, 14 insertions(+), 15 deletions(-) diff --git a/autotest.sh b/autotest.sh index 0dbe934..6cba9fa 100755 --- a/autotest.sh +++ b/autotest.sh @@ -45,14 +45,15 @@ warn() { printf '%s: %s\n' "$ME" "$*" >&2; } die() { warn "$*"; exit 1; } # trap '__st=$?; stop_log; exit $__st' 0 -trap '__st=$?; cleanup; exit $__st' 0 -trap 'cleanup; exit $?' 1 2 13 15 +trap '__st=$?; log "Exiting normally."; cleanup; exit $__st' 0 +trap '__st=$?; log "Dying a horrible death."; cleanup; exit $__st' 1 2 13 15 test -n "$1" && RESULTS=$1 || RESULTS=autotest.log echo "Running oVirt node image Autotest" -set -e +# BZ#495954 needs to be fixed to uncomment this +# set -e # set -v OVIRT_NODE_IMAGE_ISO=$PWD/ovirt-node-image.iso @@ -68,7 +69,7 @@ log () { } cleanup () { - destroy_node + log "CLEANING UP" stop_dnsmasq destroy_test_iface } @@ -173,8 +174,6 @@ define_node () { # now define the vm sudo virsh define $filename - NODENAME=$nodename - log "Defined VM: name=${NODENAME}" if [ $? != 0 ]; then die "Unable to define virtual machine: $nodename"; fi } @@ -210,10 +209,6 @@ start_node () { destroy_node () { local nodename=$1 - if [ -z "${nodename}" ]; then - nodename=$NODENAME - fi - if [ -n "${nodename}" ]; then log "Destroying VM: ${nodename}" check=$(sudo virsh list --all) @@ -279,7 +274,7 @@ pxeboot_node_vm () { create_test_iface $bridge define_node $xmlfile $nodename $memsize "$diskfile" "" $bridge "local bootdev='network'; local noapic='yes'" get_mac_address $nodename "node_mac_address" - start_dnsmasq $bridge $tftproot $node_mac_address + start_dnsmasq $bridge $tftproot $node_mac_address $nodename start_node $nodename if [ -n "$verify_method" ]; then eval $verify_method @@ -294,7 +289,7 @@ pxeboot_node_vm () { log "Test ended in failure" fi - test $return_code == 0 && return 0 || exit 1 + test $return_code == 0 && return 0 || return 1 } # Launches the node as a virtual machine with a CDROM. @@ -389,10 +384,12 @@ destroy_test_iface () { # $1 - the iface on which dnsmasq works # $2 - the root for tftp files # $3 - the mac address for the node (ignored if blank) +# $4 - the nodename start_dnsmasq () { local iface=$1 local tftproot=$2 local macaddress=$3 + local nodename=$4 local pidfile=$2/dnsmasq.pid stop_dnsmasq @@ -405,6 +402,7 @@ start_dnsmasq () { --dhcp-boot=tftpboot/pxelinux.0 --enable-tftp --tftp-root=${tftproot} + --log-facility=/tmp/dnsmasq-${nodename}.log --log-queries --log-dhcp --pid-file=${pidfile}" @@ -414,10 +412,12 @@ start_dnsmasq () { # start dnsmasq eval $dns_startup DNSMASQ_PID=$(sudo cat $pidfile) + log "dnsmasq start: PID=${DNSMASQ_PID}" } # Kills the running instance of dnsmasq. stop_dnsmasq () { + log "Killing dnsmasq: DNSMASQ_PID=${DNSMASQ_PID}" if [ -n "$DNSMASQ_PID" -a "$DNSMASQ_PID" != "0" ]; then local check=$(ps -ef | awk "/${DNSMASQ_PID}/"' { if ($2 ~ '"${DNSMASQ_PID}"') print $2 }') @@ -455,7 +455,7 @@ verify_pxeboot_stateless_standalone () { local port=$(sudo virsh ttyconsole $nodename) local logfile=$2 - log "Verifying the node is booted correctly" + log "Verifying ${nodename} is booted correctly" local script=' log_file -noappend '"${logfile}"' set timeout 60 @@ -507,7 +507,7 @@ verify_pxeboot_stateful_standalone () { # leverage the existing stateless test verify_pxeboot_stateless_standalone $nodename - log "Verifying the node is booted correctly" + log "Verifying ${nodename} is booted correctly" local script=' log_file -noappend '"${logfile}"' set timeout 180 @@ -554,7 +554,6 @@ test_cdrom_stateless_standalone () { # automated testing entry points { IFACE_NAME=testbr$$ - NODENAME NETWORK=192.168.$(echo "scale=0; print $$ % 255" | bc -l) NODE_ADDRESS=$NETWORK.100 DNSMASQ_PID=0 -- 1.6.0.6
Mike Burns
2009-Apr-15 19:18 UTC
[Ovirt-devel] [PATCH node-image] Fixed how autotest would exit in the middle of a run.
Darryl L. Pierce wrote:> The ultimate cause was "virsh ttyconsole" setting the return code to 1 > regardless of whether it ran successfully or not. So, for the time > being, fail-on-error has been disabled in autotest. > > Signed-off-by: Darryl L. Pierce <dpierce at redhat.com> > --- > autotest.sh | 29 ++++++++++++++--------------- > 1 files changed, 14 insertions(+), 15 deletions(-) > > diff --git a/autotest.sh b/autotest.sh > index 0dbe934..6cba9fa 100755 > --- a/autotest.sh > +++ b/autotest.sh > @@ -45,14 +45,15 @@ warn() { printf '%s: %s\n' "$ME" "$*" >&2; } > die() { warn "$*"; exit 1; } > > # trap '__st=$?; stop_log; exit $__st' 0 > -trap '__st=$?; cleanup; exit $__st' 0 > -trap 'cleanup; exit $?' 1 2 13 15 > +trap '__st=$?; log "Exiting normally."; cleanup; exit $__st' 0 > +trap '__st=$?; log "Dying a horrible death."; cleanup; exit $__st' 1 2 13 15 > > test -n "$1" && RESULTS=$1 || RESULTS=autotest.log > > echo "Running oVirt node image Autotest" > > -set -e > +# BZ#495954 needs to be fixed to uncomment this > +# set -e > # set -v > > OVIRT_NODE_IMAGE_ISO=$PWD/ovirt-node-image.iso > @@ -68,7 +69,7 @@ log () { > } > > cleanup () { > - destroy_node > + log "CLEANING UP" > stop_dnsmasq > destroy_test_iface > } > @@ -173,8 +174,6 @@ define_node () { > > # now define the vm > sudo virsh define $filename > - NODENAME=$nodename > - log "Defined VM: name=${NODENAME}" > > if [ $? != 0 ]; then die "Unable to define virtual machine: $nodename"; fi > } > @@ -210,10 +209,6 @@ start_node () { > destroy_node () { > local nodename=$1 > > - if [ -z "${nodename}" ]; then > - nodename=$NODENAME > - fi > - > if [ -n "${nodename}" ]; then > log "Destroying VM: ${nodename}" > check=$(sudo virsh list --all) > @@ -279,7 +274,7 @@ pxeboot_node_vm () { > create_test_iface $bridge > define_node $xmlfile $nodename $memsize "$diskfile" "" $bridge "local bootdev='network'; local noapic='yes'" > get_mac_address $nodename "node_mac_address" > - start_dnsmasq $bridge $tftproot $node_mac_address > + start_dnsmasq $bridge $tftproot $node_mac_address $nodename > start_node $nodename > if [ -n "$verify_method" ]; then > eval $verify_method > @@ -294,7 +289,7 @@ pxeboot_node_vm () { > log "Test ended in failure" > fi > > - test $return_code == 0 && return 0 || exit 1 > + test $return_code == 0 && return 0 || return 1 > } > > # Launches the node as a virtual machine with a CDROM. > @@ -389,10 +384,12 @@ destroy_test_iface () { > # $1 - the iface on which dnsmasq works > # $2 - the root for tftp files > # $3 - the mac address for the node (ignored if blank) > +# $4 - the nodename > start_dnsmasq () { > local iface=$1 > local tftproot=$2 > local macaddress=$3 > + local nodename=$4 > local pidfile=$2/dnsmasq.pid > > stop_dnsmasq > @@ -405,6 +402,7 @@ start_dnsmasq () { > --dhcp-boot=tftpboot/pxelinux.0 > --enable-tftp > --tftp-root=${tftproot} > + --log-facility=/tmp/dnsmasq-${nodename}.log > --log-queries > --log-dhcp > --pid-file=${pidfile}" > @@ -414,10 +412,12 @@ start_dnsmasq () { > # start dnsmasq > eval $dns_startup > DNSMASQ_PID=$(sudo cat $pidfile) > + log "dnsmasq start: PID=${DNSMASQ_PID}" > } > > # Kills the running instance of dnsmasq. > stop_dnsmasq () { > + log "Killing dnsmasq: DNSMASQ_PID=${DNSMASQ_PID}" > if [ -n "$DNSMASQ_PID" -a "$DNSMASQ_PID" != "0" ]; then > local check=$(ps -ef | awk "/${DNSMASQ_PID}/"' { if ($2 ~ '"${DNSMASQ_PID}"') print $2 }') > > @@ -455,7 +455,7 @@ verify_pxeboot_stateless_standalone () { > local port=$(sudo virsh ttyconsole $nodename) > local logfile=$2 > > - log "Verifying the node is booted correctly" > + log "Verifying ${nodename} is booted correctly" > local script=' > log_file -noappend '"${logfile}"' > set timeout 60 > @@ -507,7 +507,7 @@ verify_pxeboot_stateful_standalone () { > > # leverage the existing stateless test > verify_pxeboot_stateless_standalone $nodename > - log "Verifying the node is booted correctly" > + log "Verifying ${nodename} is booted correctly" > local script=' > log_file -noappend '"${logfile}"' > set timeout 180 > @@ -554,7 +554,6 @@ test_cdrom_stateless_standalone () { > # automated testing entry points > { > IFACE_NAME=testbr$$ > - NODENAME> NETWORK=192.168.$(echo "scale=0; print $$ % 255" | bc -l) > NODE_ADDRESS=$NETWORK.100 > DNSMASQ_PID=0 >Applied and autobuild run. No issues found. ACK