From fab8d1b460c949d2ca58c81244a223b6894ebc53 Mon Sep 17 00:00:00 2001 From: Andrei Elkin Date: Fri, 12 Dec 2008 23:51:44 +0200 Subject: [PATCH] Bug #40129 no-threads fails on pushbuild in 6.0-rpl, ps_stm_threadpool The test reacted on the way how mtr orders arguments for the server that are gathered from different source. It appeared that the opt-file options were parsed before those that supplied to mtr via its command line. In effect, the opt-file preferences got overriden by the command line and some tests, like no-threads, were caught by surprise: a test expects an option value that had been "hardcoded" into its opt-file but gets another one. This server options ordering problem exists on in the new rpl trees mtr. In option of the author of this patch, the opt-file shall be considered as having the highest preference weight. The opt-file is merely a part of the header of a test, namely a part that can not be technically deployed along the test file. It's unnatural for the test writer to provide both the opt file value and a guard that guarantees the value will be set on in the run time. It's logical to provide either one: the option and its value or the guard. Fixed with relocating parse of the opt file to be the last among sources of the sever's options. A side effect: fixing a small problem of resetting the suite options at time the opt file starts parsing. A side effect: main.log_bin_trust_function_creators_func is disabled to be re-enabled with the fixes for bug#41003 will be merged from the main trees. mysql-test/lib/mtr_cases.pm: Relocating parse of the opt file to be the last. This ensure the opt file is the last provider for the server options so that the opt-file options have the highest preference; fixing a separate issue of incorrect resetting the suite options for the server; mysql-test/t/disabled.def: log_bin_trust_function_creators_func is disabled. Todo: to-reable when fixes for bug#41003 will be merged from the main trees. --- mysql-test/lib/mtr_cases.pm | 22 ++++++++++------------ mysql-test/t/disabled.def | 1 + 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/mysql-test/lib/mtr_cases.pm b/mysql-test/lib/mtr_cases.pm index 577bc0c6438..6579a6e8af0 100644 --- a/mysql-test/lib/mtr_cases.pm +++ b/mysql-test/lib/mtr_cases.pm @@ -580,7 +580,6 @@ sub optimize_cases { sub process_opts_file { my ($tinfo, $opt_file, $opt_name)= @_; - $tinfo->{$opt_name}= []; if ( -f $opt_file ) { my $opts= opts_from_file($opt_file); @@ -756,17 +755,6 @@ sub collect_one_test_case { push(@{$tinfo->{'master_opt'}}, @$suite_opts); push(@{$tinfo->{'slave_opt'}}, @$suite_opts); - # ---------------------------------------------------------------------- - # Add master opts, extra options only for master - # ---------------------------------------------------------------------- - process_opts_file($tinfo, "$testdir/$tname-master.opt", 'master_opt'); - - # ---------------------------------------------------------------------- - # Add slave opts, list of extra option only for slave - # ---------------------------------------------------------------------- - process_opts_file($tinfo, "$testdir/$tname-slave.opt", 'slave_opt'); - - #----------------------------------------------------------------------- # Check for test specific config file #----------------------------------------------------------------------- @@ -987,6 +975,16 @@ sub collect_one_test_case { push(@{$tinfo->{'master_opt'}}, @::opt_extra_mysqld_opt); push(@{$tinfo->{'slave_opt'}}, @::opt_extra_mysqld_opt); + # ---------------------------------------------------------------------- + # Add master opts, extra options only for master + # ---------------------------------------------------------------------- + process_opts_file($tinfo, "$testdir/$tname-master.opt", 'master_opt'); + + # ---------------------------------------------------------------------- + # Add slave opts, list of extra option only for slave + # ---------------------------------------------------------------------- + process_opts_file($tinfo, "$testdir/$tname-slave.opt", 'slave_opt'); + return $tinfo; } diff --git a/mysql-test/t/disabled.def b/mysql-test/t/disabled.def index d21842b7141..e9357c2c048 100644 --- a/mysql-test/t/disabled.def +++ b/mysql-test/t/disabled.def @@ -24,3 +24,4 @@ sql_low_priority_updates_func : BUG#37962 2008-07-08 sven *_func tests c timestamp_func : BUG#37962 2008-07-08 sven *_func tests containing sleeps/race conditions log_output_func : BUG#37766 2008-07-10 sven main.log_output_func randomly fails in pushbuild slow_query_log_func.test : Bug #37962: *_func tests containing sleeps/race conditions +log_bin_trust_function_creators_func : Bug#41003 Dec-12-2008 andrei todo:re-enable after merging the bug fixes from the main trees.