master sends first test from list of tests supplied by the user and immediately sends command TESTCASE to the worker .mariadb-test/suite/rplmariadb-test/suite/handlerstorage/example/mariadb-test/demoplugin/auth_pam/mariadb-test/pam[row]
binlog-format=row
[stmt]
binlog-format=statement
[mix]
binlog-format=mixed==============================================================================
TEST WORKER RESULT TIME (ms) or COMMENT
--------------------------------------------------------------------------
rpl.rpl_row_find_row_debug [ skipped ] Requires debug build
main-pbxt.connect [ skipped ] No PBXT engine
main-pbxt.mysqlbinlog_row [ disabled ] test expects a non-transactional engine
rpl.rpl_savepoint 'mix,xtradb' w2 [ pass ] 238
rpl.rpl_stm_innodb 'innodb_plugin,row' w1 [ skipped ] Neither MIXED nor STATEMENT binlog format
binlog.binlog_sf 'stmt' w2 [ pass ] 7
unit.dbug w2 [ pass ] 1
maria.small_blocksize w1 [ pass ] 23
sys_vars.autocommit_func3 'innodb_plugin' w1 [ pass ] 5
sys_vars.autocommit_func3 'xtradb' w1 [ pass ] 6
main.ipv6 w1 [ pass ] 131
...--plugin-load=$HA_INNODB_SO--plugin-load=$AUTH_PAM_SO--plugin-load=$HA_EXAMPLE_SO--plugin-load=ha_innodb.so:auth_pam.so--plugin-load=ha_innodb.so --plugin-load=auth_pam.so --plugin-load=mysqldsuite.pm,a", ",b",
",a,b", or nothing)# List of disabled tests
# test name : comment
rpl_redirect : Fails due to bug#49978
events_time_zone : need to fix the timing...
rpl.rpl_redirect [ disabled ] Fails due to bug#49978
rpl.events_time_zone [ disabled ] need to fix the timing
...--plugin-load=$AUTH_PAM_SO
--max-connections=40 --net_read_timeout=5
"--replicate-rewrite-db=test->rewrite"!include include/default_my.cnf[mysqld.2]
master-port= @mysqld.1.port[example]
#location = localhost:@mysqld.1.port
bar = server:@example.#location/data[ENV]
MASTER_MYPORT = @mysqld.1.port[mysqld.1]
user = @ENV.LOGNAME[ENV]
SPHINXSEARCH_PORT = @OPT.port[row]
binlog-format=row
[stmt]
binlog-format=statement
[mix]
binlog-format=mixedsub config_files {(
'config.ini' => \&write_ini,
'new.conf' => \&do_new
)}sub servers {(
qr/^foo$/ => { SORT => 200, # start foo before mysqld
START => \&start_foo,
WAIT => \&wait_foo }
)}sub skip_combinations {(
'combinations' => [ 'mix', 'rpl' ],
'inc/many.combinations' => [ 'a', 'bb', 'c' ],
'windows.inc' => "Not on windows",
)}diff -u main/foo.result main/foo.reject > main/foo,comb.rdiff
or
diff -u main/foo.result main/foo,comb.reject > main/foo,comb.rdiffdiff -u main/innodb_ext_key.result main/innodb_ext_key,off.reject > main/innodb_ext_key,off.rdiff
diff -u suite/sys_vars/r/sysvars_server_notembedded.result suite/sys_vars/r/sysvars_server_notembedded,32bit.reject > suite/sys_vars/r/sysvars_server_notembedded,32bit.rdiff--- testname.result
+++ testname.rejectqwe-rty.foo 'aa,bb' [ pass ]replace_regex--replace_regex (/some/path)</another/path>
--replace_regex !/foo/bar!foobar!
--replace_regex {pat\}tern}/replace\/ment/i--disable_result_log
exec $XTRABACKUP --param1 --param2 # Note, do not use output redirection here
--enable_result_log# Where to install the MinIO binaries and where to store the data
install=/my/local/minio
data=/tmp/shared
# Get the MinIO binaries. You can skip this test if you already have MinIO installed.
mkdir -p $install
wget https://dl.min.io/server/minio/release/linux-amd64/minio -O $install/minio
wget https://dl.min.io/client/mc/release/linux-amd64/mc -O $install/mc
chmod a+x $install/minio $install/mc
# Setup MinIO for usage with mariadb-test-run
MINIO_ACCESS_KEY=minio MINIO_SECRET_KEY=minioadmin $install/minio server $data 2>&1 &
$install/mc config host add local http://127.0.0.1:9000 minio minioadmin
$install/mc mb --ignore-existing local/storage-enginecd "mysql-source-dir"/mariadb-test
./mariadb-test-run --suite=s3$install/mc ls -r local/storage-enginels $data/storage-enginemariadb-test/suite/s3/my.cnf
mariadb-test/suite/s3/slave.cnfmariadb-test-run.pl --stop-file="/path/to/stop/file" --stop-keep-alive=120export MTR_STOP_FILE="/path/to/stop/file"
export MTR_STOP_KEEP_ALIVE=120
mariadb-test-run.plSET DEBUG_SYNC= 'after_open_tables SIGNAL opened WAIT_FOR flushed';--connection conn1
SET DEBUG_SYNC= 'after_open_tables SIGNAL opened WAIT_FOR flushed';
send INSERT INTO t1 VALUES(1);
--connection conn2
SET DEBUG_SYNC= 'now WAIT_FOR opened';
SET DEBUG_SYNC= 'after_abort_locks SIGNAL flushed';
FLUSH TABLE t1;SET DEBUG_SYNC= 'name SIGNAL sig EXECUTE 3';SET DEBUG_SYNC= 'name WAIT_FOR sig TIMEOUT 10 EXECUTE 2';SET DEBUG_SYNC= 'name HIT_LIMIT 3';SET DEBUG_SYNC= 'name SIGNAL sig EXECUTE 2 HIT_LIMIT 3';SET DEBUG_SYNC= 'name CLEAR';SET DEBUG_SYNC= 'RESET';SET DEBUG_SYNC= 'name TEST';RESET |
<sync point name> TEST |
<sync point name> CLEAR |
<sync point name> {{SIGNAL <signal name> |
WAIT_FOR <signal name> [TIMEOUT <seconds>]}
[EXECUTE <count>] &| HIT_LIMIT <count>}--debug-sync-timeout[=default_wait_timeout_value_in_seconds]mariadb-test-run.pl ... --debug-sync-timeout=0 ...mariadb-test-run.pl ... --debug-sync-timeout=10 ...#define DEBUG_SYNC(thd, sync_point_name)
if (unlikely(opt_debug_sync_timeout))
debug_sync(thd, STRING_WITH_LEN(sync_point_name))mysql_mutex_lock(&mutex);
thd->enter_cond(&condition_variable, &mutex, new_message);
#if defined(ENABLE_DEBUG_SYNC)
if (!thd->killed && !end_of_wait_condition)
DEBUG_SYNC(thd, "sync_point_name");
#endif
while (!thd->killed && !end_of_wait_condition)
mysql_cond_wait(&condition_variable, &mutex);
thd->exit_cond(old_message);while (!thd->killed && !end_of_wait_condition)
{
mysql_mutex_lock(&mutex);
thd->enter_cond(&condition_variable, &mutex, new_message);
if (!thd->killed [&& !end_of_wait_condition])
{
[DEBUG_SYNC(thd, "sync_point_name");]
mysql_cond_wait(&condition_variable, &mutex);
}
thd->exit_cond(old_message);
}egrep 'query:|debug_sync_exec:' mysql-test/var/log/mysqld.1.traceSET DEBUG_SYNC='now SIGNAL sig';
SET DEBUG_SYNC='RESET'; # Problematic because sig can be cleared before a waiting thread can acknowledge itSET DEBUG_SYNC='now SIGNAL sig';
# Don't issue the RESET until we have proven the waiting thread has received the signal
let $wait_condition= select count(*)=0 from information_schema.processlist where state like "debug sync point%";
source include/wait_condition.inc;
SET DEBUG_SYNC='RESET'; # Now this is safe./mariadb-test-run.pl [ OPTIONS ] [ TESTCASE ]path-to-testcase
[suite.]testcase[,combination]rpl.rpl_invoked_features,mix,xtradb_plugin
suite/rpl/t/rpl.rpl_invoked_features./mtr 1st --strace
./mtr 1st --client-rr=--chaos
./mtr 1st --manual-gdb='b mysql_parse;r'
./mtr 1st --boot-gdb='--quiet --tui;b mysql_parse;r'MariaDB uses mariadb-test to test functionality. It is an all-in-one test framework doing unit, regression, and conformance testing