mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 12:02:42 +01:00
mtr_process.pl:
Bug#11792: Create a shell like 'mysqltest' exit status mysql-test/lib/mtr_process.pl: Bug#11792: Create a shell like 'mysqltest' exit status
This commit is contained in:
parent
31f0997b1a
commit
085c8d3042
1 changed files with 20 additions and 14 deletions
|
@ -185,10 +185,6 @@ sub spawn_parent_impl {
|
|||
|
||||
if ( $mode eq 'run' or $mode eq 'test' )
|
||||
{
|
||||
my $exit_value= -1;
|
||||
# my $signal_num= 0;
|
||||
# my $dumped_core= 0;
|
||||
|
||||
if ( $mode eq 'run' )
|
||||
{
|
||||
# Simple run of command, we wait for it to return
|
||||
|
@ -199,12 +195,7 @@ sub spawn_parent_impl {
|
|||
mtr_error("$path ($pid) got lost somehow");
|
||||
}
|
||||
|
||||
$exit_value= $?;
|
||||
# $exit_value= $? >> 8;
|
||||
# $signal_num= $? & 127;
|
||||
# $dumped_core= $? & 128;
|
||||
|
||||
return $exit_value;
|
||||
return mtr_process_exit_status($?);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -218,6 +209,7 @@ sub spawn_parent_impl {
|
|||
# FIXME is this as it should be? Can't mysqld terminate
|
||||
# normally from running a test case?
|
||||
|
||||
my $exit_value= -1;
|
||||
my $ret_pid; # What waitpid() returns
|
||||
|
||||
while ( ($ret_pid= waitpid(-1,0)) != -1 )
|
||||
|
@ -230,10 +222,7 @@ sub spawn_parent_impl {
|
|||
if ( $ret_pid == $pid )
|
||||
{
|
||||
# We got termination of mysqltest, we are done
|
||||
$exit_value= $?;
|
||||
# $exit_value= $? >> 8;
|
||||
# $signal_num= $? & 127;
|
||||
# $dumped_core= $? & 128;
|
||||
$exit_value= mtr_process_exit_status($?);
|
||||
last;
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
##############################################################################
|
||||
#
|
||||
|
|
Loading…
Reference in a new issue