mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
merge from 5.5-mtr
This commit is contained in:
@ -5883,7 +5883,7 @@ int read_line(char *buf, int size)
|
|||||||
/* Could be a multibyte character */
|
/* Could be a multibyte character */
|
||||||
/* This code is based on the code in "sql_load.cc" */
|
/* This code is based on the code in "sql_load.cc" */
|
||||||
#ifdef USE_MB
|
#ifdef USE_MB
|
||||||
int charlen = my_mbcharlen(charset_info, c);
|
int charlen = my_mbcharlen(charset_info, (unsigned char) c);
|
||||||
/* We give up if multibyte character is started but not */
|
/* We give up if multibyte character is started but not */
|
||||||
/* completed before we pass buf_end */
|
/* completed before we pass buf_end */
|
||||||
if ((charlen > 1) && (p + charlen) <= buf_end)
|
if ((charlen > 1) && (p + charlen) <= buf_end)
|
||||||
@ -5895,16 +5895,16 @@ int read_line(char *buf, int size)
|
|||||||
|
|
||||||
for (i= 1; i < charlen; i++)
|
for (i= 1; i < charlen; i++)
|
||||||
{
|
{
|
||||||
|
c= my_getc(cur_file->file);
|
||||||
if (feof(cur_file->file))
|
if (feof(cur_file->file))
|
||||||
goto found_eof;
|
goto found_eof;
|
||||||
c= my_getc(cur_file->file);
|
|
||||||
*p++ = c;
|
*p++ = c;
|
||||||
}
|
}
|
||||||
if (! my_ismbchar(charset_info, mb_start, p))
|
if (! my_ismbchar(charset_info, mb_start, p))
|
||||||
{
|
{
|
||||||
/* It was not a multiline char, push back the characters */
|
/* It was not a multiline char, push back the characters */
|
||||||
/* We leave first 'c', i.e. pretend it was a normal char */
|
/* We leave first 'c', i.e. pretend it was a normal char */
|
||||||
while (p > mb_start)
|
while (p-1 > mb_start)
|
||||||
my_ungetc(*--p);
|
my_ungetc(*--p);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -9965,6 +9965,7 @@ void free_pointer_array(POINTER_ARRAY *pa)
|
|||||||
void replace_dynstr_append_mem(DYNAMIC_STRING *ds,
|
void replace_dynstr_append_mem(DYNAMIC_STRING *ds,
|
||||||
const char *val, int len)
|
const char *val, int len)
|
||||||
{
|
{
|
||||||
|
char lower[512];
|
||||||
#ifdef __WIN__
|
#ifdef __WIN__
|
||||||
fix_win_paths(val, len);
|
fix_win_paths(val, len);
|
||||||
#endif
|
#endif
|
||||||
@ -9972,7 +9973,6 @@ void replace_dynstr_append_mem(DYNAMIC_STRING *ds,
|
|||||||
if (display_result_lower)
|
if (display_result_lower)
|
||||||
{
|
{
|
||||||
/* Convert to lower case, and do this first */
|
/* Convert to lower case, and do this first */
|
||||||
char lower[512];
|
|
||||||
char *c= lower;
|
char *c= lower;
|
||||||
for (const char *v= val; *v; v++)
|
for (const char *v= val; *v; v++)
|
||||||
*c++= my_tolower(charset_info, *v);
|
*c++= my_tolower(charset_info, *v);
|
||||||
|
@ -6,7 +6,7 @@ INSERT INTO t1 VALUES (1);
|
|||||||
source include/show_binlog_events.inc;
|
source include/show_binlog_events.inc;
|
||||||
eval $statement;
|
eval $statement;
|
||||||
source include/show_binlog_events.inc;
|
source include/show_binlog_events.inc;
|
||||||
if (`select '$cleanup' != ''`) {
|
if ($cleanup) {
|
||||||
eval $cleanup;
|
eval $cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -22,7 +22,7 @@ INSERT INTO t1 VALUES (3);
|
|||||||
source include/show_binlog_events.inc;
|
source include/show_binlog_events.inc;
|
||||||
COMMIT;
|
COMMIT;
|
||||||
source include/show_binlog_events.inc;
|
source include/show_binlog_events.inc;
|
||||||
if (`select '$cleanup' != ''`) {
|
if ($cleanup) {
|
||||||
eval $cleanup;
|
eval $cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -285,10 +285,10 @@ if (`SELECT $CRC_ARG_type = 7`) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
######## execute! ########
|
######## execute! ########
|
||||||
if (`SELECT '$CRC_RET_stmt_sidef' != ''`) {
|
if ($CRC_RET_stmt_sidef) {
|
||||||
--echo
|
--echo
|
||||||
--echo Invoking $CRC_RET_desc.
|
--echo Invoking $CRC_RET_desc.
|
||||||
if (`SELECT '$CRC_create' != ''`) {
|
if ($CRC_create) {
|
||||||
--eval $CRC_create
|
--eval $CRC_create
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -365,7 +365,7 @@ if (`SELECT '$CRC_RET_stmt_sidef' != ''`) {
|
|||||||
|
|
||||||
# Invoke created object, discarding the return value. This should not
|
# Invoke created object, discarding the return value. This should not
|
||||||
# give any warning.
|
# give any warning.
|
||||||
if (`SELECT '$CRC_RET_sel_retval' != ''`) {
|
if ($CRC_RET_sel_retval) {
|
||||||
--echo * Invoke statement so that return value is dicarded: expect no warning.
|
--echo * Invoke statement so that return value is dicarded: expect no warning.
|
||||||
--disable_result_log
|
--disable_result_log
|
||||||
--eval $CRC_RET_sel_retval
|
--eval $CRC_RET_sel_retval
|
||||||
|
@ -34,7 +34,7 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
connection slave;
|
connection slave;
|
||||||
if (`SELECT $debug_sync_action = ''`)
|
if (!$debug_sync_action)
|
||||||
{
|
{
|
||||||
--die Cannot continue. Please set value for debug_sync_action.
|
--die Cannot continue. Please set value for debug_sync_action.
|
||||||
}
|
}
|
||||||
|
@ -25,7 +25,7 @@ CALL mtr.add_suppression("Unsafe statement written to the binary log using state
|
|||||||
# MTR is not case-sensitive.
|
# MTR is not case-sensitive.
|
||||||
let $lower_stmt_head= load data;
|
let $lower_stmt_head= load data;
|
||||||
let $UPPER_STMT_HEAD= LOAD DATA;
|
let $UPPER_STMT_HEAD= LOAD DATA;
|
||||||
if (`SELECT '$lock_option' <> ''`)
|
if ($lock_option)
|
||||||
{
|
{
|
||||||
#if $lock_option is null, an extra blank is added into the statement,
|
#if $lock_option is null, an extra blank is added into the statement,
|
||||||
#this will change the result of rpl_loaddata test case. so $lock_option
|
#this will change the result of rpl_loaddata test case. so $lock_option
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
# Reset DEBUG_SYNC facility for safety.
|
# Reset DEBUG_SYNC facility for safety.
|
||||||
set debug_sync= "RESET";
|
set debug_sync= "RESET";
|
||||||
|
|
||||||
if (`SELECT '$restore_table' <> ''`)
|
if ($restore_table)
|
||||||
{
|
{
|
||||||
--eval create temporary table t_backup select * from $restore_table;
|
--eval create temporary table t_backup select * from $restore_table;
|
||||||
}
|
}
|
||||||
@ -82,7 +82,7 @@ connection default;
|
|||||||
|
|
||||||
--eval delete from $table where i = 0;
|
--eval delete from $table where i = 0;
|
||||||
|
|
||||||
if (`SELECT '$restore_table' <> ''`)
|
if ($restore_table)
|
||||||
{
|
{
|
||||||
--eval truncate table $restore_table;
|
--eval truncate table $restore_table;
|
||||||
--eval insert into $restore_table select * from t_backup;
|
--eval insert into $restore_table select * from t_backup;
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
# Reset DEBUG_SYNC facility for safety.
|
# Reset DEBUG_SYNC facility for safety.
|
||||||
set debug_sync= "RESET";
|
set debug_sync= "RESET";
|
||||||
|
|
||||||
if (`SELECT '$restore_table' <> ''`)
|
if ($restore_table)
|
||||||
{
|
{
|
||||||
--eval create temporary table t_backup select * from $restore_table;
|
--eval create temporary table t_backup select * from $restore_table;
|
||||||
}
|
}
|
||||||
@ -68,7 +68,7 @@ if (!$success)
|
|||||||
|
|
||||||
--eval delete from $table where i = 0;
|
--eval delete from $table where i = 0;
|
||||||
|
|
||||||
if (`SELECT '$restore_table' <> ''`)
|
if ($restore_table)
|
||||||
{
|
{
|
||||||
--eval truncate table $restore_table;
|
--eval truncate table $restore_table;
|
||||||
--eval insert into $restore_table select * from t_backup;
|
--eval insert into $restore_table select * from t_backup;
|
||||||
|
@ -10,12 +10,12 @@
|
|||||||
# # at this point, get_relay_log_pos.inc sets $relay_log_pos. echo position
|
# # at this point, get_relay_log_pos.inc sets $relay_log_pos. echo position
|
||||||
# # in $relay_log_file: $relay_log_pos.
|
# # in $relay_log_file: $relay_log_pos.
|
||||||
|
|
||||||
if (`SELECT '$relay_log_file' = ''`)
|
if (!$relay_log_file)
|
||||||
{
|
{
|
||||||
--die 'variable $relay_log_file is null'
|
--die 'variable $relay_log_file is null'
|
||||||
}
|
}
|
||||||
|
|
||||||
if (`SELECT '$master_log_pos' = ''`)
|
if (!$master_log_pos)
|
||||||
{
|
{
|
||||||
--die 'variable $master_log_pos is null'
|
--die 'variable $master_log_pos is null'
|
||||||
}
|
}
|
||||||
|
@ -44,7 +44,7 @@ connection master;
|
|||||||
# kill the query that is waiting
|
# kill the query that is waiting
|
||||||
eval kill query $connection_id;
|
eval kill query $connection_id;
|
||||||
|
|
||||||
if (`SELECT '$debug_lock' != ''`)
|
if ($debug_lock)
|
||||||
{
|
{
|
||||||
# release the lock to allow binlog continue
|
# release the lock to allow binlog continue
|
||||||
eval SELECT RELEASE_LOCK($debug_lock);
|
eval SELECT RELEASE_LOCK($debug_lock);
|
||||||
@ -57,7 +57,7 @@ reap;
|
|||||||
|
|
||||||
connection master;
|
connection master;
|
||||||
|
|
||||||
if (`SELECT '$debug_lock' != ''`)
|
if ($debug_lock)
|
||||||
{
|
{
|
||||||
# get lock again to make the next query wait
|
# get lock again to make the next query wait
|
||||||
eval SELECT GET_LOCK($debug_lock, 10);
|
eval SELECT GET_LOCK($debug_lock, 10);
|
||||||
|
@ -25,7 +25,7 @@ source include/kill_query.inc;
|
|||||||
connection master;
|
connection master;
|
||||||
disable_query_log;
|
disable_query_log;
|
||||||
disable_result_log;
|
disable_result_log;
|
||||||
if (`SELECT '$debug_lock' != ''`)
|
if ($debug_lock)
|
||||||
{
|
{
|
||||||
eval SELECT RELEASE_LOCK($debug_lock);
|
eval SELECT RELEASE_LOCK($debug_lock);
|
||||||
}
|
}
|
||||||
@ -36,8 +36,8 @@ source include/diff_master_slave.inc;
|
|||||||
|
|
||||||
# Acquire the debug lock again if used
|
# Acquire the debug lock again if used
|
||||||
connection master;
|
connection master;
|
||||||
disable_query_log; disable_result_log; if (`SELECT '$debug_lock' !=
|
disable_query_log; disable_result_log;
|
||||||
''`) { eval SELECT GET_LOCK($debug_lock, 10); } enable_result_log;
|
if ($debug_lock) { eval SELECT GET_LOCK($debug_lock, 10); }
|
||||||
enable_query_log;
|
enable_result_log; enable_query_log;
|
||||||
|
|
||||||
connection $connection_name;
|
connection $connection_name;
|
||||||
|
@ -56,7 +56,7 @@ if (`SELECT "$_sql_running" = "Yes" OR "$_io_running" = "Yes"`) {
|
|||||||
# Read server variables.
|
# Read server variables.
|
||||||
let $MYSQLD_DATADIR= `SELECT @@datadir`;
|
let $MYSQLD_DATADIR= `SELECT @@datadir`;
|
||||||
let $_fake_filename= query_get_value(SHOW VARIABLES LIKE 'relay_log', Value, 1);
|
let $_fake_filename= query_get_value(SHOW VARIABLES LIKE 'relay_log', Value, 1);
|
||||||
if (`SELECT '$_fake_filename' = ''`) {
|
if (!$_fake_filename) {
|
||||||
--echo Badly written test case: relay_log variable is empty. Please use the
|
--echo Badly written test case: relay_log variable is empty. Please use the
|
||||||
--echo server option --relay-log=FILE.
|
--echo server option --relay-log=FILE.
|
||||||
}
|
}
|
||||||
|
@ -18,13 +18,15 @@ if ($is_relay_log)
|
|||||||
--let $_statement=show relaylog events
|
--let $_statement=show relaylog events
|
||||||
}
|
}
|
||||||
|
|
||||||
if (`SELECT '$binlog_file' <> ''`)
|
if ($binlog_file)
|
||||||
{
|
{
|
||||||
--let $_statement= $_statement in '$binlog_file'
|
--let $_statement= $_statement in '$binlog_file'
|
||||||
}
|
}
|
||||||
|
|
||||||
--let $_statement= $_statement from $binlog_start
|
--let $_statement= $_statement from $binlog_start
|
||||||
|
|
||||||
|
# Cannot use if($binlog_limit) since the variable may begin with a 0
|
||||||
|
|
||||||
if (`SELECT '$binlog_limit' <> ''`)
|
if (`SELECT '$binlog_limit' <> ''`)
|
||||||
{
|
{
|
||||||
--let $_statement= $_statement limit $binlog_limit
|
--let $_statement= $_statement limit $binlog_limit
|
||||||
|
@ -48,13 +48,13 @@ let $binlog_name= query_get_value("SHOW MASTER STATUS", File, 1);
|
|||||||
eval SHOW BINLOG EVENTS IN '$binlog_name';
|
eval SHOW BINLOG EVENTS IN '$binlog_name';
|
||||||
|
|
||||||
let $_master_con= $master_connection;
|
let $_master_con= $master_connection;
|
||||||
if (`SELECT '$_master_con' = ''`)
|
if (!$_master_con)
|
||||||
{
|
{
|
||||||
if (`SELECT '$_con' = 'slave'`)
|
if (`SELECT '$_con' = 'slave'`)
|
||||||
{
|
{
|
||||||
let $_master_con= master;
|
let $_master_con= master;
|
||||||
}
|
}
|
||||||
if (`SELECT '$_master_con' = ''`)
|
if (!$_master_con)
|
||||||
{
|
{
|
||||||
--echo Unable to determine master connection. No debug info printed for master.
|
--echo Unable to determine master connection. No debug info printed for master.
|
||||||
--echo Please fix the test case by setting $master_connection before sourcing
|
--echo Please fix the test case by setting $master_connection before sourcing
|
||||||
@ -62,7 +62,7 @@ if (`SELECT '$_master_con' = ''`)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (`SELECT '$_master_con' != ''`)
|
if ($_master_con)
|
||||||
{
|
{
|
||||||
|
|
||||||
let $master_binlog_name_io= query_get_value("SHOW SLAVE STATUS", Master_Log_File, 1);
|
let $master_binlog_name_io= query_get_value("SHOW SLAVE STATUS", Master_Log_File, 1);
|
||||||
|
@ -31,7 +31,7 @@
|
|||||||
# $master_connection
|
# $master_connection
|
||||||
# See wait_for_slave_param.inc for description.
|
# See wait_for_slave_param.inc for description.
|
||||||
|
|
||||||
if (`SELECT '$slave_io_errno' = ''`) {
|
if (!$slave_io_errno) {
|
||||||
--die !!!ERROR IN TEST: you must set \$slave_io_errno before sourcing wait_for_slave_io_error.inc
|
--die !!!ERROR IN TEST: you must set \$slave_io_errno before sourcing wait_for_slave_io_error.inc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -53,7 +53,7 @@ if (!$_slave_timeout_counter)
|
|||||||
let $slave_tcnt= $_slave_timeout_counter;
|
let $slave_tcnt= $_slave_timeout_counter;
|
||||||
|
|
||||||
let $_slave_param_comparison= $slave_param_comparison;
|
let $_slave_param_comparison= $slave_param_comparison;
|
||||||
if (`SELECT '$_slave_param_comparison' = ''`)
|
if (!$_slave_param_comparison)
|
||||||
{
|
{
|
||||||
let $_slave_param_comparison= =;
|
let $_slave_param_comparison= =;
|
||||||
}
|
}
|
||||||
@ -73,7 +73,7 @@ while (`SELECT NOT('$_show_slave_status_value' $_slave_param_comparison '$slave_
|
|||||||
if (!$_slave_timeout_counter)
|
if (!$_slave_timeout_counter)
|
||||||
{
|
{
|
||||||
--echo **** ERROR: timeout after $slave_tcnt deci-seconds while waiting for slave parameter $slave_param $_slave_param_comparison $slave_param_value ****
|
--echo **** ERROR: timeout after $slave_tcnt deci-seconds while waiting for slave parameter $slave_param $_slave_param_comparison $slave_param_value ****
|
||||||
if (`SELECT '$slave_error_message' != ''`)
|
if ($slave_error_message)
|
||||||
{
|
{
|
||||||
--echo Message: $slave_error_message
|
--echo Message: $slave_error_message
|
||||||
}
|
}
|
||||||
|
@ -24,7 +24,7 @@
|
|||||||
# $master_connection
|
# $master_connection
|
||||||
# See wait_for_slave_param.inc for description.
|
# See wait_for_slave_param.inc for description.
|
||||||
|
|
||||||
if (`SELECT '$slave_sql_errno' = ''`) {
|
if (!$slave_sql_errno) {
|
||||||
--die !!!ERROR IN TEST: you must set \$slave_sql_errno before sourcing wait_for_slave_sql_error.inc
|
--die !!!ERROR IN TEST: you must set \$slave_sql_errno before sourcing wait_for_slave_sql_error.inc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -45,7 +45,7 @@ if (!$_status_timeout_counter)
|
|||||||
}
|
}
|
||||||
|
|
||||||
let $_status_var_comparsion= $status_var_comparsion;
|
let $_status_var_comparsion= $status_var_comparsion;
|
||||||
if (`SELECT '$_status_var_comparsion' = ''`)
|
if (!$_status_var_comparsion)
|
||||||
{
|
{
|
||||||
let $_status_var_comparsion= =;
|
let $_status_var_comparsion= =;
|
||||||
}
|
}
|
||||||
|
@ -33,6 +33,13 @@ sub mtr_exe_maybe_exists(@);
|
|||||||
sub mtr_milli_sleep($);
|
sub mtr_milli_sleep($);
|
||||||
sub start_timer($);
|
sub start_timer($);
|
||||||
sub has_expired($);
|
sub has_expired($);
|
||||||
|
sub init_timers();
|
||||||
|
sub mark_time_used($);
|
||||||
|
sub add_total_times($);
|
||||||
|
sub print_times_used($$);
|
||||||
|
sub print_total_times($);
|
||||||
|
|
||||||
|
our $opt_report_times;
|
||||||
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
#
|
#
|
||||||
@ -205,4 +212,81 @@ sub start_timer ($) { return time + $_[0]; }
|
|||||||
|
|
||||||
sub has_expired ($) { return $_[0] && time gt $_[0]; }
|
sub has_expired ($) { return $_[0] && time gt $_[0]; }
|
||||||
|
|
||||||
|
# Below code is for time usage reporting
|
||||||
|
|
||||||
|
use Time::HiRes qw(gettimeofday);
|
||||||
|
|
||||||
|
my %time_used= (
|
||||||
|
'collect' => 0,
|
||||||
|
'restart' => 0,
|
||||||
|
'check' => 0,
|
||||||
|
'ch-warn' => 0,
|
||||||
|
'test' => 0,
|
||||||
|
'init' => 0,
|
||||||
|
);
|
||||||
|
|
||||||
|
my %time_text= (
|
||||||
|
'collect' => "Collecting test cases",
|
||||||
|
'restart' => "Server stop/start",
|
||||||
|
'check' => "Check-testcase",
|
||||||
|
'ch-warn' => "Check for warnings",
|
||||||
|
'test' => "Test execution",
|
||||||
|
'init' => "Initialization etc.",
|
||||||
|
);
|
||||||
|
|
||||||
|
# Counts number of reports from workers
|
||||||
|
|
||||||
|
my $time_totals= 0;
|
||||||
|
|
||||||
|
my $last_timer_set;
|
||||||
|
|
||||||
|
sub init_timers() {
|
||||||
|
$last_timer_set= gettimeofday();
|
||||||
|
}
|
||||||
|
|
||||||
|
sub mark_time_used($) {
|
||||||
|
my ($name)= @_;
|
||||||
|
return unless $opt_report_times;
|
||||||
|
die "Unknown timer $name" unless exists $time_used{$name};
|
||||||
|
|
||||||
|
my $curr_time= gettimeofday();
|
||||||
|
$time_used{$name}+= int (($curr_time - $last_timer_set) * 1000 + .5);
|
||||||
|
$last_timer_set= $curr_time;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub add_total_times($) {
|
||||||
|
my ($dummy, $num, @line)= split (" ", $_[0]);
|
||||||
|
|
||||||
|
$time_totals++;
|
||||||
|
foreach my $elem (@line) {
|
||||||
|
my ($name, $spent)= split (":", $elem);
|
||||||
|
$time_used{$name}+= $spent;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sub print_times_used($$) {
|
||||||
|
my ($server, $num)= @_;
|
||||||
|
return unless $opt_report_times;
|
||||||
|
|
||||||
|
my $output= "SPENT $num";
|
||||||
|
foreach my $name (keys %time_used) {
|
||||||
|
my $spent= $time_used{$name};
|
||||||
|
$output.= " $name:$spent";
|
||||||
|
}
|
||||||
|
print $server $output . "\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
sub print_total_times($) {
|
||||||
|
# Don't print if we haven't received all worker data
|
||||||
|
return if $time_totals != $_[0];
|
||||||
|
|
||||||
|
foreach my $name (keys %time_used)
|
||||||
|
{
|
||||||
|
my $spent= $time_used{$name}/1000;
|
||||||
|
my $text= $time_text{$name};
|
||||||
|
print ("Spent $spent seconds on $text\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
@ -116,18 +116,20 @@ sub sleep_until_file_created ($$$) {
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
my $seconds= ($loop * $sleeptime) / 1000;
|
||||||
|
|
||||||
# Check if it died after the fork() was successful
|
# Check if it died after the fork() was successful
|
||||||
if ( defined $proc and ! $proc->wait_one(0) )
|
if ( defined $proc and ! $proc->wait_one(0) )
|
||||||
{
|
{
|
||||||
mtr_warning("Process $proc died");
|
mtr_warning("Process $proc died after mysql-test-run waited $seconds " .
|
||||||
|
"seconds for $pidfile to be created.");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
mtr_debug("Sleep $sleeptime milliseconds waiting for $pidfile");
|
mtr_debug("Sleep $sleeptime milliseconds waiting for $pidfile");
|
||||||
|
|
||||||
# Print extra message every 60 seconds
|
# Print extra message every 60 seconds
|
||||||
my $seconds= ($loop * $sleeptime) / 1000;
|
if ( $seconds > 1 && int($seconds * 10) % 600 == 0 && $seconds < $timeout )
|
||||||
if ( $seconds > 1 and int($seconds * 10) % 600 == 0 )
|
|
||||||
{
|
{
|
||||||
my $left= $timeout - $seconds;
|
my $left= $timeout - $seconds;
|
||||||
mtr_warning("Waited $seconds seconds for $pidfile to be created, " .
|
mtr_warning("Waited $seconds seconds for $pidfile to be created, " .
|
||||||
@ -138,6 +140,8 @@ sub sleep_until_file_created ($$$) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mtr_warning("Timeout after mysql-test-run waited $timeout seconds " .
|
||||||
|
"for the process $proc to create a pid file.");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -201,6 +201,7 @@ sub using_extern { return (keys %opts_extern > 0);};
|
|||||||
our $opt_fast= 0;
|
our $opt_fast= 0;
|
||||||
our $opt_force;
|
our $opt_force;
|
||||||
our $opt_mem= $ENV{'MTR_MEM'};
|
our $opt_mem= $ENV{'MTR_MEM'};
|
||||||
|
our $opt_clean_vardir= $ENV{'MTR_CLEAN_VARDIR'};
|
||||||
|
|
||||||
our $opt_gcov;
|
our $opt_gcov;
|
||||||
our $opt_gcov_exe= "gcov";
|
our $opt_gcov_exe= "gcov";
|
||||||
@ -241,6 +242,7 @@ my $opt_skip_core;
|
|||||||
our $opt_check_testcases= 1;
|
our $opt_check_testcases= 1;
|
||||||
my $opt_mark_progress;
|
my $opt_mark_progress;
|
||||||
my $opt_max_connections;
|
my $opt_max_connections;
|
||||||
|
our $opt_report_times= 0;
|
||||||
|
|
||||||
my $opt_sleep;
|
my $opt_sleep;
|
||||||
|
|
||||||
@ -354,8 +356,11 @@ sub main {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
init_timers();
|
||||||
|
|
||||||
mtr_report("Collecting tests...");
|
mtr_report("Collecting tests...");
|
||||||
my $tests= collect_test_cases($opt_reorder, $opt_suites, \@opt_cases, \@opt_skip_test_list);
|
my $tests= collect_test_cases($opt_reorder, $opt_suites, \@opt_cases, \@opt_skip_test_list);
|
||||||
|
mark_time_used('collect');
|
||||||
|
|
||||||
if ( $opt_report_features ) {
|
if ( $opt_report_features ) {
|
||||||
# Put "report features" as the first test to run
|
# Put "report features" as the first test to run
|
||||||
@ -424,6 +429,7 @@ sub main {
|
|||||||
$opt_tmpdir= "$opt_tmpdir/$child_num";
|
$opt_tmpdir= "$opt_tmpdir/$child_num";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
init_timers();
|
||||||
run_worker($server_port, $child_num);
|
run_worker($server_port, $child_num);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
@ -436,6 +442,8 @@ sub main {
|
|||||||
mtr_print_thick_line();
|
mtr_print_thick_line();
|
||||||
mtr_print_header();
|
mtr_print_header();
|
||||||
|
|
||||||
|
mark_time_used('init');
|
||||||
|
|
||||||
my $completed= run_test_server($server, $tests, $opt_parallel);
|
my $completed= run_test_server($server, $tests, $opt_parallel);
|
||||||
|
|
||||||
exit(0) if $opt_start_exit;
|
exit(0) if $opt_start_exit;
|
||||||
@ -481,8 +489,12 @@ sub main {
|
|||||||
$opt_gcov_msg, $opt_gcov_err);
|
$opt_gcov_msg, $opt_gcov_err);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
print_total_times($opt_parallel) if $opt_report_times;
|
||||||
|
|
||||||
mtr_report_stats("Completed", $completed);
|
mtr_report_stats("Completed", $completed);
|
||||||
|
|
||||||
|
remove_vardir_subs() if $opt_clean_vardir;
|
||||||
|
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -613,13 +625,15 @@ sub run_test_server ($$$) {
|
|||||||
if ($test_has_failed and $retries <= $opt_retry){
|
if ($test_has_failed and $retries <= $opt_retry){
|
||||||
# Test should be run one more time unless it has failed
|
# Test should be run one more time unless it has failed
|
||||||
# too many times already
|
# too many times already
|
||||||
|
my $tname= $result->{name};
|
||||||
my $failures= $result->{failures};
|
my $failures= $result->{failures};
|
||||||
if ($opt_retry > 1 and $failures >= $opt_retry_failure){
|
if ($opt_retry > 1 and $failures >= $opt_retry_failure){
|
||||||
mtr_report("\nTest has failed $failures times,",
|
mtr_report("\nTest $tname has failed $failures times,",
|
||||||
"no more retries!\n");
|
"no more retries!\n");
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
mtr_report("\nRetrying test, attempt($retries/$opt_retry)...\n");
|
mtr_report("\nRetrying test $tname, ".
|
||||||
|
"attempt($retries/$opt_retry)...\n");
|
||||||
delete($result->{result});
|
delete($result->{result});
|
||||||
$result->{retries}= $retries+1;
|
$result->{retries}= $retries+1;
|
||||||
$result->write_test($sock, 'TESTCASE');
|
$result->write_test($sock, 'TESTCASE');
|
||||||
@ -655,6 +669,9 @@ sub run_test_server ($$$) {
|
|||||||
elsif ($line eq 'START'){
|
elsif ($line eq 'START'){
|
||||||
; # Send first test
|
; # Send first test
|
||||||
}
|
}
|
||||||
|
elsif ($line =~ /^SPENT/) {
|
||||||
|
add_total_times($line);
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
mtr_error("Unknown response: '$line' from client");
|
mtr_error("Unknown response: '$line' from client");
|
||||||
}
|
}
|
||||||
@ -786,7 +803,9 @@ sub run_worker ($) {
|
|||||||
# Ask server for first test
|
# Ask server for first test
|
||||||
print $server "START\n";
|
print $server "START\n";
|
||||||
|
|
||||||
while(my $line= <$server>){
|
mark_time_used('init');
|
||||||
|
|
||||||
|
while (my $line= <$server>){
|
||||||
chomp($line);
|
chomp($line);
|
||||||
if ($line eq 'TESTCASE'){
|
if ($line eq 'TESTCASE'){
|
||||||
my $test= My::Test::read_test($server);
|
my $test= My::Test::read_test($server);
|
||||||
@ -804,16 +823,20 @@ sub run_worker ($) {
|
|||||||
# Send it back, now with results set
|
# Send it back, now with results set
|
||||||
#$test->print_test();
|
#$test->print_test();
|
||||||
$test->write_test($server, 'TESTRESULT');
|
$test->write_test($server, 'TESTRESULT');
|
||||||
|
mark_time_used('restart');
|
||||||
}
|
}
|
||||||
elsif ($line eq 'BYE'){
|
elsif ($line eq 'BYE'){
|
||||||
mtr_report("Server said BYE");
|
mtr_report("Server said BYE");
|
||||||
stop_all_servers($opt_shutdown_timeout);
|
stop_all_servers($opt_shutdown_timeout);
|
||||||
|
mark_time_used('restart');
|
||||||
if ($opt_valgrind_mysqld) {
|
if ($opt_valgrind_mysqld) {
|
||||||
valgrind_exit_reports();
|
valgrind_exit_reports();
|
||||||
}
|
}
|
||||||
if ( $opt_gprof ) {
|
if ( $opt_gprof ) {
|
||||||
gprof_collect (find_mysqld($basedir), keys %gprof_dirs);
|
gprof_collect (find_mysqld($basedir), keys %gprof_dirs);
|
||||||
}
|
}
|
||||||
|
mark_time_used('init');
|
||||||
|
print_times_used($server, $thread_num);
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -954,6 +977,7 @@ sub command_line_setup {
|
|||||||
'tmpdir=s' => \$opt_tmpdir,
|
'tmpdir=s' => \$opt_tmpdir,
|
||||||
'vardir=s' => \$opt_vardir,
|
'vardir=s' => \$opt_vardir,
|
||||||
'mem' => \$opt_mem,
|
'mem' => \$opt_mem,
|
||||||
|
'clean-vardir' => \$opt_clean_vardir,
|
||||||
'client-bindir=s' => \$path_client_bindir,
|
'client-bindir=s' => \$path_client_bindir,
|
||||||
'client-libdir=s' => \$path_client_libdir,
|
'client-libdir=s' => \$path_client_libdir,
|
||||||
|
|
||||||
@ -986,6 +1010,7 @@ sub command_line_setup {
|
|||||||
'timediff' => \&report_option,
|
'timediff' => \&report_option,
|
||||||
'max-connections=i' => \$opt_max_connections,
|
'max-connections=i' => \$opt_max_connections,
|
||||||
'default-myisam!' => \&collect_option,
|
'default-myisam!' => \&collect_option,
|
||||||
|
'report-times' => \$opt_report_times,
|
||||||
|
|
||||||
'help|h' => \$opt_usage,
|
'help|h' => \$opt_usage,
|
||||||
'list-options' => \$opt_list_options,
|
'list-options' => \$opt_list_options,
|
||||||
@ -2256,6 +2281,12 @@ sub environment_setup {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
sub remove_vardir_subs() {
|
||||||
|
foreach my $sdir ( glob("$opt_vardir/*") ) {
|
||||||
|
mtr_verbose("Removing subdir $sdir");
|
||||||
|
rmtree($sdir);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#
|
#
|
||||||
# Remove var and any directories in var/ created by previous
|
# Remove var and any directories in var/ created by previous
|
||||||
@ -2300,11 +2331,7 @@ sub remove_stale_vardir () {
|
|||||||
mtr_error("The destination for symlink $opt_vardir does not exist")
|
mtr_error("The destination for symlink $opt_vardir does not exist")
|
||||||
if ! -d readlink($opt_vardir);
|
if ! -d readlink($opt_vardir);
|
||||||
|
|
||||||
foreach my $bin ( glob("$opt_vardir/*") )
|
remove_vardir_subs();
|
||||||
{
|
|
||||||
mtr_verbose("Removing bin $bin");
|
|
||||||
rmtree($bin);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -3222,6 +3249,7 @@ sub check_testcase($$)
|
|||||||
|
|
||||||
if ( keys(%started) == 0){
|
if ( keys(%started) == 0){
|
||||||
# All checks completed
|
# All checks completed
|
||||||
|
mark_time_used('check');
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
# Wait for next process to exit
|
# Wait for next process to exit
|
||||||
@ -3237,7 +3265,8 @@ sub check_testcase($$)
|
|||||||
"\nMTR's internal check of the test case '$tname' failed.
|
"\nMTR's internal check of the test case '$tname' failed.
|
||||||
This means that the test case does not preserve the state that existed
|
This means that the test case does not preserve the state that existed
|
||||||
before the test case was executed. Most likely the test case did not
|
before the test case was executed. Most likely the test case did not
|
||||||
do a proper clean-up.
|
do a proper clean-up. It could also be caused by the previous test run
|
||||||
|
by this thread, if the server wasn't restarted.
|
||||||
This is the diff of the states of the servers before and after the
|
This is the diff of the states of the servers before and after the
|
||||||
test case was executed:\n";
|
test case was executed:\n";
|
||||||
$tinfo->{check}.= $report;
|
$tinfo->{check}.= $report;
|
||||||
@ -3279,6 +3308,11 @@ test case was executed:\n";
|
|||||||
# Kill any check processes still running
|
# Kill any check processes still running
|
||||||
map($_->kill(), values(%started));
|
map($_->kill(), values(%started));
|
||||||
|
|
||||||
|
mtr_warning("Check-testcase failed, this could also be caused by the" .
|
||||||
|
" previous test run by this worker thread")
|
||||||
|
if $result > 1 && $mode eq "before";
|
||||||
|
mark_time_used('check');
|
||||||
|
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3588,6 +3622,7 @@ sub run_testcase ($) {
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
mark_time_used('restart');
|
||||||
|
|
||||||
# --------------------------------------------------------------------
|
# --------------------------------------------------------------------
|
||||||
# If --start or --start-dirty given, stop here to let user manually
|
# If --start or --start-dirty given, stop here to let user manually
|
||||||
@ -3640,6 +3675,8 @@ sub run_testcase ($) {
|
|||||||
|
|
||||||
do_before_run_mysqltest($tinfo);
|
do_before_run_mysqltest($tinfo);
|
||||||
|
|
||||||
|
mark_time_used('init');
|
||||||
|
|
||||||
if ( $opt_check_testcases and check_testcase($tinfo, "before") ){
|
if ( $opt_check_testcases and check_testcase($tinfo, "before") ){
|
||||||
# Failed to record state of server or server crashed
|
# Failed to record state of server or server crashed
|
||||||
report_failure_and_restart($tinfo);
|
report_failure_and_restart($tinfo);
|
||||||
@ -3686,6 +3723,7 @@ sub run_testcase ($) {
|
|||||||
}
|
}
|
||||||
mtr_verbose("Got $proc");
|
mtr_verbose("Got $proc");
|
||||||
|
|
||||||
|
mark_time_used('test');
|
||||||
# ----------------------------------------------------
|
# ----------------------------------------------------
|
||||||
# Was it the test program that exited
|
# Was it the test program that exited
|
||||||
# ----------------------------------------------------
|
# ----------------------------------------------------
|
||||||
@ -3912,7 +3950,9 @@ sub get_log_from_proc ($$) {
|
|||||||
foreach my $mysqld (mysqlds()) {
|
foreach my $mysqld (mysqlds()) {
|
||||||
if ($mysqld->{proc} eq $proc) {
|
if ($mysqld->{proc} eq $proc) {
|
||||||
my @srv_lines= extract_server_log($mysqld->value('#log-error'), $name);
|
my @srv_lines= extract_server_log($mysqld->value('#log-error'), $name);
|
||||||
$srv_log= "\nServer log from this test:\n" . join ("", @srv_lines);
|
$srv_log= "\nServer log from this test:\n" .
|
||||||
|
"----------SERVER LOG START-----------\n". join ("", @srv_lines) .
|
||||||
|
"----------SERVER LOG END-------------\n";
|
||||||
last;
|
last;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -4089,6 +4129,7 @@ sub check_warnings ($) {
|
|||||||
|
|
||||||
if ( keys(%started) == 0){
|
if ( keys(%started) == 0){
|
||||||
# All checks completed
|
# All checks completed
|
||||||
|
mark_time_used('ch-warn');
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
# Wait for next process to exit
|
# Wait for next process to exit
|
||||||
@ -4121,6 +4162,7 @@ sub check_warnings ($) {
|
|||||||
# Kill any check processes still running
|
# Kill any check processes still running
|
||||||
map($_->kill(), values(%started));
|
map($_->kill(), values(%started));
|
||||||
|
|
||||||
|
mark_time_used('ch-warn');
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5084,6 +5126,8 @@ sub start_mysqltest ($) {
|
|||||||
my $exe= $exe_mysqltest;
|
my $exe= $exe_mysqltest;
|
||||||
my $args;
|
my $args;
|
||||||
|
|
||||||
|
mark_time_used('init');
|
||||||
|
|
||||||
mtr_init_args(\$args);
|
mtr_init_args(\$args);
|
||||||
|
|
||||||
mtr_add_arg($args, "--defaults-file=%s", $path_config_file);
|
mtr_add_arg($args, "--defaults-file=%s", $path_config_file);
|
||||||
@ -5565,6 +5609,8 @@ Options to control directories to use
|
|||||||
for tmpfs (/dev/shm)
|
for tmpfs (/dev/shm)
|
||||||
The option can also be set using environment
|
The option can also be set using environment
|
||||||
variable MTR_MEM=[DIR]
|
variable MTR_MEM=[DIR]
|
||||||
|
clean-vardir Clean vardir if tests were successful and if
|
||||||
|
running in "memory". Otherwise this option is ignored
|
||||||
client-bindir=PATH Path to the directory where client binaries are located
|
client-bindir=PATH Path to the directory where client binaries are located
|
||||||
client-libdir=PATH Path to the directory where client libraries are located
|
client-libdir=PATH Path to the directory where client libraries are located
|
||||||
|
|
||||||
@ -5724,6 +5770,8 @@ Misc options
|
|||||||
default-myisam Set default storage engine to MyISAM for non-innodb
|
default-myisam Set default storage engine to MyISAM for non-innodb
|
||||||
tests. This is needed after switching default storage
|
tests. This is needed after switching default storage
|
||||||
engine to InnoDB.
|
engine to InnoDB.
|
||||||
|
report-times Report how much time has been spent on different
|
||||||
|
phases of test execution.
|
||||||
HERE
|
HERE
|
||||||
exit(1);
|
exit(1);
|
||||||
|
|
||||||
|
@ -321,7 +321,7 @@ while (`SELECT $unsafe_type < 9`) {
|
|||||||
--source extra/rpl_tests/create_recursive_construct.inc
|
--source extra/rpl_tests/create_recursive_construct.inc
|
||||||
|
|
||||||
# Drop created object.
|
# Drop created object.
|
||||||
if (`SELECT '$drop_3' != ''`) {
|
if ($drop_3) {
|
||||||
--eval $drop_3
|
--eval $drop_3
|
||||||
}
|
}
|
||||||
--inc $call_type_3
|
--inc $call_type_3
|
||||||
@ -330,7 +330,7 @@ while (`SELECT $unsafe_type < 9`) {
|
|||||||
} # if (!is_toplevel_2)
|
} # if (!is_toplevel_2)
|
||||||
|
|
||||||
# Drop created object.
|
# Drop created object.
|
||||||
if (`SELECT '$drop_2' != ''`) {
|
if ($drop_2) {
|
||||||
--eval $drop_2
|
--eval $drop_2
|
||||||
}
|
}
|
||||||
--inc $call_type_2
|
--inc $call_type_2
|
||||||
@ -338,7 +338,7 @@ while (`SELECT $unsafe_type < 9`) {
|
|||||||
} # if (!is_toplevel_1)
|
} # if (!is_toplevel_1)
|
||||||
|
|
||||||
# Drop created object.
|
# Drop created object.
|
||||||
if (`SELECT '$drop_1' != ''`) {
|
if ($drop_1) {
|
||||||
--eval $drop_1
|
--eval $drop_1
|
||||||
}
|
}
|
||||||
--inc $call_type_1
|
--inc $call_type_1
|
||||||
|
@ -119,7 +119,7 @@ echo [on master];
|
|||||||
|
|
||||||
# This will block the execution of a statement at the DBUG_SYNC_POINT
|
# This will block the execution of a statement at the DBUG_SYNC_POINT
|
||||||
# with given lock name
|
# with given lock name
|
||||||
if (`SELECT '$debug_lock' != ''`)
|
if ($debug_lock)
|
||||||
{
|
{
|
||||||
disable_query_log;
|
disable_query_log;
|
||||||
disable_result_log;
|
disable_result_log;
|
||||||
|
@ -331,7 +331,7 @@ eval select $mysql_errno as "after_!errno_masked_error" ;
|
|||||||
--exec illegal_command
|
--exec illegal_command
|
||||||
--cat_file does_not_exist
|
--cat_file does_not_exist
|
||||||
--perl
|
--perl
|
||||||
exit(1);
|
exit(2);
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
# ----------------------------------------------------------------------------
|
# ----------------------------------------------------------------------------
|
||||||
|
@ -53,7 +53,7 @@ while (!`select @aborted_clients`)
|
|||||||
dec $retries;
|
dec $retries;
|
||||||
if (!$retries)
|
if (!$retries)
|
||||||
{
|
{
|
||||||
Failed to detect that client has been aborted;
|
die Failed to detect that client has been aborted;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
--enable_query_log
|
--enable_query_log
|
||||||
@ -108,7 +108,7 @@ while (!`select @aborted_clients`)
|
|||||||
dec $retries;
|
dec $retries;
|
||||||
if (!$retries)
|
if (!$retries)
|
||||||
{
|
{
|
||||||
Failed to detect that client has been aborted;
|
die Failed to detect that client has been aborted;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
--enable_query_log
|
--enable_query_log
|
||||||
|
Reference in New Issue
Block a user