mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 03:52:35 +01:00
Bug #19083 ./mysql-test-run.pl starts NDB when it is not needed
Now NDB is only initialized and started when the tests that are being run will make use of it. The same thing is also done for the slave databases and the instance manager. After review from Magnus: Only take a snapshot of the data directories that are in use. mysql-test/mysql-test-run.pl: Only initialize (and start) NDB, the instance manager, and the slaves when we have tests that require them. Also, only snapshot the data directories that we are going to use. mysql-test/ndb/ndbcluster.sh: Fix text message that has always annoyed me
This commit is contained in:
parent
d8df724af2
commit
639c9dbc85
2 changed files with 71 additions and 40 deletions
|
@ -333,6 +333,7 @@ our @data_dir_lst;
|
|||
sub main ();
|
||||
sub initial_setup ();
|
||||
sub command_line_setup ();
|
||||
sub snapshot_setup ();
|
||||
sub executable_setup ();
|
||||
sub environment_setup ();
|
||||
sub kill_running_server ();
|
||||
|
@ -343,7 +344,7 @@ sub ndbcluster_install ();
|
|||
sub ndbcluster_start ($);
|
||||
sub ndbcluster_stop ();
|
||||
sub run_benchmarks ($);
|
||||
sub run_tests ();
|
||||
sub initialize_servers ();
|
||||
sub mysql_install_db ();
|
||||
sub install_db ($$);
|
||||
sub run_testcase ($);
|
||||
|
@ -374,7 +375,7 @@ sub main () {
|
|||
command_line_setup();
|
||||
executable_setup();
|
||||
|
||||
check_ndbcluster_support();
|
||||
check_ndbcluster_support(); # We check whether to actually use it later
|
||||
check_ssl_support();
|
||||
|
||||
environment_setup();
|
||||
|
@ -389,24 +390,7 @@ sub main () {
|
|||
{
|
||||
gprof_prepare();
|
||||
}
|
||||
|
||||
if ( ! $glob_use_running_server )
|
||||
{
|
||||
if ( $opt_start_dirty )
|
||||
{
|
||||
kill_running_server();
|
||||
}
|
||||
else
|
||||
{
|
||||
kill_and_cleanup();
|
||||
mysql_install_db();
|
||||
if ( $opt_force )
|
||||
{
|
||||
save_installed_db();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if ( $opt_start_dirty )
|
||||
{
|
||||
if ( ndbcluster_start($opt_with_ndbcluster) )
|
||||
|
@ -424,15 +408,35 @@ sub main () {
|
|||
}
|
||||
elsif ( $opt_bench )
|
||||
{
|
||||
initialize_servers();
|
||||
run_benchmarks(shift); # Shift what? Extra arguments?!
|
||||
}
|
||||
elsif ( $opt_stress )
|
||||
{
|
||||
initialize_servers();
|
||||
run_stress_test()
|
||||
}
|
||||
else
|
||||
{
|
||||
run_tests();
|
||||
# Figure out which tests we are going to run
|
||||
my $tests= collect_test_cases($opt_suite);
|
||||
|
||||
# Turn off NDB and other similar options if no tests use it
|
||||
my ($need_ndbcluster,$need_im,$need_slave);
|
||||
foreach my $test (@$tests)
|
||||
{
|
||||
$need_ndbcluster||= $test->{ndb_test};
|
||||
$need_im||= $test->{component_id} eq 'im';
|
||||
$need_slave||= $test->{slave_num};
|
||||
}
|
||||
$opt_with_ndbcluster= 0 unless $need_ndbcluster;
|
||||
$opt_skip_im= 1 unless $need_im;
|
||||
$opt_skip_rpl= 1 unless $need_slave;
|
||||
|
||||
snapshot_setup();
|
||||
initialize_servers();
|
||||
|
||||
run_suite($opt_suite, $tests);
|
||||
}
|
||||
|
||||
mtr_exit(0);
|
||||
|
@ -983,20 +987,29 @@ sub command_line_setup () {
|
|||
$path_mysqltest_log= "$opt_vardir/log/mysqltest.log";
|
||||
|
||||
$path_snapshot= "$opt_tmpdir/snapshot_$opt_master_myport/";
|
||||
}
|
||||
|
||||
sub snapshot_setup () {
|
||||
|
||||
# Make a list of all data_dirs
|
||||
@data_dir_lst = (
|
||||
$master->[0]->{'path_myddir'},
|
||||
$master->[1]->{'path_myddir'},
|
||||
$slave->[0]->{'path_myddir'},
|
||||
$slave->[1]->{'path_myddir'},
|
||||
$slave->[2]->{'path_myddir'});
|
||||
$master->[1]->{'path_myddir'});
|
||||
|
||||
foreach my $instance (@{$instance_manager->{'instances'}})
|
||||
unless ($opt_skip_rpl)
|
||||
{
|
||||
push(@data_dir_lst, $instance->{'path_datadir'});
|
||||
push @data_dir_lst, ($slave->[0]->{'path_myddir'},
|
||||
$slave->[1]->{'path_myddir'},
|
||||
$slave->[2]->{'path_myddir'});
|
||||
}
|
||||
|
||||
unless ($opt_skip_im)
|
||||
{
|
||||
foreach my $instance (@{$instance_manager->{'instances'}})
|
||||
{
|
||||
push(@data_dir_lst, $instance->{'path_datadir'});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -1388,7 +1401,7 @@ sub check_ndbcluster_support () {
|
|||
|
||||
if ($opt_with_ndbcluster)
|
||||
{
|
||||
mtr_report("Using ndbcluster");
|
||||
mtr_report("Using ndbcluster if necessary");
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -1404,7 +1417,7 @@ sub check_ndbcluster_support () {
|
|||
$opt_with_ndbcluster= 0;
|
||||
return;
|
||||
}
|
||||
mtr_report("Using ndbcluster, mysqld supports it");
|
||||
mtr_report("Using ndbcluster if necessary, mysqld supports it");
|
||||
$opt_with_ndbcluster= 1;
|
||||
return;
|
||||
}
|
||||
|
@ -1561,12 +1574,9 @@ sub run_benchmarks ($) {
|
|||
|
||||
# FIXME how to specify several suites to run? Comma separated list?
|
||||
|
||||
sub run_tests () {
|
||||
run_suite($opt_suite);
|
||||
}
|
||||
|
||||
sub run_suite () {
|
||||
my $suite= shift;
|
||||
my ($suite, $tests)= @_;
|
||||
|
||||
mtr_print_thick_line();
|
||||
|
||||
|
@ -1574,8 +1584,6 @@ sub run_suite () {
|
|||
|
||||
mtr_timer_start($glob_timers,"suite", 60 * $opt_suite_timeout);
|
||||
|
||||
my $tests= collect_test_cases($suite);
|
||||
|
||||
mtr_report("Starting Tests in the '$suite' suite");
|
||||
|
||||
mtr_print_header();
|
||||
|
@ -1617,14 +1625,37 @@ sub run_suite () {
|
|||
#
|
||||
##############################################################################
|
||||
|
||||
sub initialize_servers () {
|
||||
if ( ! $glob_use_running_server )
|
||||
{
|
||||
if ( $opt_start_dirty )
|
||||
{
|
||||
kill_running_server();
|
||||
}
|
||||
else
|
||||
{
|
||||
kill_and_cleanup();
|
||||
mysql_install_db();
|
||||
if ( $opt_force )
|
||||
{
|
||||
save_installed_db();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sub mysql_install_db () {
|
||||
|
||||
# FIXME not exactly true I think, needs improvements
|
||||
install_db('master', $master->[0]->{'path_myddir'});
|
||||
install_db('master', $master->[1]->{'path_myddir'});
|
||||
install_db('slave', $slave->[0]->{'path_myddir'});
|
||||
install_db('slave', $slave->[1]->{'path_myddir'});
|
||||
install_db('slave', $slave->[2]->{'path_myddir'});
|
||||
|
||||
if ( ! $opt_skip_rpl )
|
||||
{
|
||||
install_db('slave', $slave->[0]->{'path_myddir'});
|
||||
install_db('slave', $slave->[1]->{'path_myddir'});
|
||||
install_db('slave', $slave->[2]->{'path_myddir'});
|
||||
}
|
||||
|
||||
if ( ! $opt_skip_im )
|
||||
{
|
||||
|
|
|
@ -232,8 +232,8 @@ cat `find "$fs_ndb" -name 'ndb_*.pid'` > "$fs_ndb/$pidfile"
|
|||
|
||||
# test if Ndb Cluster starts properly
|
||||
|
||||
echo "Waiting for started..."
|
||||
if ( $exec_waiter ) | grep "NDBT_ProgramExit: 0 - OK"; then :; else
|
||||
echo "Waiting for NDB data nodes to start..."
|
||||
if ( $exec_waiter ) | grep -q "NDBT_ProgramExit: 0 - OK"; then :; else
|
||||
echo "Ndbcluster startup failed"
|
||||
stop_default_ndbcluster
|
||||
exit 1
|
||||
|
|
Loading…
Reference in a new issue