Commit adb94df2 authored by kent@mysql.com's avatar kent@mysql.com

mtr_process.pl:

  Bug#11792: Create a shell like 'mysqltest' exit status
parent 1dddccb8
...@@ -185,10 +185,6 @@ sub spawn_parent_impl { ...@@ -185,10 +185,6 @@ sub spawn_parent_impl {
if ( $mode eq 'run' or $mode eq 'test' ) if ( $mode eq 'run' or $mode eq 'test' )
{ {
my $exit_value= -1;
# my $signal_num= 0;
# my $dumped_core= 0;
if ( $mode eq 'run' ) if ( $mode eq 'run' )
{ {
# Simple run of command, we wait for it to return # Simple run of command, we wait for it to return
...@@ -199,12 +195,7 @@ sub spawn_parent_impl { ...@@ -199,12 +195,7 @@ sub spawn_parent_impl {
mtr_error("$path ($pid) got lost somehow"); mtr_error("$path ($pid) got lost somehow");
} }
$exit_value= $?; return mtr_process_exit_status($?);
# $exit_value= $? >> 8;
# $signal_num= $? & 127;
# $dumped_core= $? & 128;
return $exit_value;
} }
else else
{ {
...@@ -218,6 +209,7 @@ sub spawn_parent_impl { ...@@ -218,6 +209,7 @@ sub spawn_parent_impl {
# FIXME is this as it should be? Can't mysqld terminate # FIXME is this as it should be? Can't mysqld terminate
# normally from running a test case? # normally from running a test case?
my $exit_value= -1;
my $ret_pid; # What waitpid() returns my $ret_pid; # What waitpid() returns
while ( ($ret_pid= waitpid(-1,0)) != -1 ) while ( ($ret_pid= waitpid(-1,0)) != -1 )
...@@ -230,10 +222,7 @@ sub spawn_parent_impl { ...@@ -230,10 +222,7 @@ sub spawn_parent_impl {
if ( $ret_pid == $pid ) if ( $ret_pid == $pid )
{ {
# We got termination of mysqltest, we are done # We got termination of mysqltest, we are done
$exit_value= $?; $exit_value= mtr_process_exit_status($?);
# $exit_value= $? >> 8;
# $signal_num= $? & 127;
# $dumped_core= $? & 128;
last; last;
} }
...@@ -292,6 +281,23 @@ sub spawn_parent_impl { ...@@ -292,6 +281,23 @@ sub spawn_parent_impl {
} }
# ----------------------------------------------------------------------
# We try to emulate how an Unix shell calculates the exit code
# ----------------------------------------------------------------------
sub mtr_process_exit_status {
my $raw_status= shift;
if ( $raw_status & 127 )
{
return ($raw_status & 127) + 128; # Signal num + 128
}
else
{
return $raw_status >> 8; # Exit code
}
}
############################################################################## ##############################################################################
# #
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment