Make --with-ndbcluster only be valid together with --bench

Improve code that detects if ndb shuold be installed
Remove call to stop_all_servers after install db, if any servers are still running 
and need to be stopped they will be stopped atuomatically
parent d45b61b1
...@@ -59,7 +59,9 @@ sub collect_test_cases ($) { ...@@ -59,7 +59,9 @@ sub collect_test_cases ($) {
if ( @::opt_cases ) if ( @::opt_cases )
{ {
foreach my $tname ( @::opt_cases ) { # Run in specified order, no sort 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;
...@@ -85,7 +87,7 @@ sub collect_test_cases ($) { ...@@ -85,7 +87,7 @@ sub collect_test_cases ($) {
# If target component is known, check that the specified test case # If target component is known, check that the specified test case
# exists. # exists.
# #
# Otherwise, try to guess the target component. # Otherwise, try to guess the target component.
if ( $component_id ) if ( $component_id )
...@@ -127,7 +129,8 @@ sub collect_test_cases ($) { ...@@ -127,7 +129,8 @@ sub collect_test_cases ($) {
} }
else else
{ {
foreach my $elem ( sort readdir(TESTDIR) ) { foreach my $elem ( sort readdir(TESTDIR) )
{
my $component_id= undef; my $component_id= undef;
my $tname= undef; my $tname= undef;
...@@ -144,7 +147,9 @@ sub collect_test_cases ($) { ...@@ -144,7 +147,9 @@ sub collect_test_cases ($) {
next; next;
} }
next if $::opt_do_test and ! defined mtr_match_prefix($elem,$::opt_do_test); # Skip tests that does not match the --do-test= filter
next if $::opt_do_test and
! defined mtr_match_prefix($elem,$::opt_do_test);
collect_one_test_case($testdir,$resdir,$tname,$elem,$cases,\%disabled, collect_one_test_case($testdir,$resdir,$tname,$elem,$cases,\%disabled,
$component_id); $component_id);
...@@ -152,7 +157,7 @@ sub collect_test_cases ($) { ...@@ -152,7 +157,7 @@ sub collect_test_cases ($) {
closedir TESTDIR; closedir TESTDIR;
} }
# Reorder the test cases in an order that wil make them faster to run # Reorder the test cases in an order that will make them faster to run
if ( $::opt_reorder ) if ( $::opt_reorder )
{ {
...@@ -306,40 +311,6 @@ sub collect_one_test_case($$$$$$$) { ...@@ -306,40 +311,6 @@ sub collect_one_test_case($$$$$$$) {
$tinfo->{'slave_num'}= 1; $tinfo->{'slave_num'}= 1;
} }
if ( $::opt_with_ndbcluster or defined mtr_match_substring($tname,"ndb") )
{
# This is an ndb test or all tests should be run with ndb cluster started
$tinfo->{'ndb_test'}= 1;
if ( ! $::opt_ndbcluster_supported )
{
# Ndb is not supported, skip them
$tinfo->{'skip'}= 1;
$tinfo->{'comment'}= "No ndbcluster support";
return;
}
elsif ( $::opt_skip_ndbcluster )
{
# All ndb test's should be skipped
$tinfo->{'skip'}= 1;
$tinfo->{'comment'}= "No ndbcluster tests(--skip-ndbcluster)";
return;
}
}
else
{
# This is not a ndb test
$tinfo->{'ndb_test'}= 0;
if ( $::opt_with_ndbcluster_only )
{
# Only the ndb test should be run, all other should be skipped
$tinfo->{'skip'}= 1;
$tinfo->{'comment'}= "Only ndbcluster tests(--with-ndbcluster-only)";
return;
}
}
# FIXME what about embedded_server + ndbcluster, skip ?!
my $master_opt_file= "$testdir/$tname-master.opt"; my $master_opt_file= "$testdir/$tname-master.opt";
my $slave_opt_file= "$testdir/$tname-slave.opt"; my $slave_opt_file= "$testdir/$tname-slave.opt";
my $slave_mi_file= "$testdir/$tname.slave-mi"; my $slave_mi_file= "$testdir/$tname.slave-mi";
...@@ -550,6 +521,37 @@ sub collect_one_test_case($$$$$$$) { ...@@ -550,6 +521,37 @@ sub collect_one_test_case($$$$$$$) {
$tinfo->{'comment'}= "Test need debug binaries"; $tinfo->{'comment'}= "Test need debug binaries";
return; return;
} }
if ( $tinfo->{'ndb_test'} )
{
# This is a NDB test
if ( ! $::glob_ndbcluster_supported )
{
# Ndb is not supported, skip it
$tinfo->{'skip'}= 1;
$tinfo->{'comment'}= "No ndbcluster support";
return;
}
elsif ( $::opt_skip_ndbcluster )
{
# All ndb test's should be skipped
$tinfo->{'skip'}= 1;
$tinfo->{'comment'}= "No ndbcluster tests(--skip-ndbcluster)";
return;
}
}
else
{
# This is not a ndb test
if ( $::opt_with_ndbcluster_only )
{
# Only the ndb test should be run, all other should be skipped
$tinfo->{'skip'}= 1;
$tinfo->{'comment'}= "Only ndbcluster tests(--with-ndbcluster-only)";
return;
}
}
} }
} }
...@@ -563,6 +565,7 @@ our @tags= ...@@ -563,6 +565,7 @@ our @tags=
["include/have_binlog_format_statement.inc", "binlog_format", "stmt"], ["include/have_binlog_format_statement.inc", "binlog_format", "stmt"],
["include/big_test.inc", "big_test", 1], ["include/big_test.inc", "big_test", 1],
["include/have_debug.inc", "need_debug", 1], ["include/have_debug.inc", "need_debug", 1],
["include/have_ndb.inc", "ndb_test", 1],
["include/have_ndb_extra.inc", "ndb_extra", 1], ["include/have_ndb_extra.inc", "ndb_extra", 1],
["require_manager", "require_manager", 1], ["require_manager", "require_manager", 1],
); );
......
...@@ -65,6 +65,7 @@ use IO::Socket; ...@@ -65,6 +65,7 @@ use IO::Socket;
use IO::Socket::INET; use IO::Socket::INET;
use Data::Dumper; use Data::Dumper;
use strict; use strict;
use warnings;
use diagnostics; use diagnostics;
our $glob_win32_perl= ($^O eq "MSWin32"); # ActiveState Win32 Perl our $glob_win32_perl= ($^O eq "MSWin32"); # ActiveState Win32 Perl
...@@ -277,7 +278,7 @@ our $opt_skip_ndbcluster= 0; ...@@ -277,7 +278,7 @@ our $opt_skip_ndbcluster= 0;
our $opt_skip_ndbcluster_slave= 0; our $opt_skip_ndbcluster_slave= 0;
our $opt_with_ndbcluster= 0; our $opt_with_ndbcluster= 0;
our $opt_with_ndbcluster_only= 0; our $opt_with_ndbcluster_only= 0;
our $opt_ndbcluster_supported= 0; our $glob_ndbcluster_supported= 0;
our $opt_ndb_extra_test= 0; our $opt_ndb_extra_test= 0;
our $opt_skip_master_binlog= 0; our $opt_skip_master_binlog= 0;
our $opt_skip_slave_binlog= 0; our $opt_skip_slave_binlog= 0;
...@@ -572,10 +573,10 @@ sub command_line_setup () { ...@@ -572,10 +573,10 @@ sub command_line_setup () {
'compress' => \$opt_compress, 'compress' => \$opt_compress,
'bench' => \$opt_bench, 'bench' => \$opt_bench,
'small-bench' => \$opt_small_bench, 'small-bench' => \$opt_small_bench,
'with-ndbcluster' => \$opt_with_ndbcluster,
# Control what test suites or cases to run # Control what test suites or cases to run
'force' => \$opt_force, 'force' => \$opt_force,
'with-ndbcluster' => \$opt_with_ndbcluster,
'with-ndbcluster-only' => \$opt_with_ndbcluster_only, 'with-ndbcluster-only' => \$opt_with_ndbcluster_only,
'skip-ndbcluster|skip-ndb' => \$opt_skip_ndbcluster, 'skip-ndbcluster|skip-ndb' => \$opt_skip_ndbcluster,
'skip-ndbcluster-slave|skip-ndb-slave' 'skip-ndbcluster-slave|skip-ndb-slave'
...@@ -846,9 +847,9 @@ sub command_line_setup () { ...@@ -846,9 +847,9 @@ sub command_line_setup () {
# -------------------------------------------------------------------------- # --------------------------------------------------------------------------
# Ndb cluster flags # Ndb cluster flags
# -------------------------------------------------------------------------- # --------------------------------------------------------------------------
if ( $opt_with_ndbcluster and $opt_skip_ndbcluster) if ( $opt_with_ndbcluster and !$opt_bench)
{ {
mtr_error("Can't specify both --with-ndbcluster and --skip-ndbcluster"); mtr_error("Can only use --with-ndbcluster togheter with --bench");
} }
if ( $opt_ndbconnectstring ) if ( $opt_ndbconnectstring )
...@@ -1485,7 +1486,7 @@ sub environment_setup () { ...@@ -1485,7 +1486,7 @@ sub environment_setup () {
# -------------------------------------------------------------------------- # --------------------------------------------------------------------------
# Add the path where libndbclient can be found # Add the path where libndbclient can be found
# -------------------------------------------------------------------------- # --------------------------------------------------------------------------
if ( $opt_ndbcluster_supported ) if ( $glob_ndbcluster_supported )
{ {
push(@ld_library_paths, "$glob_basedir/storage/ndb/src/.libs"); push(@ld_library_paths, "$glob_basedir/storage/ndb/src/.libs");
} }
...@@ -1870,6 +1871,8 @@ sub cleanup_stale_files () { ...@@ -1870,6 +1871,8 @@ sub cleanup_stale_files () {
rmtree(readlink($opt_vardir)); rmtree(readlink($opt_vardir));
# Remove the entire "var" dir # Remove the entire "var" dir
rmtree("$opt_vardir/"); rmtree("$opt_vardir/");
# Remove the "var" symlink
unlink($opt_vardir);
} }
else else
{ {
...@@ -2042,7 +2045,7 @@ sub check_ndbcluster_support ($) { ...@@ -2042,7 +2045,7 @@ sub check_ndbcluster_support ($) {
$opt_skip_ndbcluster_slave= 1; $opt_skip_ndbcluster_slave= 1;
return; return;
} }
$opt_ndbcluster_supported= 1; $glob_ndbcluster_supported= 1;
mtr_report("Using ndbcluster when necessary, mysqld supports it"); mtr_report("Using ndbcluster when necessary, mysqld supports it");
if ( $mysql_version_id < 50100 ) if ( $mysql_version_id < 50100 )
...@@ -2059,11 +2062,6 @@ sub check_ndbcluster_support ($) { ...@@ -2059,11 +2062,6 @@ sub check_ndbcluster_support ($) {
sub ndbcluster_start_install ($) { sub ndbcluster_start_install ($) {
my $cluster= shift; my $cluster= shift;
if ( $opt_skip_ndbcluster or $glob_use_running_ndbcluster )
{
return 0;
}
mtr_report("Installing $cluster->{'name'} Cluster"); mtr_report("Installing $cluster->{'name'} Cluster");
mkdir($cluster->{'data_dir'}); mkdir($cluster->{'data_dir'});
...@@ -2477,11 +2475,24 @@ sub mysql_install_db () { ...@@ -2477,11 +2475,24 @@ sub mysql_install_db () {
my $cluster_started_ok= 1; # Assume it can be started my $cluster_started_ok= 1; # Assume it can be started
if (ndbcluster_start_install($clusters->[0]) || if ($opt_skip_ndbcluster || $glob_use_running_ndbcluster)
($max_slave_num && !$opt_skip_ndbcluster_slave && {
ndbcluster_start_install($clusters->[1]))) # Don't install master cluster
}
elsif (ndbcluster_start_install($clusters->[0]))
{
mtr_warning("Failed to start install of $clusters->[0]->{name}");
$cluster_started_ok= 0;
}
if ($max_slave_num == 0 ||
$opt_skip_ndbcluster_slave || $glob_use_running_ndbcluster_slave)
{ {
mtr_warning("Failed to start install of cluster"); # Don't install slave cluster
}
elsif (ndbcluster_start_install($clusters->[1]))
{
mtr_warning("Failed to start install of $clusters->[1]->{name}");
$cluster_started_ok= 0; $cluster_started_ok= 0;
} }
...@@ -2514,9 +2525,6 @@ sub mysql_install_db () { ...@@ -2514,9 +2525,6 @@ sub mysql_install_db () {
} }
} }
# Stop clusters...
stop_all_servers();
return 0; return 0;
} }
...@@ -3592,14 +3600,14 @@ sub run_testcase_need_master_restart($) ...@@ -3592,14 +3600,14 @@ sub run_testcase_need_master_restart($)
mtr_verbose("Restart master: Restart forced with --force-restart"); mtr_verbose("Restart master: Restart forced with --force-restart");
} }
elsif ( ! $opt_skip_ndbcluster and elsif ( ! $opt_skip_ndbcluster and
$tinfo->{'ndb_test'} == 0 and !$tinfo->{'ndb_test'} and
$clusters->[0]->{'pid'} != 0 ) $clusters->[0]->{'pid'} != 0 )
{ {
$do_restart= 1; # Restart without cluster $do_restart= 1; # Restart without cluster
mtr_verbose("Restart master: Test does not need cluster"); mtr_verbose("Restart master: Test does not need cluster");
} }
elsif ( ! $opt_skip_ndbcluster and elsif ( ! $opt_skip_ndbcluster and
$tinfo->{'ndb_test'} == 1 and $tinfo->{'ndb_test'} and
$clusters->[0]->{'pid'} == 0 ) $clusters->[0]->{'pid'} == 0 )
{ {
$do_restart= 1; # Restart with cluster $do_restart= 1; # Restart with cluster
...@@ -4455,6 +4463,7 @@ Options to control what engine/variation to run ...@@ -4455,6 +4463,7 @@ Options to control what engine/variation to run
skip-ssl Dont start server with support for ssl connections skip-ssl Dont start server with support for ssl connections
bench Run the benchmark suite bench Run the benchmark suite
small-bench Run the benchmarks with --small-tests --small-tables small-bench Run the benchmarks with --small-tests --small-tables
with-ndbcluster Use cluster as default table type for benchmark
Options to control directories to use Options to control directories to use
benchdir=DIR The directory where the benchmark suite is stored benchdir=DIR The directory where the benchmark suite is stored
...@@ -4471,7 +4480,6 @@ Options to control directories to use ...@@ -4471,7 +4480,6 @@ Options to control directories to use
Options to control what test suites or cases to run Options to control what test suites or cases to run
force Continue to run the suite after failure force Continue to run the suite after failure
with-ndbcluster Use cluster in all tests
with-ndbcluster-only Run only tests that include "ndb" in the filename with-ndbcluster-only Run only tests that include "ndb" in the filename
skip-ndb[cluster] Skip all tests that need cluster skip-ndb[cluster] Skip all tests that need cluster
skip-ndb[cluster]-slave Skip all tests that need a slave cluster skip-ndb[cluster]-slave Skip all tests that need a slave cluster
......
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