1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-01 03:47:19 +03:00
- dynamic configuration support
 - safe process
 - cleanups
 - create new suite for fedarated


BitKeeper/deleted/.del-basic.test:
  Rename: mysql-test/ndb/basic.test -> BitKeeper/deleted/.del-basic.test
BitKeeper/deleted/.del-basic_log.result:
  Rename: mysql-test/ndb/basic_log.result -> BitKeeper/deleted/.del-basic_log.result
mysql-test/suite/federated/federated_transactions.result:
  Rename: mysql-test/r/federated_transactions.result -> mysql-test/suite/federated/federated_transactions.result
BitKeeper/deleted/.del-have_bug25714.require:
  Rename: mysql-test/r/have_bug25714.require -> BitKeeper/deleted/.del-have_bug25714.require
BitKeeper/deleted/.del-kill_master.sh:
  Rename: mysql-test/misc/kill_master.sh -> BitKeeper/deleted/.del-kill_master.sh
BitKeeper/deleted/.del-ndb_config_4_node.ini~d8e572e9b68f933a:
  Rename: mysql-test/ndb/ndb_config_4_node.ini -> BitKeeper/deleted/.del-ndb_config_4_node.ini~d8e572e9b68f933a
BitKeeper/deleted/.del-restart.result:
  Rename: mysql-test/ndb/restart.result -> BitKeeper/deleted/.del-restart.result
mysql-test/suite/federated/federated_cleanup.inc:
  Rename: mysql-test/include/federated_cleanup.inc -> mysql-test/suite/federated/federated_cleanup.inc
mysql-test/suite/rpl/t/rpl_rotate_logs-slave.opt:
  Rename: mysql-test/suite/rpl/t/rpl_rotate_logs.slave-mi -> mysql-test/suite/rpl/t/rpl_rotate_logs-slave.opt
BitKeeper/deleted/.del-install_test_db.sh:
  Rename: mysql-test/install_test_db.sh -> BitKeeper/deleted/.del-install_test_db.sh
BitKeeper/deleted/.del-ndb_config_1_node.ini~7ec640ed25570e16:
  Rename: mysql-test/ndb/ndb_config_1_node.ini -> BitKeeper/deleted/.del-ndb_config_1_node.ini~7ec640ed25570e16
BitKeeper/deleted/.del-mtr_timer.pl:
  Rename: mysql-test/lib/mtr_timer.pl -> BitKeeper/deleted/.del-mtr_timer.pl
BitKeeper/deleted/.del-create-test-result:
  Rename: mysql-test/create-test-result -> BitKeeper/deleted/.del-create-test-result
BitKeeper/deleted/.del-fix-result:
  Rename: mysql-test/fix-result -> BitKeeper/deleted/.del-fix-result
BitKeeper/deleted/.del-mysql-test-run-shell.sh:
  Rename: mysql-test/mysql-test-run-shell.sh -> BitKeeper/deleted/.del-mysql-test-run-shell.sh
BitKeeper/deleted/.del-mysql-test_V1.9.pl:
  Rename: mysql-test/misc/mysql-test_V1.9.pl -> BitKeeper/deleted/.del-mysql-test_V1.9.pl
BitKeeper/deleted/.del-resolve-stack:
  Rename: mysql-test/resolve-stack -> BitKeeper/deleted/.del-resolve-stack
BitKeeper/deleted/.del-restart_log.result:
  Rename: mysql-test/ndb/restart_log.result -> BitKeeper/deleted/.del-restart_log.result
mysql-test/suite/rpl/t/rpl_000015-slave.opt:
  Rename: mysql-test/suite/rpl/t/rpl_000015.slave-mi -> mysql-test/suite/rpl/t/rpl_000015-slave.opt
BitKeeper/deleted/.del-ndb_config_2_node.ini:
  Rename: mysql-test/ndb/ndb_config_2_node.ini -> BitKeeper/deleted/.del-ndb_config_2_node.ini
BitKeeper/deleted/.del-ndbcluster.sh:
  Rename: mysql-test/ndb/ndbcluster.sh -> BitKeeper/deleted/.del-ndbcluster.sh
BitKeeper/deleted/.del-basic.result:
  Rename: mysql-test/ndb/basic.result -> BitKeeper/deleted/.del-basic.result
BitKeeper/deleted/.del-restart.test:
  Rename: mysql-test/ndb/restart.test -> BitKeeper/deleted/.del-restart.test
BitKeeper/deleted/.del-have_bug25714.inc:
  Rename: mysql-test/include/have_bug25714.inc -> BitKeeper/deleted/.del-have_bug25714.inc
BitKeeper/deleted/.del-mtr_diff.pl:
  Rename: mysql-test/lib/mtr_diff.pl -> BitKeeper/deleted/.del-mtr_diff.pl
mysql-test/suite/federated/federated_transactions-slave.opt:
  Rename: mysql-test/t/federated_transactions-slave.opt -> mysql-test/suite/federated/federated_transactions-slave.opt
BitKeeper/deleted/.del-Makefile.am~343467da4d0f211b:
  Rename: mysql-test/ndb/Makefile.am -> BitKeeper/deleted/.del-Makefile.am~343467da4d0f211b
BitKeeper/deleted/.del-mtr_im.pl~9762b0336c28949:
  Rename: mysql-test/lib/mtr_im.pl -> BitKeeper/deleted/.del-mtr_im.pl~9762b0336c28949
mysql-test/suite/federated/federated_innodb-slave.opt:
  Rename: mysql-test/t/federated_innodb-slave.opt -> mysql-test/suite/federated/federated_innodb-slave.opt
client/mysqltest.c:
  Use current files path first when looking for include file
configure.in:
  Remove mysql-test/nbd
mysql-test/Makefile.am:
  Cleanup mysql-test/Makefile.am
mysql-test/extra/binlog_tests/blackhole.test:
  Use new paths
mysql-test/extra/binlog_tests/ctype_ucs_binlog.test:
  Use new paths
mysql-test/mysql-test-run.pl:
  Dynamic configuration support
  Safe process
mysql-test/extra/binlog_tests/mix_innodb_myisam_side_effects.test:
  Use new paths
mysql-test/extra/rpl_tests/rpl_EE_err.test:
  Use new paths
mysql-test/extra/rpl_tests/rpl_loaddata.test:
  Use new paths
mysql-test/extra/rpl_tests/rpl_log.test:
  Use new paths
mysql-test/extra/rpl_tests/rpl_row_001.test:
  Use new paths
mysql-test/extra/rpl_tests/rpl_row_charset.test:
  Use new paths
mysql-test/extra/rpl_tests/rpl_stm_000001.test:
  Use new paths
mysql-test/extra/rpl_tests/rpl_stm_charset.test:
  Use new paths
mysql-test/include/have_blackhole.inc:
  Use new paths
mysql-test/include/have_ndbapi_examples.inc:
  Use new paths
mysql-test/include/loaddata_autocom.inc:
  Use new paths
mysql-test/include/mix1.inc:
  Use new paths
mysql-test/include/ndb_backup.inc:
  Use new paths
mysql-test/include/ndb_restore_master.inc:
  Use new paths
mysql-test/include/ndb_restore_slave_eoption.inc:
  Use new paths
mysql-test/include/testdb_only.inc:
  Use new paths
mysql-test/lib/My/Config.pm:
  dynamic configuration
  safe process
  cleanups
mysql-test/lib/mtr_cases.pm:
  dynamic configuration
  safe process
  cleanups
mysql-test/lib/mtr_io.pl:
  dynamic configuration
  safe process
  cleanups
mysql-test/lib/mtr_misc.pl:
  dynamic configuration
  safe process
  cleanups
mysql-test/lib/mtr_process.pl:
  dynamic configuration
  safe process
  cleanups
mysql-test/lib/mtr_report.pl:
  dynamic configuration
  safe process
  cleanups
mysql-test/lib/mtr_stress.pl:
  dynamic configuration
  safe process
  cleanups
mysql-test/r/backup.result:
  Use new paths
mysql-test/r/ctype_big5.result:
  Use new paths
mysql-test/r/gis.result:
  Use new paths
mysql-test/r/loaddata.result:
  Use new paths
mysql-test/r/loaddata_autocom_innodb.result:
  Use new paths
mysql-test/r/mysqlbinlog.result:
  Use new paths
mysql-test/r/mysqlbinlog_base64.result:
  Use new paths
mysql-test/r/outfile.result:
  Use new paths
mysql-test/r/partition_error.result:
  Use new paths
mysql-test/r/partition_not_windows.result:
  Use new paths
mysql-test/r/partition_symlink.result:
  Use new paths
mysql-test/r/query_cache.result:
  Use new paths
mysql-test/r/sp.result:
  Use new paths
mysql-test/r/symlink.result:
  Use new paths
mysql-test/r/system_mysql_db.result:
  Use new paths
mysql-test/r/trigger.result:
  Use new paths
mysql-test/r/type_blob.result:
  Use new paths
mysql-test/r/view.result:
  Use new paths
mysql-test/r/warnings.result:
  Use new paths
mysql-test/suite/binlog/r/binlog_killed_simulate.result:
  Use new paths
mysql-test/suite/binlog/r/binlog_row_mix_innodb_myisam.result:
  Use new paths
mysql-test/suite/binlog/r/binlog_stm_blackhole.result:
  Use new paths
mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result:
  Use new paths
mysql-test/suite/binlog/t/binlog_killed.test:
  Use new paths
mysql-test/suite/binlog/t/binlog_killed_simulate.test:
  Use new paths
mysql-test/suite/binlog/t/binlog_row_mix_innodb_myisam.test:
  Use new paths
mysql-test/suite/binlog/t/binlog_stm_mix_innodb_myisam.test:
  Use new paths
mysql-test/suite/federated/federated.inc:
  Use new paths
mysql-test/suite/federated/federated.result:
  Use new paths
mysql-test/suite/federated/federated.test:
  Use new paths
mysql-test/suite/federated/federated_archive.result:
  Use new paths
mysql-test/suite/federated/federated_archive.test:
  Use new paths
mysql-test/suite/federated/federated_bug_13118.result:
  Use new paths
mysql-test/suite/federated/federated_bug_13118.test:
  Use new paths
mysql-test/suite/federated/federated_bug_25714.result:
  Use new paths
mysql-test/suite/federated/federated_bug_25714.test:
  Use new paths
mysql-test/suite/federated/federated_innodb.result:
  Use new paths
mysql-test/suite/federated/federated_innodb.test:
  Use new paths
mysql-test/suite/federated/federated_server.result:
  Use new paths
mysql-test/suite/federated/federated_server.test:
  Use new paths
mysql-test/suite/federated/federated_transactions.test:
  Use new paths
mysql-test/suite/federated/have_federated_db.inc:
  Use new paths
mysql-test/suite/ndb/r/loaddata_autocom_ndb.result:
  Use new paths
mysql-test/suite/ndb/r/ndb_config.result:
  Use new paths
mysql-test/suite/ndb/r/ndb_dd_backuprestore.result:
  Use new paths
mysql-test/suite/ndb/r/ndb_load.result:
  Use new paths
mysql-test/suite/ndb/r/ndb_loaddatalocal.result:
  Use new paths
mysql-test/suite/ndb/r/ndb_replace.result:
  Use new paths
mysql-test/suite/ndb/r/ndb_restore.result:
  Use new paths
mysql-test/suite/ndb/r/ndb_restore_partition.result:
  Use new paths
mysql-test/suite/ndb/r/ndb_restore_print.result:
  Use new paths
mysql-test/suite/ndb/r/ndb_trigger.result:
  Use new paths
mysql-test/suite/ndb/t/ndb_alter_table.test:
  Use new paths
mysql-test/suite/ndb/t/ndb_config.test:
  Use new paths
mysql-test/suite/ndb/t/ndb_load.test:
  Use new paths
mysql-test/suite/ndb/t/ndb_loaddatalocal.test:
  Use new paths
mysql-test/suite/ndb/t/ndb_replace.test:
  Use new paths
mysql-test/suite/ndb/t/ndb_restore.test:
  Use new paths
mysql-test/suite/ndb/t/ndb_single_user.test:
  Use new paths
mysql-test/suite/ndb/t/ndb_trigger.test:
  Use new paths
mysql-test/suite/ndb/t/ndbapi.test:
  Use new paths
mysql-test/suite/rpl/include/rpl_mixed_dml.inc:
  Use new paths
mysql-test/suite/rpl/r/rpl_LD_INFILE.result:
  Use new paths
mysql-test/suite/rpl/r/rpl_flushlog_loop.result:
  Use new paths
mysql-test/suite/rpl/r/rpl_innodb.result:
  Use new paths
mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result:
  Use new paths
mysql-test/suite/rpl/r/rpl_load_table_from_master.result:
  Use new paths
mysql-test/suite/rpl/r/rpl_loaddata.result:
  Use new paths
mysql-test/suite/rpl/r/rpl_loaddata_charset.result:
  Use new paths
mysql-test/suite/rpl/r/rpl_loaddata_fatal.result:
  Use new paths
mysql-test/suite/rpl/r/rpl_loaddata_m.result:
  Use new paths
mysql-test/suite/rpl/r/rpl_loaddata_s.result:
  Use new paths
mysql-test/suite/rpl/r/rpl_loaddata_simple.result:
  Use new paths
mysql-test/suite/rpl/r/rpl_loaddatalocal.result:
  Use new paths
mysql-test/suite/rpl/r/rpl_loadfile.result:
  Use new paths
mysql-test/suite/rpl/r/rpl_misc_functions.result:
  Use new paths
mysql-test/suite/rpl/r/rpl_replicate_do.result:
  Use new paths
mysql-test/suite/rpl/r/rpl_rewrt_db.result:
  Use new paths
mysql-test/suite/rpl/r/rpl_row_001.result:
  Use new paths
mysql-test/suite/rpl/r/rpl_row_loaddata_m.result:
  Use new paths
mysql-test/suite/rpl/r/rpl_row_log.result:
  Use new paths
mysql-test/suite/rpl/r/rpl_row_log_innodb.result:
  Use new paths
mysql-test/suite/rpl/r/rpl_row_stop_middle_update.result:
  Use new paths
mysql-test/suite/rpl/r/rpl_stm_000001.result:
  Use new paths
mysql-test/suite/rpl/r/rpl_stm_log.result:
  Use new paths
mysql-test/suite/rpl/r/rpl_timezone.result:
  Use new paths
mysql-test/suite/rpl/t/disabled.def:
  Use new paths
mysql-test/suite/rpl/t/rpl000017-slave.sh:
  Use new paths
mysql-test/suite/rpl/t/rpl_LD_INFILE.test:
  Use new paths
mysql-test/suite/rpl/t/rpl_drop_db.test:
  Use new paths
mysql-test/suite/rpl/t/rpl_flushlog_loop-master.opt:
  Use new paths
mysql-test/suite/rpl/t/rpl_flushlog_loop-slave.opt:
  Use new paths
mysql-test/suite/rpl/t/rpl_flushlog_loop.test:
  Use new paths
mysql-test/suite/rpl/t/rpl_innodb.test:
  Use new paths
mysql-test/suite/rpl/t/rpl_innodb_bug30919.test:
  Use new paths
mysql-test/suite/rpl/t/rpl_load_from_master.test:
  Use new paths
mysql-test/suite/rpl/t/rpl_load_table_from_master.test:
  Use new paths
mysql-test/suite/rpl/t/rpl_loaddata_charset.test:
  Use new paths
mysql-test/suite/rpl/t/rpl_loaddata_fatal.test:
  Use new paths
mysql-test/suite/rpl/t/rpl_loaddata_m.test:
  Use new paths
mysql-test/suite/rpl/t/rpl_loaddata_s.test:
  Use new paths
mysql-test/suite/rpl/t/rpl_loaddata_simple.test:
  Use new paths
mysql-test/suite/rpl/t/rpl_loaddatalocal.test:
  Use new paths
mysql-test/suite/rpl/t/rpl_loadfile.test:
  Use new paths
mysql-test/suite/rpl/t/rpl_misc_functions.test:
  Use new paths
mysql-test/suite/rpl/t/rpl_replicate_do.test:
  Use new paths
mysql-test/suite/rpl/t/rpl_rewrt_db.test:
  Use new paths
mysql-test/suite/rpl/t/rpl_rotate_logs-master.opt:
  Use new paths
mysql-test/suite/rpl/t/rpl_rotate_logs.test:
  Use new paths
mysql-test/suite/rpl/t/rpl_row_charset_innodb.test:
  Use new paths
mysql-test/suite/rpl/t/rpl_row_mysqlbinlog.test:
  Use new paths
mysql-test/suite/rpl/t/rpl_row_stop_middle_update.test:
  Use new paths
mysql-test/suite/rpl/t/rpl_timezone.test:
  Use new paths
mysql-test/suite/rpl/t/rpl_trigger.test:
  Use new paths
mysql-test/suite/rpl_ndb/r/rpl_ndb_dd_advance.result:
  Use new paths
mysql-test/suite/rpl_ndb/r/rpl_ndb_innodb_trans.result:
  Use new paths
mysql-test/suite/rpl_ndb/r/rpl_ndb_log.result:
  Use new paths
mysql-test/suite/rpl_ndb/r/rpl_ndb_multi.result:
  Use new paths
mysql-test/suite/rpl_ndb/r/rpl_ndb_row_001.result:
  Use new paths
mysql-test/suite/rpl_ndb/r/rpl_ndb_sync.result:
  Use new paths
mysql-test/suite/rpl_ndb/t/rpl_ndb_bank.test:
  Use new paths
mysql-test/suite/rpl_ndb/t/rpl_ndb_dd_advance.test:
  Use new paths
mysql-test/suite/rpl_ndb/t/rpl_ndb_innodb_trans.test:
  Use new paths
mysql-test/suite/rpl_ndb/t/rpl_ndb_load.test:
  Use new paths
mysql-test/suite/rpl_ndb/t/rpl_ndb_sync.test:
  Use new paths
mysql-test/suite/rpl_ndb/t/rpl_ndbapi_multi.test:
  Use new paths
mysql-test/t/backup.test:
  Use new paths
mysql-test/t/bootstrap.test:
  Use new paths
mysql-test/t/crash_commit_before.test:
  Use new paths
mysql-test/t/create_not_windows.test:
  Use new paths
mysql-test/t/csv.test:
  Use new paths
mysql-test/t/ctype_big5.test:
  Use new paths
mysql-test/t/disabled.def:
  Use new paths
mysql-test/t/distinct.test:
  Use new paths
mysql-test/t/gis.test:
  Use new paths
mysql-test/t/grant_cache_no_prot.test:
  Use new paths
mysql-test/t/grant_cache_ps_prot.test:
  Use new paths
mysql-test/t/information_schema_chmod.test:
  Use new paths
mysql-test/t/loaddata.test:
  Use new paths
mysql-test/t/log_state.test:
  Use new paths
mysql-test/t/myisam-system.test:
  Use new paths
mysql-test/t/mysql_upgrade.test:
  Use new paths
mysql-test/t/mysqlbinlog-cp932.test:
  Use new paths
mysql-test/t/mysqlbinlog.test:
  Use new paths
mysql-test/t/mysqlbinlog2.test:
  Use new paths
mysql-test/t/mysqlbinlog_base64.test:
  Use new paths
mysql-test/t/mysqldump.test:
  Use new paths
mysql-test/t/outfile.test:
  Use new paths
mysql-test/t/partition.test:
  Use new paths
mysql-test/t/partition_error.test:
  Use new paths
mysql-test/t/partition_federated.test:
  Use new paths
mysql-test/t/partition_mgm.test:
  Use new paths
mysql-test/t/partition_not_windows.test:
  Use new paths
mysql-test/t/partition_symlink.test:
  Use new paths
mysql-test/t/query_cache.test:
  Use new paths
mysql-test/t/repair.test:
  Use new paths
mysql-test/t/show_check.test:
  Use new paths
mysql-test/t/sp-destruct.test:
  Use new paths
mysql-test/t/sp.test:
  Use new paths
mysql-test/t/symlink.test:
  Use new paths
mysql-test/t/system_mysql_db.test:
  Use new paths
mysql-test/t/system_mysql_db_fix30020.test:
  Use new paths
mysql-test/t/system_mysql_db_fix40123.test:
  Use new paths
mysql-test/t/system_mysql_db_fix50030.test:
  Use new paths
mysql-test/t/system_mysql_db_fix50117.test:
  Use new paths
mysql-test/t/trigger-compat.test:
  Use new paths
mysql-test/t/trigger-grant.test:
  Use new paths
mysql-test/t/trigger.test:
  Use new paths
mysql-test/t/type_blob.test:
  Use new paths
mysql-test/t/type_varchar.test:
  Use new paths
mysql-test/t/upgrade.test:
  Use new paths
mysql-test/t/user_var-binlog.test:
  Use new paths
mysql-test/t/varbinary.test:
  Use new paths
mysql-test/t/view.test:
  Use new paths
mysql-test/t/warnings.test:
  Use new paths
mysql-test/lib/My/ConfigFactory.pm:
  Initial version
mysql-test/lib/My/Find.pm:
  Initial version
mysql-test/lib/My/SafeProcess.pm:
  Initial version
mysql-test/std_data/ndb_config_config.ini:
  Add "old" style config.ini for ndb
mysql-test/suite/federated/disabled.def:
  Move disabled federated to it's new suite
mysql-test/suite/federated/my.cnf:
  Add config for federated
mysql-test/suite/ndb/my.cnf:
  Add config for ndb
mysql-test/suite/rpl/my.cnf:
  Add config for rpl
mysql-test/suite/rpl/rpl_1slave_base.cnf:
  Add base config for rpl
mysql-test/suite/rpl/t/rpl_000015-master.opt:
  Use new paths
mysql-test/suite/rpl_ndb/my.cnf:
  Add config for rpl_ndb
mysql-test/lib/My/File/Path.pm:
  Initial version
mysql-test/lib/My/SafeProcess/Base.pm:
  Initial version
mysql-test/lib/My/SafeProcess/safe_kill_win.cc:
  Initial version
mysql-test/lib/My/SafeProcess/safe_process.pl:
  Initial version
mysql-test/lib/My/SafeProcess/safe_process_win.cc:
  Initial version
mysql-test/lib/t/Base.t:
  Initial version
mysql-test/lib/t/Find.t:
  Initial version
mysql-test/lib/t/SafeProcess.t:
  Initial version
mysql-test/lib/t/SafeProcessStress.pl:
  Initial version
mysql-test/lib/t/copytree.t:
  Initial version
mysql-test/lib/t/dummyd.pl:
  Initial version
mysql-test/lib/t/rmtree.t:
  Initial version
mysql-test/lib/t/testMyConfig.t:
  Initial version
mysql-test/lib/t/testMyConfigFactory.t:
  Initial version
mysql-test/lib/t/test_child.pl:
  Initial version
mysql-test/include/default_my.cnf:
  Add default config file used when no suite specific file is found
mysql-test/include/default_mysqld.cnf:
  New BitKeeper file ``mysql-test/include/default_mysqld.cnf''
mysql-test/include/default_ndbd.cnf:
  Add default settings for all ndbds
mysql-test/lib/mtr_settings.pl:
  Initial version
This commit is contained in:
unknown
2007-12-12 18:19:24 +01:00
parent abd1317033
commit 1370500c0d
265 changed files with 6164 additions and 11636 deletions

27
mysql-test/lib/t/Base.t Normal file
View File

@ -0,0 +1,27 @@
# -*- cperl -*-
use Test::More qw(no_plan);
use strict;
use_ok ("My::SafeProcess::Base");
my $count= 0;
for (1..100){
my $pid= My::SafeProcess::Base::_safe_fork();
exit unless $pid;
(waitpid($pid, 0) == $pid) and $count++;
}
ok($count == 100, "safe_fork");
# A nice little forkbomb
SKIP: {
skip("forkbomb", 1);
eval {
while(1){
my $pid= My::SafeProcess::Base::_safe_fork();
exit unless $pid;
}
};
ok($@, "forkbomb");
}

33
mysql-test/lib/t/Find.t Normal file
View File

@ -0,0 +1,33 @@
# -*- cperl -*-
use Test::More qw(no_plan);
use strict;
use_ok ("My::Find");
my $basedir= "../..";
print "=" x 40, "\n";
my $mysqld_exe= my_find_bin($basedir,
["sql", "bin"],
["mysqld", "mysqld-debug"]);
print "mysqld_exe: $mysqld_exe\n";
print "=" x 40, "\n";
my $mysql_exe= my_find_bin($basedir,
["client", "bin"],
"mysql");
print "mysql_exe: $mysql_exe\n";
print "=" x 40, "\n";
my $mtr_build_dir= $ENV{MTR_BUILD_DIR};
$ENV{MTR_BUILD_DIR}= "debug";
my $mysql_exe= my_find_bin($basedir,
["client", "bin"],
"mysql");
print "mysql_exe: $mysql_exe\n";
$ENV{MTR_BUILD_DIR}= $mtr_build_dir;
print "=" x 40, "\n";
my $charset_dir= my_find_dir($basedir,
["share/mysql", "sql/share", "share"],
"charsets");
print "charset_dir: $charset_dir\n";
print "=" x 40, "\n";

View File

@ -0,0 +1,102 @@
# -*- cperl -*-
use strict;
use FindBin;
use IO::File;
use Test::More qw(no_plan);
use_ok ("My::SafeProcess");
my $perl_path= $^X;
{
# Test exit codes
my $count= 32;
my $ok_count= 0;
for my $code (0..$count-1) {
my $args= [ "$FindBin::Bin/test_child.pl", "--exit-code=$code" ];
my $proc= My::SafeProcess->new
(
path => $perl_path,
args => \$args,
output => "/dev/null",
error => "/dev/null",
);
# Wait max 10 seconds for the process to finish
$ok_count++ if ($proc->wait_one(10) == 0 and
$proc->exit_status() == $code);
}
ok($count == $ok_count, "check exit_status, $ok_count");
}
{
# spawn a number of concurrent processes
my $count= 16;
my $ok_count= 0;
my %procs;
for my $code (0..$count-1) {
my $args= [ "$FindBin::Bin/test_child.pl", "--exit-code=$code" ];
$procs{$code}= My::SafeProcess->new
(
path => $perl_path,
args => \$args,
output => "/dev/null",
error => "/dev/null",
);
}
for my $code (0..$count-1) {
$ok_count++ if ($procs{$code}->wait_one(10) == 0 and
$procs{$code}->exit_status() == $code);
}
ok($count == $ok_count, "concurrent, $ok_count");
}
#
# Test stdout, stderr
#
{
use File::Temp qw / tempdir /;
my $dir = tempdir( CLEANUP => 1 );
my $args= [ "$FindBin::Bin/test_child.pl" ];
my $proc= My::SafeProcess->new
(
path => $perl_path,
args => \$args,
output => "$dir/output.txt",
error => "$dir/error.txt",
);
$proc->wait_one(2); # Wait max 2 seconds for the process to finish
my $fh= IO::File->new("$dir/output.txt");
my @text= <$fh>;
ok(grep(/Hello stdout/, @text), "check stdout");
$fh= IO::File->new("$dir/error.txt");
my @text= <$fh>;
ok(grep(/Hello stderr/, @text), "check stderr");
# To same file
$proc= My::SafeProcess->new
(
path => $perl_path,
args => \$args,
output => "$dir/output.txt",
error => "$dir/output.txt",
debug => 1,
);
$proc->wait_one(2); # Wait max 2 seconds for the process to finish
my $fh= IO::File->new("$dir/output.txt");
my @text= <$fh>;
ok((grep(/Hello stdout/, @text) and grep(/Hello stderr/, @text)),
"check stdout and stderr");
}

View File

@ -0,0 +1,149 @@
#!/usr/bin/perl
# -*- cperl -*-
use strict;
use FindBin;
use My::SafeProcess;
#
# Test longterm running of SafeProcess
#
my $perl_path= $^X;
my $verbose= 0;
my $loops= 1000;
print "kill one and wait for one\n";
for (1...$loops){
use File::Temp qw / tempdir /;
my $dir = tempdir( CLEANUP => 1 );
my @procs;
for (1..10){
my $args= [ "$FindBin::Bin/dummyd.pl", "--vardir=$dir" ];
my $proc= My::SafeProcess->new
(
path => $perl_path,
args => \$args,
verbose => $verbose,
);
push(@procs, $proc);
}
foreach my $proc (@procs) {
$proc->kill();
# dummyd will always be kiled and thus
# exit_status should have been set to 1
die "oops, exit_status: ", $proc->exit_status()
unless $proc->exit_status() == 1;
}
print "=" x 60, "\n";
}
print "With 1 second sleep in dummyd\n";
for (1...$loops){
use File::Temp qw / tempdir /;
my $dir = tempdir( CLEANUP => 1 );
my @procs;
for (1..10){
my $args= [ "$FindBin::Bin/dummyd.pl",
"--vardir=$dir",
"--sleep=1" ];
my $proc= My::SafeProcess->new
(
path => $perl_path,
args => \$args,
verbose => $verbose,
);
push(@procs, $proc);
}
foreach my $proc (@procs) {
$proc->kill();
}
print "=" x 60, "\n";
}
print "kill all and wait for one\n";
for (1...$loops){
use File::Temp qw / tempdir /;
my $dir = tempdir( CLEANUP => 1 );
my @procs;
for (1..10){
my $args= [ "$FindBin::Bin/dummyd.pl", "--vardir=$dir" ];
my $proc= My::SafeProcess->new
(
path => $perl_path,
args => \$args,
verbose => $verbose,
);
push(@procs, $proc);
}
foreach my $proc (@procs) {
$proc->start_kill();
}
foreach my $proc (@procs) {
$proc->wait_one();
}
print "=" x 60, "\n";
}
print "kill all using shutdown without callback\n";
for (1...$loops){
use File::Temp qw / tempdir /;
my $dir = tempdir( CLEANUP => 1 );
my @procs;
for (1..10){
my $args= [ "$FindBin::Bin/dummyd.pl", "--vardir=$dir" ];
my $proc= My::SafeProcess->new
(
path => $perl_path,
args => \$args,
verbose => $verbose,
);
push(@procs, $proc);
}
My::SafeProcess::shutdown(2, @procs);
print "=" x 60, "\n";
}
print "kill all using shutdown\n";
for (1...$loops){
use File::Temp qw / tempdir /;
my $dir = tempdir( CLEANUP => 1 );
my @procs;
for (1..10){
my $args= [ "$FindBin::Bin/dummyd.pl", "--vardir=$dir" ];
my $proc= My::SafeProcess->new
(
path => $perl_path,
args => \$args,
verbose => $verbose,
shutdown => sub { }, # Does nothing
);
push(@procs, $proc);
}
My::SafeProcess::shutdown(2, @procs);
print "=" x 60, "\n";
}
exit(0);

View File

@ -0,0 +1,34 @@
#!/usr/bin/perl
# -*- cperl -*-
use strict;
use My::File::Path;
use Test::Simple tests => 7;
use File::Temp qw / tempdir /;
my $dir = tempdir( CLEANUP => 1 );
my $testdir="$dir/test";
my $test_todir="$dir/to";
my $subdir= "$testdir/test1/test2/test3";
#
# 1. Create, copy and remove a directory structure
#
mkpath($subdir);
ok( -d $subdir, "Check '$subdir' is created");
copytree($testdir, $test_todir);
ok( -d $test_todir, "Check '$test_todir' is created");
ok( -d "$test_todir/test1", "Check 'test1' is created");
ok( -d "$test_todir/test1/test2", "Check 'test2' is created");
ok( -d "$test_todir/test1/test2/test3", "Check 'test3' is created");
rmtree($testdir);
ok( ! -d $testdir, "Check '$testdir' is gone");
rmtree($test_todir);
ok( ! -d $test_todir, "Check '$test_todir' is gone");

View File

@ -0,0 +1,38 @@
#!/usr/bin/perl
# -*- cperl -*-
use strict;
use Getopt::Long;
use IO::File;
my $vardir;
my $randie= 0;
my $sleep= 0;
GetOptions
(
# Directory where to write files
'vardir=s' => \$vardir,
'die-randomly' => \$randie,
'sleep=i' => \$sleep,
);
die("invalid vardir ") unless defined $vardir and -d $vardir;
my $pid= $$;
while(1){
for my $i (1..64){
# Write to file
my $name= "$vardir/$pid.$i.tmp";
my $F= IO::File->new($name, "w")
or warn "$$, Could not open $name: $!" and next;
print $F rand($.) for (1..1000);
$F->close();
sleep($sleep);
die "ooops!" if $randie and rand() < 0.0001
}
}
exit (0);

52
mysql-test/lib/t/rmtree.t Normal file
View File

@ -0,0 +1,52 @@
#!/usr/bin/perl
# -*- cperl -*-
use strict;
use My::File::Path;
use Test::Simple tests => 8;
use File::Temp qw / tempdir /;
my $dir = tempdir( CLEANUP => 1 );
my $testdir="$dir/test";
my $subdir= "$testdir/test1/test2/test3";
#
# 1. Create and remove a directory structure
#
mkpath($subdir);
ok( -d $subdir, "Check '$subdir' is created");
rmtree($testdir);
ok( ! -d $testdir, "Check '$testdir' is gone");
#
# 2. Create and remove a directory structure
# where one directory is chmod to 0000
#
mkpath($subdir);
ok( -d $subdir, "Check '$subdir' is created");
ok( chmod(0000, $subdir) == 1 , "Check one dir was chmoded");
rmtree($testdir);
ok( ! -d $testdir, "Check '$testdir' is gone");
#
# 3. Create and remove a directory structure
# where one file is chmod to 0000
#
mkpath($subdir);
ok( -d $subdir, "Check '$subdir' is created");
my $testfile= "$subdir/test.file";
open(F, ">", $testfile) or die;
print F "hello\n";
close(F);
ok( chmod(0000, $testfile) == 1 , "Check one file was chmoded");
rmtree($testdir);
ok( ! -d $testdir, "Check '$testdir' is gone");

131
mysql-test/lib/t/testMyConfig.t Executable file
View File

@ -0,0 +1,131 @@
#!/usr/bin/perl
# -*- cperl -*-
use strict;
use warnings;
use File::Temp qw / tempdir /;
my $dir = tempdir( CLEANUP => 1 );
use Test::More qw(no_plan);
BEGIN { use_ok ( "My::Config" ) };
my $test_cnf= "$dir/test.cnf";
# Write test config file
open(OUT, ">", $test_cnf) or die;
print $test_cnf, "\n";
print OUT <<EOF
[mysqld]
# Comment
option1=values2
option2= value4
option4
basedir=thebasedir
[mysqld_1]
[mysqld_2]
[mysqld.9]
[client]
socket =\tasocketpath
EOF
;
close OUT;
my $config= My::Config->new($test_cnf);
isa_ok( $config, "My::Config" );
print $config;
ok ( $config->group("mysqld_2"), "group mysqld_2 exists");
ok ( $config->group("mysqld_1"), "group mysqld_1 exists");
ok ( $config->group("mysqld.9"), "group mysqld.9 exists");
ok ( $config->group("mysqld.9")->suffix() eq ".9", "group mysqld.9 has suffix .9");
ok ( $config->group("mysqld"), "group mysqld exists");
ok ( $config->group("client"), "group client exists");
ok ( !$config->group("mysqld_3"), "group mysqld_3 does not exist");
ok ( $config->options_in_group("mysqld") == 4, "options in [mysqld] is 4");
ok ( $config->options_in_group("nonexist") == 0, "options in [nonexist] is 0");
{
my @groups= $config->groups();
ok(@groups == 5, "5 groups");
my $idx= 0;
foreach my $name ('mysqld', 'mysqld_1', 'mysqld_2', 'mysqld.9', 'client') {
is($groups[$idx++]->name(), $name, "checking groups $idx");
}
}
{
my @groups= $config->like("mysqld");
ok(@groups == 4, "4 groups like mysqld");
my $idx= 0;
foreach my $name ('mysqld', 'mysqld_1', 'mysqld_2', 'mysqld.9') {
is($groups[$idx++]->name(), $name, "checking like(\"mysqld\") $idx");
}
}
{
my @groups= $config->like("not");
ok(@groups == 0, "checking like(\"not\")");
}
is($config->first_like("mysqld_")->name(), "mysqld_1", "first_like");
is( $config->value('mysqld', 'option4'), undef,
"mysqld_option4 exists, does not have a value");
ok( $config->exists('mysqld', 'option4'),
"mysqld_option4 exists");
ok( $config->exists('mysqld', 'option2'),
"mysqld_option2 exists");
ok( !$config->exists('mysqld', 'option5'),
"mysqld_option5 does not exists");
# Save the config to file
my $test2_cnf= "$dir/test2.cnf";
$config->save($test2_cnf);
# read it back and check it's the same
my $config2= My::Config->new($test2_cnf);
isa_ok( $config2, "My::Config" );
is_deeply( \$config, \$config2, "test.cnf is equal to test2.cnf");
my $test_include_cnf= "$dir/test_include.cnf";
# Write test config file that includes test.cnf
open(OUT, ">", $test_include_cnf) or die;
print OUT <<EOF
[mysqld]
!include test.cnf
# Comment
option1=values3
basedir=anotherbasedir
EOF
;
close OUT;
# Read the config file
my $config3= My::Config->new($test_include_cnf);
isa_ok( $config3, "My::Config" );
print $config3;
is( $config3->value('mysqld', 'basedir'), 'anotherbasedir',
"mysqld_basedir has been overriden by value in test_include.cnf");
is( $config3->value('mysqld', 'option1'), 'values3',
"mysqld_option1 has been overriden by value in test_include.cnf");
is( $config3->value('mysqld', 'option2'), 'value4',
"mysqld_option2 is from included file");
is( $config3->value('client', 'socket'), 'asocketpath',
"client.socket is from included file");
is( $config3->value('mysqld', 'option4'), undef,
"mysqld_option4 exists, does not have a value");
print "$config3\n";

View File

@ -0,0 +1,98 @@
#!/usr/bin/perl
# -*- cperl -*-
use strict;
use warnings;
use File::Temp qw / tempdir /;
my $dir = tempdir( CLEANUP => 1 );
use Test::More qw(no_plan);
BEGIN { use_ok ( "My::ConfigFactory" ) };
my $gen1_cnf= "$dir/gen1.cnf";
open(OUT, ">", $gen1_cnf) or die;
print OUT <<EOF
[mysqld.master]
# Comment
option1=value1
basedir=abasedir
[mysqld.1]
# Comment
option1=value1
option2=value2
[ENV]
MASTER_MY_PORT=\@mysqld.master.port
EOF
;
close OUT;
my $basedir= "../..";
my $config= My::ConfigFactory->new_config
(
{
basedir => $basedir,
template_path => $gen1_cnf,
vardir => "/path/to/var",
baseport => 10987,
#hosts => [ 'host1', 'host2' ],
}
);
print $config;
ok ( $config->group("mysqld.master"), "group mysqld.master exists");
ok ( $config->group("mysqld.1"), "group mysqld.1 exists");
ok ( $config->group("client"), "group client exists");
ok ( !$config->group("mysqld.3"), "group mysqld.3 does not exist");
ok ( $config->first_like("mysqld"), "group like 'mysqld' exists");
is( $config->value('mysqld.1', '#host'), 'localhost',
"mysqld.1.#host has been generated");
is( $config->value('client', 'host'), 'localhost',
"client.host has been generated");
is( $config->value('client', 'host'),
$config->value('mysqld.master', '#host'),
"client.host is same as mysqld.master.host");
ok ( $config->value("mysqld.1", 'character-sets-dir') =~ /$basedir.*charsets$/,
"'character-sets-dir' generated");
ok ( $config->value("mysqld.1", 'language') =~ /$basedir.*english$/,
"'language' generated");
ok ( $config->value("ENV", 'MASTER_MY_PORT') =~ /\d/,
"'language' generated");
my $gen2_cnf= "$dir/gen2.cnf";
open(OUT, ">", $gen2_cnf) or die;
print OUT <<EOF
[mysqld.master]
EOF
;
close OUT;
my $config2= My::ConfigFactory->new_config
(
{
basedir => $basedir,
template_path => $gen2_cnf,
vardir => "/path/to/var",
baseport => 10987,
#hosts => [ 'host1', 'host2' ],
}
);
print $config2;
ok ( $config2->first_like("mysqld"), "group like 'mysqld' exists");

21
mysql-test/lib/t/test_child.pl Executable file
View File

@ -0,0 +1,21 @@
#!/usr/bin/perl
# -*- cperl -*-
use strict;
use Getopt::Long;
my $opt_exit_code= 0;
GetOptions
(
# Exit with the specified exit code
'exit-code=i' => \$opt_exit_code
);
print "Hello stdout\n";
print STDERR "Hello stderr\n";
exit ($opt_exit_code);