mirror of
https://github.com/MariaDB/server.git
synced 2025-01-20 14:02:32 +01:00
406d0ea5ac
not needed by the tescases. This will save test time for those testcases that does not need cluster, but need a restart, as they dont have to wait the extra time it would take for cluster to restart. It will also save time for other testcases, as cluster does not need to be contacted for each table to be dropped or created. Backport from 5.1 mysql-test/lib/mtr_cases.pl: Mark all test cases where name contains "ndb" as ndbcluster needed mysql-test/lib/mtr_match.pl: Add mtr_match_substring function mysql-test/lib/mtr_stress.pl: Extre param to mysqld_start mysql-test/mysql-test-run.pl: Only start ndbcluster for testcases that needs it.
180 lines
5.3 KiB
Perl
180 lines
5.3 KiB
Perl
# -*- cperl -*-
|
|
|
|
# This is a library file used by the Perl version of mysql-test-run,
|
|
# and is part of the translation of the Bourne shell script with the
|
|
# same name.
|
|
|
|
use strict;
|
|
use File::Spec;
|
|
|
|
# These are not to be prefixed with "mtr_"
|
|
|
|
sub run_stress_test ();
|
|
|
|
##############################################################################
|
|
#
|
|
# Run tests in the stress mode
|
|
#
|
|
##############################################################################
|
|
|
|
sub run_stress_test ()
|
|
{
|
|
|
|
my $args;
|
|
my $stress_basedir;
|
|
my $stress_suitedir;
|
|
|
|
mtr_report("Starting stress testing\n");
|
|
|
|
if ( ! $::glob_use_embedded_server and ! $::opt_local_master )
|
|
{
|
|
$::master->[0]->{'pid'}= mysqld_start('master',0,[],[],0);
|
|
if ( ! $::master->[0]->{'pid'} )
|
|
{
|
|
mtr_error("Can't start the mysqld server");
|
|
}
|
|
}
|
|
|
|
my $stress_basedir=File::Spec->catdir($::opt_vardir, "stress");
|
|
|
|
#Clean up stress dir
|
|
if ( -d $stress_basedir )
|
|
{
|
|
rmtree($stress_basedir);
|
|
}
|
|
mkpath($stress_basedir);
|
|
|
|
if ($::opt_stress_suite ne 'main' && $::opt_stress_suite ne 'default' )
|
|
{
|
|
$stress_suitedir=File::Spec->catdir($::glob_mysql_test_dir, "suite",
|
|
$::opt_stress_suite);
|
|
}
|
|
else
|
|
{
|
|
$stress_suitedir=$::glob_mysql_test_dir;
|
|
}
|
|
|
|
if ( -d $stress_suitedir )
|
|
{
|
|
#$stress_suite_t_dir=File::Spec->catdir($stress_suitedir, "t");
|
|
#$stress_suite_r_dir=File::Spec->catdir($stress_suitedir, "r");
|
|
#FIXME: check dirs above for existence to ensure that test suite
|
|
# contains tests and results dirs
|
|
}
|
|
else
|
|
{
|
|
mtr_error("Specified test suite $::opt_stress_suite doesn't exist");
|
|
}
|
|
|
|
if ( @::opt_cases )
|
|
{
|
|
$::opt_stress_test_file=File::Spec->catfile($stress_basedir, "stress_tests.txt");
|
|
open(STRESS_FILE, ">$::opt_stress_test_file");
|
|
print STRESS_FILE join("\n",@::opt_cases),"\n";
|
|
close(STRESS_FILE);
|
|
}
|
|
elsif ( $::opt_stress_test_file )
|
|
{
|
|
$::opt_stress_test_file=File::Spec->catfile($stress_suitedir,
|
|
$::opt_stress_test_file);
|
|
if ( ! -f $::opt_stress_test_file )
|
|
{
|
|
mtr_error("Specified file $::opt_stress_test_file with list of tests does not exist\n",
|
|
"Please ensure that file exists and has proper permissions");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$::opt_stress_test_file=File::Spec->catfile($stress_suitedir,
|
|
"stress_tests.txt");
|
|
if ( ! -f $::opt_stress_test_file )
|
|
{
|
|
mtr_error("Default file $::opt_stress_test_file with list of tests does not exist\n",
|
|
"Please use --stress-test-file option to specify custom one or you can\n",
|
|
"just specify name of test for testing as last argument in command line");
|
|
|
|
}
|
|
}
|
|
|
|
if ( $::opt_stress_init_file )
|
|
{
|
|
$::opt_stress_init_file=File::Spec->catfile($stress_suitedir,
|
|
$::opt_stress_init_file);
|
|
if ( ! -f $::opt_stress_init_file )
|
|
{
|
|
mtr_error("Specified file $::opt_stress_init_file with list of tests does not exist\n",
|
|
"Please ensure that file exists and has proper permissions");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$::opt_stress_init_file=File::Spec->catfile($stress_suitedir,
|
|
"stress_init.txt");
|
|
if ( ! -f $::opt_stress_init_file )
|
|
{
|
|
$::opt_stress_init_file='';
|
|
}
|
|
}
|
|
|
|
if ( $::opt_stress_mode ne 'random' && $::opt_stress_mode ne 'seq' )
|
|
{
|
|
mtr_error("You specified wrong mode $::opt_stress_mode for stress test\n",
|
|
"Correct values are 'random' or 'seq'");
|
|
}
|
|
|
|
mtr_init_args(\$args);
|
|
|
|
mtr_add_arg($args, "--server-socket=%s", $::master->[0]->{'path_mysock'});
|
|
mtr_add_arg($args, "--server-user=%s", $::opt_user);
|
|
mtr_add_arg($args, "--server-database=%s", "test");
|
|
mtr_add_arg($args, "--stress-suite-basedir=%s", $::glob_mysql_test_dir);
|
|
mtr_add_arg($args, "--suite=%s", $::opt_stress_suite);
|
|
mtr_add_arg($args, "--stress-tests-file=%s", $::opt_stress_test_file);
|
|
mtr_add_arg($args, "--stress-basedir=%s", $stress_basedir);
|
|
mtr_add_arg($args, "--server-logs-dir=%s", $stress_basedir);
|
|
mtr_add_arg($args, "--stress-mode=%s", $::opt_stress_mode);
|
|
mtr_add_arg($args, "--mysqltest=%s", $::exe_mysqltest);
|
|
mtr_add_arg($args, "--threads=%s", $::opt_stress_threads);
|
|
mtr_add_arg($args, "--verbose");
|
|
mtr_add_arg($args, "--cleanup");
|
|
mtr_add_arg($args, "--log-error-details");
|
|
mtr_add_arg($args, "--abort-on-error");
|
|
|
|
if ( $::opt_stress_init_file )
|
|
{
|
|
mtr_add_arg($args, "--stress-init-file=%", $::opt_stress_init_file);
|
|
}
|
|
|
|
if ( !$::opt_stress_loop_count && !$::opt_stress_test_count &&
|
|
!$::opt_stress_test_duration )
|
|
{
|
|
#Limit stress testing with 20 loops in case when any limit parameter
|
|
#was specified
|
|
$::opt_stress_test_count=20;
|
|
}
|
|
|
|
if ( $::opt_stress_loop_count )
|
|
{
|
|
mtr_add_arg($args, "--loop-count=%s", $::opt_stress_loop_count);
|
|
}
|
|
|
|
if ( $::opt_stress_test_count )
|
|
{
|
|
mtr_add_arg($args, "--test-count=%s", $::opt_stress_test_count);
|
|
}
|
|
|
|
if ( $::opt_stress_test_duration )
|
|
{
|
|
mtr_add_arg($args, "--test-duration=%s", $::opt_stress_test_duration);
|
|
}
|
|
|
|
#Run stress test
|
|
mtr_run("$::glob_mysql_test_dir/mysql-stress-test.pl", $args, "", "", "", "");
|
|
|
|
if ( ! $::glob_use_embedded_server )
|
|
{
|
|
stop_masters();
|
|
}
|
|
}
|
|
|
|
1;
|