[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [OSSTEST PATCH 01/11] TestSupport: target_cmd_root_status: New sub which returns return code.
From: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx> All the different target_cmd_* end up calling tcmdex which has the unfortunate side-effect of calling 'die' if the SSH sessions results in any return code not zero. That is fine, except for tests where we want to get a non-zero return value. This patch adds the $badstatusok to tcmdex - and makes all the existing callers pass in the value of zero to it. This way the commands behave the normal old way. to all the other functions which use tcmdex. The only exposed function that does it differently is target_cmd_root_status. Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx> Acked-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx> --- v1: New submission v2: Change to target_cmd_root_status Continue doing the 'die' in tcmdex, but only if $badstatusok is zero. Plumb the $badstatusok through to tcmd. v3: Removed the extra space in tcmdex Added Ian's Ack v4: Edited commit message a bit --- Osstest/TestSupport.pm | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/Osstest/TestSupport.pm b/Osstest/TestSupport.pm index c23ac13..c36dc76 100644 --- a/Osstest/TestSupport.pm +++ b/Osstest/TestSupport.pm @@ -52,6 +52,7 @@ BEGIN { unique_incrementing_runvar next_unique_name stashfilecontents + target_cmd_root_status target_cmd_root target_cmd target_cmd_build target_cmd_output_root target_cmd_output target_cmd_inputfh_root sshuho @@ -441,20 +442,21 @@ sub sshopts () { } sub tcmdex { - my ($timeout,$stdin,$stdout,$cmd,$optsref,@args) = @_; + my ($timeout,$stdin,$stdout,$badstatusok,$cmd,$optsref,@args) = @_; logm("executing $cmd ... @args"); # We use timeout(1) as a backstop, in case $cmd doesn't die. We # need $cmd to die because we won't release the resources we own # until all of our children are dead. my $r= cmd($timeout,$stdin,$stdout, 'timeout',$timeout+30, $cmd,@$optsref,@args); + return $r if $badstatusok; $r and die "status $r"; } sub tgetfileex { my ($ruser, $ho,$timeout, $rsrc,$ldst) = @_; unlink $ldst or $!==&ENOENT or die "$ldst $!"; - tcmdex($timeout,undef,undef, + tcmdex($timeout,undef,undef, 0, 'scp', sshopts(), sshuho($ruser,$ho).":$rsrc", $ldst); } @@ -471,12 +473,12 @@ sub tputfileex { my ($ruser, $ho,$timeout, $lsrc,$rdst, $rsync) = @_; my @args= ($lsrc, sshuho($ruser,$ho).":$rdst"); if (!defined $rsync) { - tcmdex($timeout,undef,undef, + tcmdex($timeout,undef,undef, 0, 'scp', sshopts(), @args); } else { unshift @args, $rsync if length $rsync; - tcmdex($timeout,undef,undef, + tcmdex($timeout,undef,undef, 0, 'rsync', [ '-e', 'ssh '.join(' ',@{ sshopts() }) ], @args); } @@ -682,20 +684,21 @@ sub target_await_down ($$) { } sub tcmd { # $tcmd will be put between '' but not escaped - my ($stdin,$stdout,$user,$ho,$tcmd,$timeout,$extrasshopts) = @_; + my ($stdin,$stdout,$badstatusok,$user,$ho,$tcmd,$timeout,$extrasshopts) = @_; $timeout=30 if !defined $timeout; target_adjust_timeout($ho,\$timeout); $tcmd = ' ' if $tcmd eq ''; # ssh host '' logs in ! - tcmdex($timeout,$stdin,$stdout, + tcmdex($timeout,$stdin,$stdout, $badstatusok, 'ssh', sshopts(), @{ $extrasshopts || [] }, sshuho($user,$ho), $tcmd); } -sub target_cmd ($$;$$) { tcmd(undef,undef,'osstest',@_); } -sub target_cmd_root ($$;$$) { tcmd(undef,undef,'root',@_); } +sub target_cmd ($$;$$) { tcmd(undef,undef,0, 'osstest',@_); } +sub target_cmd_root ($$;$$) { tcmd(undef,undef,0, 'root',@_); } +sub target_cmd_root_status ($$;$$) { tcmd(undef,undef,1, 'root',@_); } sub tcmdout { my $stdout= IO::File::new_tmpfile(); - tcmd(undef,$stdout,@_); + tcmd(undef,$stdout,0,@_); $stdout->seek(0,0) or die "$stdout $!"; my $r; { local ($/) = undef; @@ -710,7 +713,7 @@ sub target_cmd_output_root ($$;$) { tcmdout('root',@_); } sub target_cmd_inputfh_root ($$$;$$) { my ($tho,$stdinfh,$tcmd,@rest) = @_; - tcmd($stdinfh,undef,'root',$tho,$tcmd,@rest); + tcmd($stdinfh,undef,0,'root',$tho,$tcmd,@rest); } sub poll_loop ($$$&) { -- 2.1.4 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |