summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mysql-test/lib/mtr_misc.pl2
-rw-r--r--mysql-test/lib/mtr_process.pl14
-rw-r--r--mysql-test/lib/mtr_report.pl3
-rwxr-xr-xmysql-test/mysql-test-run.pl14
4 files changed, 25 insertions, 8 deletions
diff --git a/mysql-test/lib/mtr_misc.pl b/mysql-test/lib/mtr_misc.pl
index 5f80864d1f7..efa1b3bec21 100644
--- a/mysql-test/lib/mtr_misc.pl
+++ b/mysql-test/lib/mtr_misc.pl
@@ -25,7 +25,7 @@ sub mtr_full_hostname () {
if ( $hostname !~ /\./ )
{
my $address= gethostbyname($hostname)
- or die "Couldn't resolve $hostname : $!";
+ or mtr_error("Couldn't resolve $hostname : $!");
my $fullname= gethostbyaddr($address, AF_INET);
$hostname= $fullname if $fullname;
}
diff --git a/mysql-test/lib/mtr_process.pl b/mysql-test/lib/mtr_process.pl
index 78758e54aa4..7bca422773c 100644
--- a/mysql-test/lib/mtr_process.pl
+++ b/mysql-test/lib/mtr_process.pl
@@ -17,6 +17,7 @@ sub mtr_spawn ($$$$$$);
sub mtr_stop_mysqld_servers ($);
sub mtr_kill_leftovers ();
sub mtr_record_dead_children ();
+sub mtr_exit ($);
sub sleep_until_file_created ($$$);
# static in C
@@ -784,4 +785,17 @@ sub sleep_until_file_created ($$$) {
}
+##############################################################################
+#
+# When we exit, we kill off all children
+#
+##############################################################################
+
+sub mtr_exit ($) {
+ my $code= shift;
+ local $SIG{HUP} = 'IGNORE';
+ kill('HUP', -$$);
+ exit($code);
+}
+
1;
diff --git a/mysql-test/lib/mtr_report.pl b/mysql-test/lib/mtr_report.pl
index cb41549422f..a258d139bb1 100644
--- a/mysql-test/lib/mtr_report.pl
+++ b/mysql-test/lib/mtr_report.pl
@@ -268,7 +268,8 @@ sub mtr_warning (@) {
}
sub mtr_error (@) {
- die "mysql-test-run: *** ERROR: ",join(" ", @_),"\n";
+ print STDERR "mysql-test-run: *** ERROR: ",join(" ", @_),"\n";
+ mtr_exit(1);
}
sub mtr_debug (@) {
diff --git a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl
index 9d809593ea7..d4fb37c2f96 100755
--- a/mysql-test/mysql-test-run.pl
+++ b/mysql-test/mysql-test-run.pl
@@ -398,7 +398,7 @@ sub main () {
}
}
- exit(0);
+ mtr_exit(0);
}
##############################################################################
@@ -568,7 +568,9 @@ sub command_line_setup () {
$opt_vardir= "$glob_mysql_test_dir/var";
}
- if ( $opt_vardir !~ m,^/, )
+ # We make the path absolute, as the server will do a chdir() before usage
+ unless ( $opt_vardir =~ m,^/, or
+ ($glob_win32 and $opt_vardir =~ m,^[a-z]:/,i) )
{
# Make absolute path, relative test dir
$opt_vardir= "$glob_mysql_test_dir/$opt_vardir";
@@ -1295,9 +1297,9 @@ sub install_db ($$) {
mtr_report("Installing \u$type Databases");
open(IN, $init_db_sql)
- or error("Can't open $init_db_sql: $!");
+ or mtr_error("Can't open $init_db_sql: $!");
open(OUT, ">", $init_db_sql_tmp)
- or error("Can't write to $init_db_sql_tmp: $!");
+ or mtr_error("Can't write to $init_db_sql_tmp: $!");
while (<IN>)
{
chomp;
@@ -1571,7 +1573,7 @@ sub report_failure_and_restart ($) {
{
stop_masters_slaves();
}
- exit(1);
+ mtr_exit(1);
}
# FIXME always terminate on failure?!
@@ -2270,5 +2272,5 @@ Options not yet described, or that I want to look into more
with-openssl
HERE
- exit(1);
+ mtr_exit(1);
}