Merge mysql.com:/home/ram/work/mysql-5.1-maint

into  mysql.com:/home/ram/work/b29353/b29353.5.1
parents 2ca3289e a7ddf48f
...@@ -18,125 +18,41 @@ ...@@ -18,125 +18,41 @@
## Process this file with automake to create Makefile.in ## Process this file with automake to create Makefile.in
SUBDIRS = ndb SUBDIRS = ndb
DIST_SUBDIRS=ndb
benchdir_root= $(prefix)
testdir = $(benchdir_root)/mysql-test
EXTRA_SCRIPTS = mysql-test-run-shell.sh install_test_db.sh \
valgrind.supp $(PRESCRIPTS)
EXTRA_DIST = $(EXTRA_SCRIPTS) suite
GENSCRIPTS = mysql-test-run-shell install_test_db mtr mysql-test-run
PRESCRIPTS = mysql-test-run.pl PRESCRIPTS = mysql-test-run.pl
GENSCRIPTS = mysql-test-run-shell \
install_test_db \
mtr \
mysql-test-run
EXTRA_SCRIPTS = mysql-test-run-shell.sh \
install_test_db.sh \
valgrind.supp $(PRESCRIPTS)
EXTRA_DIST_DIRS = t r include lib std_data suite extra
EXTRA_DIST = $(EXTRA_DIST_DIRS) $(EXTRA_SCRIPTS) README
test_SCRIPTS = $(GENSCRIPTS) $(PRESCRIPTS) test_SCRIPTS = $(GENSCRIPTS) $(PRESCRIPTS)
test_DATA = std_data/client-key.pem std_data/client-cert.pem \
std_data/cacert.pem std_data/server-cert.pem \
std_data/server-key.pem
CLEANFILES = $(GENSCRIPTS) CLEANFILES = $(GENSCRIPTS)
INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include -I..
dist-hook:
mkdir -p \
$(distdir)/t \
$(distdir)/extra/binlog_tests \
$(distdir)/extra/rpl_tests \
$(distdir)/r \
$(distdir)/include \
$(distdir)/std_data \
$(distdir)/std_data/ndb_backup50 \
$(distdir)/std_data/ndb_backup51 \
$(distdir)/lib
-$(INSTALL_DATA) $(srcdir)/t/*.def $(distdir)/t
$(INSTALL_DATA) $(srcdir)/t/*.test $(distdir)/t
-$(INSTALL_DATA) $(srcdir)/t/*.imtest $(distdir)/t
$(INSTALL_DATA) $(srcdir)/t/*.sql $(distdir)/t
-$(INSTALL_DATA) $(srcdir)/t/*.disabled $(distdir)/t
$(INSTALL_DATA) $(srcdir)/t/*.opt $(srcdir)/t/*.slave-mi $(distdir)/t
$(INSTALL_SCRIPT) $(srcdir)/t/*.sh $(distdir)/t
$(INSTALL_DATA) $(srcdir)/extra/binlog_tests/*.test $(distdir)/extra/binlog_tests
$(INSTALL_DATA) $(srcdir)/extra/rpl_tests/*.test $(distdir)/extra/rpl_tests
-$(INSTALL_DATA) $(srcdir)/extra/binlog_tests/*.opt $(distdir)/extra/binlog_tests
-$(INSTALL_DATA) $(srcdir)/extra/rpl_tests/*.opt $(distdir)/extra/rpl_tests
$(INSTALL_DATA) $(srcdir)/include/*.inc $(distdir)/include
$(INSTALL_DATA) $(srcdir)/include/*.test $(distdir)/include
$(INSTALL_DATA) $(srcdir)/r/*.result $(srcdir)/r/*.require $(distdir)/r
$(INSTALL_DATA) $(srcdir)/std_data/Moscow_leap $(distdir)/std_data
$(INSTALL_DATA) $(srcdir)/std_data/Index.xml $(distdir)/std_data
$(INSTALL_DATA) $(srcdir)/std_data/*.dat $(srcdir)/std_data/*.000001 $(distdir)/std_data
$(INSTALL_DATA) $(srcdir)/std_data/des_key_file $(distdir)/std_data
$(INSTALL_DATA) $(srcdir)/std_data/*.pem $(distdir)/std_data
$(INSTALL_DATA) $(srcdir)/std_data/*.frm $(distdir)/std_data
$(INSTALL_DATA) $(srcdir)/std_data/*.MY* $(distdir)/std_data
$(INSTALL_DATA) $(srcdir)/std_data/*.cnf $(distdir)/std_data
$(INSTALL_DATA) $(srcdir)/std_data/ndb_backup50/BACKUP* $(distdir)/std_data/ndb_backup50
$(INSTALL_DATA) $(srcdir)/std_data/ndb_backup51/BACKUP* $(distdir)/std_data/ndb_backup51
$(INSTALL_DATA) $(srcdir)/lib/*.pl $(distdir)/lib
-rm -rf `find $(distdir)/suite -type d -name SCCS` $(distdir)/suite/row_lock
install-data-local:
$(mkinstalldirs) \
$(DESTDIR)$(testdir)/t \
$(DESTDIR)$(testdir)/extra/binlog_tests \
$(DESTDIR)$(testdir)/extra/rpl_tests \
$(DESTDIR)$(testdir)/r \
$(DESTDIR)$(testdir)/include \
$(DESTDIR)$(testdir)/std_data \
$(DESTDIR)$(testdir)/std_data/ndb_backup50 \
$(DESTDIR)$(testdir)/std_data/ndb_backup51 \
$(DESTDIR)$(testdir)/lib
$(INSTALL_DATA) $(srcdir)/README $(DESTDIR)$(testdir)
-$(INSTALL_DATA) $(srcdir)/t/*.def $(DESTDIR)$(testdir)/t
$(INSTALL_DATA) $(srcdir)/t/*.test $(DESTDIR)$(testdir)/t
-$(INSTALL_DATA) $(srcdir)/t/*.imtest $(DESTDIR)$(testdir)/t
$(INSTALL_DATA) $(srcdir)/t/*.sql $(DESTDIR)$(testdir)/t
-$(INSTALL_DATA) $(srcdir)/t/*.disabled $(DESTDIR)$(testdir)/t
$(INSTALL_DATA) $(srcdir)/t/*.opt $(DESTDIR)$(testdir)/t
$(INSTALL_SCRIPT) $(srcdir)/t/*.sh $(DESTDIR)$(testdir)/t
$(INSTALL_DATA) $(srcdir)/t/*.slave-mi $(DESTDIR)$(testdir)/t
$(INSTALL_DATA) $(srcdir)/r/*.result $(DESTDIR)$(testdir)/r
$(INSTALL_DATA) $(srcdir)/r/*.require $(DESTDIR)$(testdir)/r
$(INSTALL_DATA) $(srcdir)/extra/binlog_tests/*.test $(DESTDIR)$(testdir)/extra/binlog_tests
$(INSTALL_DATA) $(srcdir)/extra/rpl_tests/*.test $(DESTDIR)$(testdir)/extra/rpl_tests
-$(INSTALL_DATA) $(srcdir)/extra/binlog_tests/*.opt $(DESTDIR)$(testdir)/extra/binlog_tests
-$(INSTALL_DATA) $(srcdir)/extra/rpl_tests/*.opt $(DESTDIR)$(testdir)/extra/rpl_tests
$(INSTALL_DATA) $(srcdir)/include/*.inc $(DESTDIR)$(testdir)/include
$(INSTALL_DATA) $(srcdir)/include/*.test $(DESTDIR)$(testdir)/include
$(INSTALL_DATA) $(srcdir)/std_data/*.dat $(DESTDIR)$(testdir)/std_data
$(INSTALL_DATA) $(srcdir)/std_data/*.*001 $(DESTDIR)$(testdir)/std_data
$(INSTALL_DATA) $(srcdir)/std_data/*.cnf $(DESTDIR)$(testdir)/std_data
$(INSTALL_DATA) $(srcdir)/std_data/des_key_file $(DESTDIR)$(testdir)/std_data
$(INSTALL_DATA) $(srcdir)/std_data/Moscow_leap $(DESTDIR)$(testdir)/std_data
$(INSTALL_DATA) $(srcdir)/std_data/Index.xml $(DESTDIR)$(testdir)/std_data
$(INSTALL_DATA) $(srcdir)/std_data/*.pem $(DESTDIR)$(testdir)/std_data
$(INSTALL_DATA) $(srcdir)/std_data/*.frm $(DESTDIR)$(testdir)/std_data
$(INSTALL_DATA) $(srcdir)/std_data/*.MY* $(DESTDIR)$(testdir)/std_data
$(INSTALL_DATA) $(srcdir)/std_data/*.cnf $(DESTDIR)$(testdir)/std_data
$(INSTALL_DATA) $(srcdir)/std_data/ndb_backup50/BACKUP* $(DESTDIR)$(testdir)/std_data/ndb_backup50
$(INSTALL_DATA) $(srcdir)/std_data/ndb_backup51/BACKUP* $(DESTDIR)$(testdir)/std_data/ndb_backup51
$(INSTALL_DATA) $(srcdir)/lib/*.pl $(DESTDIR)$(testdir)/lib
for f in `(cd $(srcdir); find suite -type f | egrep -v 'SCCS|row_lock')`; \
do \
d=$(DESTDIR)$(testdir)/`dirname $$f`; \
mkdir -p $$d ; \
$(INSTALL_DATA) $(srcdir)/$$f $$d ; \
done
uninstall-local:
@RM@ -f -r $(DESTDIR)$(testdir)
# mtr - a shortcut for executing mysql-test-run.pl # mtr - a shortcut for executing mysql-test-run.pl
mtr: mtr:
$(RM) -f mtr @RM@ -f mtr
$(LN_S) mysql-test-run.pl mtr @LN_S@ mysql-test-run.pl mtr
# mysql-test-run - a shortcut for executing mysql-test-run.pl # mysql-test-run - a shortcut for executing mysql-test-run.pl
mysql-test-run: mysql-test-run:
$(RM) -f mysql-test-run @RM@ -f mysql-test-run
$(LN_S) mysql-test-run.pl mysql-test-run @LN_S@ mysql-test-run.pl mysql-test-run
SUFFIXES = .sh SUFFIXES = .sh
testdir = $(prefix)/mysql-test
.sh: .sh:
@RM@ -f $@ $@-t @RM@ -f $@ $@-t
@SED@ \ @SED@ \
......
...@@ -23,7 +23,8 @@ use IO::File(); ...@@ -23,7 +23,8 @@ use IO::File();
use strict; use strict;
sub collect_test_cases ($); sub collect_test_cases ($);
sub collect_one_test_case ($$$$$$$); sub collect_one_suite ($$);
sub collect_one_test_case ($$$$$$$$$);
sub mtr_options_from_test_file($$); sub mtr_options_from_test_file($$);
...@@ -34,7 +35,120 @@ sub mtr_options_from_test_file($$); ...@@ -34,7 +35,120 @@ sub mtr_options_from_test_file($$);
############################################################################## ##############################################################################
sub collect_test_cases ($) { sub collect_test_cases ($) {
my $suites= shift; # Semicolon separated list of test suites
my $cases = []; # Array of hash
foreach my $suite (split(",", $suites))
{
collect_one_suite($suite, $cases);
}
if ( @::opt_cases )
{
# Check that the tests specified was found
# in at least one suite
foreach my $tname ( @::opt_cases )
{
my $found= 0;
foreach my $test ( @$cases )
{
if ( mtr_match_extension($test->{'name'}, $tname) )
{
$found= 1;
}
}
if ( not $found )
{
mtr_error("Could not find $tname in any suite");
}
}
}
if ( $::opt_reorder )
{
# Reorder the test cases in an order that will make them faster to run
my %sort_criteria;
# Make a mapping of test name to a string that represents how that test
# should be sorted among the other tests. Put the most important criterion
# first, then a sub-criterion, then sub-sub-criterion, et c.
foreach my $tinfo (@$cases)
{
my @criteria = ();
# Look for tests that muct be in run in a defined order
# that is defined by test having the same name except for
# the ending digit
# Put variables into hash
my $test_name= $tinfo->{'name'};
my $depend_on_test_name;
if ( $test_name =~ /^([\D]+)([0-9]{1})$/ )
{
my $base_name= $1;
my $idx= $2;
mtr_verbose("$test_name => $base_name idx=$idx");
if ( $idx > 1 )
{
$idx-= 1;
$base_name= "$base_name$idx";
mtr_verbose("New basename $base_name");
}
foreach my $tinfo2 (@$cases)
{
if ( $tinfo2->{'name'} eq $base_name )
{
mtr_verbose("found dependent test $tinfo2->{'name'}");
$depend_on_test_name=$base_name;
}
}
}
if ( defined $depend_on_test_name )
{
mtr_verbose("Giving $test_name same critera as $depend_on_test_name");
$sort_criteria{$test_name} = $sort_criteria{$depend_on_test_name};
}
else
{
#
# Append the criteria for sorting, in order of importance.
#
push(@criteria, "ndb=" . ($tinfo->{'ndb_test'} ? "1" : "0"));
# Group test with equal options together.
# Ending with "~" makes empty sort later than filled
push(@criteria, join("!", sort @{$tinfo->{'master_opt'}}) . "~");
$sort_criteria{$test_name} = join(" ", @criteria);
}
}
@$cases = sort {
$sort_criteria{$a->{'name'}} . $a->{'name'} cmp
$sort_criteria{$b->{'name'}} . $b->{'name'}; } @$cases;
if ( $::opt_script_debug )
{
# For debugging the sort-order
foreach my $tinfo (@$cases)
{
print("$sort_criteria{$tinfo->{'name'}} -> \t$tinfo->{'name'}\n");
}
}
}
return $cases;
}
sub collect_one_suite($$)
{
my $suite= shift; # Test suite name my $suite= shift; # Test suite name
my $cases= shift; # List of test cases
mtr_verbose("Collecting: $suite");
my $testdir; my $testdir;
my $resdir; my $resdir;
...@@ -50,12 +164,8 @@ sub collect_test_cases ($) { ...@@ -50,12 +164,8 @@ sub collect_test_cases ($) {
$resdir= "$::glob_mysql_test_dir/suite/$suite/r"; $resdir= "$::glob_mysql_test_dir/suite/$suite/r";
} }
my $cases = []; # Array of hash, will be array of C struct
opendir(TESTDIR, $testdir) or mtr_error("Can't open dir \"$testdir\": $!");
# ---------------------------------------------------------------------- # ----------------------------------------------------------------------
# Disable some tests listed in disabled.def # Build a hash of disabled testcases for this suite
# ---------------------------------------------------------------------- # ----------------------------------------------------------------------
my %disabled; my %disabled;
if ( open(DISABLED, "$testdir/disabled.def" ) ) if ( open(DISABLED, "$testdir/disabled.def" ) )
...@@ -71,11 +181,19 @@ sub collect_test_cases ($) { ...@@ -71,11 +181,19 @@ sub collect_test_cases ($) {
close DISABLED; close DISABLED;
} }
# Read suite.opt file
my $suite_opt_file= "$testdir/suite.opt";
my $suite_opts= [];
if ( -f $suite_opt_file )
{
$suite_opts= mtr_get_opts_from_file($suite_opt_file);
}
if ( @::opt_cases ) if ( @::opt_cases )
{ {
# Collect in specified order, no sort
foreach my $tname ( @::opt_cases ) foreach my $tname ( @::opt_cases )
{ {
# Run in specified order, no sort
my $elem= undef; my $elem= undef;
my $component_id= undef; my $component_id= undef;
...@@ -122,7 +240,8 @@ sub collect_test_cases ($) { ...@@ -122,7 +240,8 @@ sub collect_test_cases ($) {
} }
elsif ( ! $mysqld_test_exists and ! $im_test_exists ) elsif ( ! $mysqld_test_exists and ! $im_test_exists )
{ {
mtr_error("Test case $tname is not found"); # Silently skip, could exist in another suite
next;
} }
elsif ( $mysqld_test_exists ) elsif ( $mysqld_test_exists )
{ {
...@@ -136,13 +255,15 @@ sub collect_test_cases ($) { ...@@ -136,13 +255,15 @@ sub collect_test_cases ($) {
} }
} }
collect_one_test_case($testdir,$resdir,$tname,$elem,$cases,\%disabled, collect_one_test_case($testdir,$resdir,$suite,$tname,
$component_id); $elem,$cases,\%disabled,$component_id,
$suite_opts);
} }
closedir TESTDIR;
} }
else else
{ {
opendir(TESTDIR, $testdir) or mtr_error("Can't open dir \"$testdir\": $!");
foreach my $elem ( sort readdir(TESTDIR) ) foreach my $elem ( sort readdir(TESTDIR) )
{ {
my $component_id= undef; my $component_id= undef;
...@@ -165,87 +286,13 @@ sub collect_test_cases ($) { ...@@ -165,87 +286,13 @@ sub collect_test_cases ($) {
next if $::opt_do_test and next if $::opt_do_test and
! defined mtr_match_prefix($elem,$::opt_do_test); ! defined mtr_match_prefix($elem,$::opt_do_test);
collect_one_test_case($testdir,$resdir,$tname,$elem,$cases,\%disabled, collect_one_test_case($testdir,$resdir,$suite,$tname,
$component_id); $elem,$cases,\%disabled,$component_id,
$suite_opts);
} }
closedir TESTDIR; closedir TESTDIR;
} }
# Reorder the test cases in an order that will make them faster to run
if ( $::opt_reorder )
{
my %sort_criteria;
# Make a mapping of test name to a string that represents how that test
# should be sorted among the other tests. Put the most important criterion
# first, then a sub-criterion, then sub-sub-criterion, et c.
foreach my $tinfo (@$cases)
{
my @criteria = ();
# Look for tests that muct be in run in a defined order
# that is defined by test having the same name except for
# the ending digit
# Put variables into hash
my $test_name= $tinfo->{'name'};
my $depend_on_test_name;
if ( $test_name =~ /^([\D]+)([0-9]{1})$/ )
{
my $base_name= $1;
my $idx= $2;
mtr_verbose("$test_name => $base_name idx=$idx");
if ( $idx > 1 )
{
$idx-= 1;
$base_name= "$base_name$idx";
mtr_verbose("New basename $base_name");
}
foreach my $tinfo2 (@$cases)
{
if ( $tinfo2->{'name'} eq $base_name )
{
mtr_verbose("found dependent test $tinfo2->{'name'}");
$depend_on_test_name=$base_name;
}
}
}
if ( defined $depend_on_test_name )
{
mtr_verbose("Giving $test_name same critera as $depend_on_test_name");
$sort_criteria{$test_name} = $sort_criteria{$depend_on_test_name};
}
else
{
#
# Append the criteria for sorting, in order of importance.
#
push(@criteria, "ndb=" . ($tinfo->{'ndb_test'} ? "1" : "0"));
# Group test with equal options together.
# Ending with "~" makes empty sort later than filled
push(@criteria, join("!", sort @{$tinfo->{'master_opt'}}) . "~");
$sort_criteria{$test_name} = join(" ", @criteria);
}
}
@$cases = sort {
$sort_criteria{$a->{'name'}} . $a->{'name'} cmp
$sort_criteria{$b->{'name'}} . $b->{'name'}; } @$cases;
if ( $::opt_script_debug )
{
# For debugging the sort-order
foreach my $tinfo (@$cases)
{
print("$sort_criteria{$tinfo->{'name'}} -> \t$tinfo->{'name'}\n");
}
}
}
return $cases; return $cases;
} }
...@@ -257,14 +304,16 @@ sub collect_test_cases ($) { ...@@ -257,14 +304,16 @@ sub collect_test_cases ($) {
############################################################################## ##############################################################################
sub collect_one_test_case($$$$$$$) { sub collect_one_test_case($$$$$$$$$) {
my $testdir= shift; my $testdir= shift;
my $resdir= shift; my $resdir= shift;
my $suite= shift;
my $tname= shift; my $tname= shift;
my $elem= shift; my $elem= shift;
my $cases= shift; my $cases= shift;
my $disabled=shift; my $disabled=shift;
my $component_id= shift; my $component_id= shift;
my $suite_opts= shift;
my $path= "$testdir/$elem"; my $path= "$testdir/$elem";
...@@ -279,7 +328,7 @@ sub collect_one_test_case($$$$$$$) { ...@@ -279,7 +328,7 @@ sub collect_one_test_case($$$$$$$) {
my $tinfo= {}; my $tinfo= {};
$tinfo->{'name'}= $tname; $tinfo->{'name'}= "$suite.$tname";
$tinfo->{'result_file'}= "$resdir/$tname.result"; $tinfo->{'result_file'}= "$resdir/$tname.result";
$tinfo->{'component_id'} = $component_id; $tinfo->{'component_id'} = $component_id;
push(@$cases, $tinfo); push(@$cases, $tinfo);
...@@ -334,6 +383,15 @@ sub collect_one_test_case($$$$$$$) { ...@@ -334,6 +383,15 @@ sub collect_one_test_case($$$$$$$) {
$tinfo->{'slave_opt'}= []; $tinfo->{'slave_opt'}= [];
$tinfo->{'slave_mi'}= []; $tinfo->{'slave_mi'}= [];
# Add suite opts
foreach my $opt ( @$suite_opts )
{
mtr_verbose($opt);
push(@{$tinfo->{'master_opt'}}, $opt);
push(@{$tinfo->{'slave_opt'}}, $opt);
}
# Add master opts
if ( -f $master_opt_file ) if ( -f $master_opt_file )
{ {
...@@ -394,6 +452,7 @@ sub collect_one_test_case($$$$$$$) { ...@@ -394,6 +452,7 @@ sub collect_one_test_case($$$$$$$) {
} }
} }
# Add slave opts
if ( -f $slave_opt_file ) if ( -f $slave_opt_file )
{ {
my $slave_opt= mtr_get_opts_from_file($slave_opt_file); my $slave_opt= mtr_get_opts_from_file($slave_opt_file);
......
...@@ -48,30 +48,15 @@ sub mtr_verbose (@); ...@@ -48,30 +48,15 @@ sub mtr_verbose (@);
# We can't use diff -u or diff -a as these are not portable # We can't use diff -u or diff -a as these are not portable
sub mtr_show_failed_diff ($) { sub mtr_show_failed_diff ($) {
my $result_file_name= shift; my $tinfo= shift;
# The reject and log files have been dumped to # The reject and log files have been dumped to
# to filenames based on the result_file's name # to filenames based on the result_file's name
my $tname= basename($result_file_name); my $base_file= mtr_match_extension($tinfo->{'result_file'},
$tname=~ s/\..*$//; "result"); # Trim extension
my $reject_file= "$base_file.reject";
my $reject_file= "r/$tname.reject"; my $result_file= "$base_file.result";
my $result_file= "r/$tname.result"; my $log_file= "$base_file.log";
my $log_file= "$::opt_vardir/log/$tname.log";
my $eval_file= "r/$tname.eval";
if ( $::opt_suite ne "main" )
{
$reject_file= "$::glob_mysql_test_dir/suite/$::opt_suite/$reject_file";
$result_file= "$::glob_mysql_test_dir/suite/$::opt_suite/$result_file";
$eval_file= "$::glob_mysql_test_dir/suite/$::opt_suite/$eval_file";
$log_file= "$::glob_mysql_test_dir/suite/$::opt_suite/$log_file";
}
if ( -f $eval_file )
{
$result_file= $eval_file;
}
my $diffopts= $::opt_udiff ? "-u" : "-c"; my $diffopts= $::opt_udiff ? "-u" : "-c";
......
...@@ -132,7 +132,7 @@ our $opt_vs_config = $ENV{'MTR_VS_CONFIG'}; ...@@ -132,7 +132,7 @@ our $opt_vs_config = $ENV{'MTR_VS_CONFIG'};
our $default_vardir; our $default_vardir;
our $opt_usage; our $opt_usage;
our $opt_suite; our $opt_suites= "main,binlog,rpl,rpl_ndb,ndb"; # Default suites to run
our $opt_script_debug= 0; # Script debugging, enable with --script-debug our $opt_script_debug= 0; # Script debugging, enable with --script-debug
our $opt_verbose= 0; # Verbose output, enable with --verbose our $opt_verbose= 0; # Verbose output, enable with --verbose
...@@ -404,7 +404,7 @@ sub main () { ...@@ -404,7 +404,7 @@ sub main () {
else else
{ {
# Figure out which tests we are going to run # Figure out which tests we are going to run
my $tests= collect_test_cases($opt_suite); my $tests= collect_test_cases($opt_suites);
# Turn off NDB and other similar options if no tests use it # Turn off NDB and other similar options if no tests use it
my ($need_ndbcluster,$need_im); my ($need_ndbcluster,$need_im);
...@@ -458,7 +458,7 @@ sub main () { ...@@ -458,7 +458,7 @@ sub main () {
run_report_features(); run_report_features();
} }
run_suite($opt_suite, $tests); run_tests($tests);
} }
mtr_exit(0); mtr_exit(0);
...@@ -474,7 +474,6 @@ sub command_line_setup () { ...@@ -474,7 +474,6 @@ sub command_line_setup () {
# These are defaults for things that are set on the command line # These are defaults for things that are set on the command line
$opt_suite= "main"; # Special default suite
my $opt_comment; my $opt_comment;
$opt_master_myport= 9306; $opt_master_myport= 9306;
...@@ -534,7 +533,7 @@ sub command_line_setup () { ...@@ -534,7 +533,7 @@ sub command_line_setup () {
'skip-slave-binlog' => \$opt_skip_slave_binlog, 'skip-slave-binlog' => \$opt_skip_slave_binlog,
'do-test=s' => \$opt_do_test, 'do-test=s' => \$opt_do_test,
'start-from=s' => \$opt_start_from, 'start-from=s' => \$opt_start_from,
'suite=s' => \$opt_suite, 'suite|suites=s' => \$opt_suites,
'skip-rpl' => \$opt_skip_rpl, 'skip-rpl' => \$opt_skip_rpl,
'skip-im' => \$opt_skip_im, 'skip-im' => \$opt_skip_im,
'skip-test=s' => \$opt_skip_test, 'skip-test=s' => \$opt_skip_test,
...@@ -2806,19 +2805,17 @@ sub run_benchmarks ($) { ...@@ -2806,19 +2805,17 @@ sub run_benchmarks ($) {
############################################################################## ##############################################################################
# #
# Run the test suite # Run the tests
# #
############################################################################## ##############################################################################
sub run_suite () { sub run_tests () {
my ($suite, $tests)= @_; my ($tests)= @_;
mtr_print_thick_line(); mtr_print_thick_line();
mtr_timer_start($glob_timers,"suite", 60 * $opt_suite_timeout); mtr_timer_start($glob_timers,"suite", 60 * $opt_suite_timeout);
mtr_report("Starting Tests in the '$suite' suite");
mtr_report_tests_not_skipped_though_disabled($tests); mtr_report_tests_not_skipped_though_disabled($tests);
mtr_print_header(); mtr_print_header();
...@@ -3281,18 +3278,14 @@ sub run_testcase_check_skip_test($) ...@@ -3281,18 +3278,14 @@ sub run_testcase_check_skip_test($)
sub do_before_run_mysqltest($) sub do_before_run_mysqltest($)
{ {
my $tinfo= shift; my $tinfo= shift;
my $tname= $tinfo->{'name'};
# Remove old files produced by mysqltest # Remove old files produced by mysqltest
my $result_dir= "r"; my $base_file= mtr_match_extension($tinfo->{'result_file'},
if ( $opt_suite ne "main" ) "result"); # Trim extension
{ unlink("$base_file.reject");
$result_dir= "suite/$opt_suite/r"; unlink("$base_file.progress");
} unlink("$base_file.log");
unlink("$result_dir/$tname.reject"); unlink("$base_file.warnings");
unlink("$result_dir/$tname.progress");
unlink("$result_dir/$tname.log");
unlink("$result_dir/$tname.warnings");
if (!$opt_extern) if (!$opt_extern)
{ {
...@@ -3311,7 +3304,6 @@ sub do_before_run_mysqltest($) ...@@ -3311,7 +3304,6 @@ sub do_before_run_mysqltest($)
sub do_after_run_mysqltest($) sub do_after_run_mysqltest($)
{ {
my $tinfo= shift; my $tinfo= shift;
my $tname= $tinfo->{'name'};
# Save info from this testcase run to mysqltest.log # Save info from this testcase run to mysqltest.log
mtr_appendfile_to_file($path_current_test_log, $path_mysqltest_log) mtr_appendfile_to_file($path_current_test_log, $path_mysqltest_log)
...@@ -3635,7 +3627,7 @@ sub report_failure_and_restart ($) { ...@@ -3635,7 +3627,7 @@ sub report_failure_and_restart ($) {
my $tinfo= shift; my $tinfo= shift;
mtr_report_test_failed($tinfo); mtr_report_test_failed($tinfo);
mtr_show_failed_diff($tinfo->{'result_file'}); mtr_show_failed_diff($tinfo);
print "\n"; print "\n";
if ( $opt_force ) if ( $opt_force )
{ {
...@@ -3774,15 +3766,7 @@ sub mysqld_arguments ($$$$) { ...@@ -3774,15 +3766,7 @@ sub mysqld_arguments ($$$$) {
if ( $mysql_version_id >= 50036) if ( $mysql_version_id >= 50036)
{ {
# By default, prevent the started mysqld to access files outside of vardir # By default, prevent the started mysqld to access files outside of vardir
my $secure_file_dir= $opt_vardir; mtr_add_arg($args, "%s--secure-file-priv=%s", $prefix, $opt_vardir);
if ( $opt_suite ne "main" )
{
# When running a suite other than default allow the mysqld
# access to subdirs of mysql-test/ in order to make it possible
# to "load data" from the suites data/ directory.
$secure_file_dir= $glob_mysql_test_dir;
}
mtr_add_arg($args, "%s--secure-file-priv=%s", $prefix, $secure_file_dir);
} }
if ( $mysql_version_id >= 50000 ) if ( $mysql_version_id >= 50000 )
...@@ -5159,7 +5143,9 @@ Options to control what test suites or cases to run ...@@ -5159,7 +5143,9 @@ Options to control what test suites or cases to run
ndb-extra Run extra tests from ndb directory ndb-extra Run extra tests from ndb directory
do-test=PREFIX Run test cases which name are prefixed with PREFIX do-test=PREFIX Run test cases which name are prefixed with PREFIX
start-from=PREFIX Run test cases starting from test prefixed with PREFIX start-from=PREFIX Run test cases starting from test prefixed with PREFIX
suite=NAME Run the test suite named NAME. The default is "main" suite[s]=NAME1,..,NAMEN Collect tests in suites from the comma separated
list of suite names.
The default is: "$opt_suites"
skip-rpl Skip the replication test cases. skip-rpl Skip the replication test cases.
skip-im Don't start IM, and skip the IM test cases skip-im Don't start IM, and skip the IM test cases
skip-test=PREFIX Skip test cases which name are prefixed with PREFIX skip-test=PREFIX Skip test cases which name are prefixed with PREFIX
......
mysqld is alive
End of 5.0 tests.
--secure-file-priv=$MYSQL_TEST_DIR
--secure-file-priv=$MYSQL_TEST_DIR
##############################################################################
#
# List the test cases that are to be disabled temporarily.
#
# Separate the test case name and the comment with ':'.
#
# <testcasename> : BUG#<xxxx> <date disabled> <disabler> <comment>
#
# Do not use any TAB characters for whitespace.
#
##############################################################################
ndb_autodiscover : BUG#18952 2006-02-16 jmiller Needs to be fixed w.r.t binlog
ndb_autodiscover2 : BUG#18952 2006-02-16 jmiller Needs to be fixed w.r.t binlog
ndb_load : BUG#17233 2006-05-04 tomas failed load data from infile causes mysqld dbug_assert, binlog not flushed
partition_03ndb : BUG#16385 2006-03-24 mikael Partitions: crash when updating a range partitioned NDB table
ndb_partition_error2 : HF is not sure if the test can work as internded on all the platforms
# the below testcase have been reworked to avoid the bug, test contains comment, keep bug open
#ndb_binlog_ddl_multi : BUG#18976 2006-04-10 kent CRBR: multiple binlog, second binlog may miss schema log events
#ndb_binlog_discover : bug#21806 2006-08-24
#ndb_autodiscover3 : bug#21806
##############################################################################
#
# List the test cases that are to be disabled temporarily.
#
# Separate the test case name and the comment with ':'.
#
# <testcasename> : BUG#<xxxx> <date disabled> <disabler> <comment>
#
# Do not use any TAB characters for whitespace.
#
##############################################################################
rpl_ddl : BUG#26418 2007-03-01 mleich Slave out of sync after CREATE/DROP TEMPORARY TABLE + ROLLBACK on master
rpl_innodb_mixed_ddl : Bug #29363 rpl.rpl_innodb_mixed_* test failures
rpl_innodb_mixed_dml : Bug #29363 rpl.rpl_innodb_mixed_* test failures
rpl_invoked_features : BUG#29020 2007-06-21 Lars Non-deterministic test case
##############################################################################
#
# List the test cases that are to be disabled temporarily.
#
# Separate the test case name and the comment with ':'.
#
# <testcasename> : BUG#<xxxx> <date disabled> <disabler> <comment>
#
# Do not use any TAB characters for whitespace.
#
##############################################################################
rpl_ndb_circular_simplex : BUG#27972 2007-04-20 mats Slave cannot start where it stopped
rpl_ndb_2innodb : BUG#19227 2006-04-20 pekka pk delete apparently not replicated
rpl_ndb_2myisam : BUG#19227 Seems to pass currently
rpl_ndb_dd_partitions : BUG#19259 2006-04-21 rpl_ndb_dd_partitions fails on s/AMD
rpl_ddl : BUG#26418 2007-03-01 mleich Slave out of sync after CREATE/DROP TEMPORARY TABLE + ROLLBACK on master
rpl_ndb_innodb2ndb : Bug #19710 Cluster replication to partition table fails on DELETE FROM statement
rpl_ndb_myisam2ndb : Bug #19710 Cluster replication to partition table fails on DELETE FROM statement
#rpl_row_blob_innodb : BUG#18980 2006-04-10 kent Test fails randomly
rpl_ndb_ddl : BUG#28798 2007-05-31 lars Valgrind failure in NDB
# the below testcase have been reworked to avoid the bug, test contains comment, keep bug open
#rpl_ndb_dd_advance : Bug#25913 rpl_ndb_dd_advance fails randomly
...@@ -21,32 +21,8 @@ im_instance_conf : BUG#28743 Instance manager generates warnings in test ...@@ -21,32 +21,8 @@ im_instance_conf : BUG#28743 Instance manager generates warnings in test
im_utils : BUG#28743 Instance manager generates warnings in test suite im_utils : BUG#28743 Instance manager generates warnings in test suite
innodb : Disabling test case awaiting reply from Innobase innodb : Disabling test case awaiting reply from Innobase
concurrent_innodb : BUG#21579 2006-08-11 mleich innodb_concurrent random failures with varying differences concurrent_innodb : BUG#21579 2006-08-11 mleich innodb_concurrent random failures with varying differences
ndb_autodiscover : BUG#18952 2006-02-16 jmiller Needs to be fixed w.r.t binlog
ndb_autodiscover2 : BUG#18952 2006-02-16 jmiller Needs to be fixed w.r.t binlog
ndb_load : BUG#17233 2006-05-04 tomas failed load data from infile causes mysqld dbug_assert, binlog not flushed
partition_03ndb : BUG#16385 2006-03-24 mikael Partitions: crash when updating a range partitioned NDB table
rpl_ndb_circular_simplex : BUG#27972 2007-04-20 mats Slave cannot start where it stopped
rpl_ndb_2innodb : BUG#19227 2006-04-20 pekka pk delete apparently not replicated
rpl_ndb_2myisam : BUG#19227 Seems to pass currently
rpl_ndb_dd_partitions : BUG#19259 2006-04-21 rpl_ndb_dd_partitions fails on s/AMD
rpl_ddl : BUG#26418 2007-03-01 mleich Slave out of sync after CREATE/DROP TEMPORARY TABLE + ROLLBACK on master
rpl_ndb_innodb2ndb : Bug #19710 Cluster replication to partition table fails on DELETE FROM statement
rpl_ndb_myisam2ndb : Bug #19710 Cluster replication to partition table fails on DELETE FROM statement
#rpl_row_blob_innodb : BUG#18980 2006-04-10 kent Test fails randomly
rpl_ndb_ddl : BUG#28798 2007-05-31 lars Valgrind failure in NDB
rpl_invoked_features : BUG#29020 2007-06-21 Lars Non-deterministic test case
ctype_big5 : BUG#26711 2007-06-21 Lars Test has never worked on Double Whopper ctype_big5 : BUG#26711 2007-06-21 Lars Test has never worked on Double Whopper
# the below testcase have been reworked to avoid the bug, test contains comment, keep bug open
#ndb_binlog_ddl_multi : BUG#18976 2006-04-10 kent CRBR: multiple binlog, second binlog may miss schema log events
#ndb_binlog_discover : bug#21806 2006-08-24
#ndb_autodiscover3 : bug#21806
#rpl_ndb_dd_advance : Bug#25913 rpl_ndb_dd_advance fails randomly
ndb_partition_error2 : HF is not sure if the test can work as internded on all the platforms
im_options_set : Bug#20294: Instance manager tests fail randomly im_options_set : Bug#20294: Instance manager tests fail randomly
im_options_unset : Bug#20294: Instance manager tests fail randomly im_options_unset : Bug#20294: Instance manager tests fail randomly
......
--skip-grant-tables --loose-shared-memory-base-name=HeyMrBaseNameXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX --loose-shared-memory=1
# Windows-specific tests
--source include/windows.inc
#
# Bug #24924: shared-memory-base-name that is too long causes buffer overflow
#
--exec $MYSQLADMIN --no-defaults --shared-memory-base-name=HeyMrBaseNameXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ping
--echo End of 5.0 tests.
...@@ -38,8 +38,7 @@ mysqld_LDADD = @MYSQLD_EXTRA_LDFLAGS@ \ ...@@ -38,8 +38,7 @@ mysqld_LDADD = @MYSQLD_EXTRA_LDFLAGS@ \
@pstack_libs@ \ @pstack_libs@ \
@mysql_plugin_libs@ \ @mysql_plugin_libs@ \
$(LDADD) $(CXXLDFLAGS) $(WRAPLIBS) @LIBDL@ \ $(LDADD) $(CXXLDFLAGS) $(WRAPLIBS) @LIBDL@ \
$(yassl_libs) $(openssl_libs) \ $(yassl_libs) $(openssl_libs) @MYSQLD_EXTRA_LIBS@
@MYSQLD_EXTRA_LIBS@
noinst_HEADERS = item.h item_func.h item_sum.h item_cmpfunc.h \ noinst_HEADERS = item.h item_func.h item_sum.h item_cmpfunc.h \
item_strfunc.h item_timefunc.h \ item_strfunc.h item_timefunc.h \
......
...@@ -4034,7 +4034,7 @@ int MYSQL_BIN_LOG::write_cache(IO_CACHE *cache, bool lock_log, bool sync_log) ...@@ -4034,7 +4034,7 @@ int MYSQL_BIN_LOG::write_cache(IO_CACHE *cache, bool lock_log, bool sync_log)
{ {
/* we've got a full event-header, and it came in one piece */ /* we've got a full event-header, and it came in one piece */
uchar *log_pos= cache->read_pos + hdr_offs + LOG_POS_OFFSET; uchar *log_pos= (uchar *)cache->read_pos + hdr_offs + LOG_POS_OFFSET;
/* fix end_log_pos */ /* fix end_log_pos */
val= uint4korr(log_pos) + group; val= uint4korr(log_pos) + group;
......
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