diff options
-rwxr-xr-x | mysql-test/mysql-test-run.pl | 107 | ||||
-rw-r--r-- | mysql-test/ndb/ndbcluster.sh | 4 |
2 files changed, 71 insertions, 40 deletions
diff --git a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl index a045441e046..63bc9115891 100755 --- a/mysql-test/mysql-test-run.pl +++ b/mysql-test/mysql-test-run.pl @@ -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 ) { diff --git a/mysql-test/ndb/ndbcluster.sh b/mysql-test/ndb/ndbcluster.sh index c09c013552e..c17b3d316f4 100644 --- a/mysql-test/ndb/ndbcluster.sh +++ b/mysql-test/ndb/ndbcluster.sh @@ -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 |