rpl_semi_sync_event.test 2.79 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13
source include/have_semisync_plugin.inc;
source include/not_embedded.inc;
source include/master-slave.inc;
source include/have_innodb.inc;

let $engine_type= InnoDB;

# Suppress warnings that might be generated during the test
disable_query_log;
connection master;
call mtr.add_suppression("Timeout waiting for reply of binlog");
call mtr.add_suppression("Semi-sync master .* waiting for slave reply");
call mtr.add_suppression("Read semi-sync reply");
14
call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT.");
15 16 17 18 19 20 21 22
connection slave;
call mtr.add_suppression("Master server does not support semi-sync");
call mtr.add_suppression("Semi-sync slave .* reply");
enable_query_log;

connection master;
disable_query_log;
let $value = query_get_value(show variables like 'rpl_semi_sync_master_enabled', Value, 1);
23
if ($value == No such row)
24 25 26 27 28 29 30 31 32 33 34 35 36
{
    set sql_log_bin=0;
    eval INSTALL PLUGIN rpl_semi_sync_master SONAME '$SEMISYNC_MASTER_PLUGIN';
    SET GLOBAL rpl_semi_sync_master_enabled = 1;
    set sql_log_bin=1;
}
enable_query_log;

connection slave;
source include/stop_slave.inc;

disable_query_log;
let $value= query_get_value(show variables like 'rpl_semi_sync_slave_enabled', Value, 1);
37
if ($value == No such row)
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109
{
    set sql_log_bin=0;
    eval INSTALL PLUGIN rpl_semi_sync_slave SONAME '$SEMISYNC_SLAVE_PLUGIN';
    SET GLOBAL rpl_semi_sync_slave_enabled = 1;
    set sql_log_bin=1;
}
enable_query_log;

source include/start_slave.inc;

connection master;
SET GLOBAL event_scheduler = ON;

replace_result $engine_type ENGINE_TYPE;
eval CREATE TABLE t1 (i INT NOT NULL AUTO_INCREMENT PRIMARY KEY, f varchar(8)) ENGINE=$engine_type;
INSERT INTO t1 (f) VALUES ('a'),('a'),('a'),('a'),('a');
INSERT INTO t1 SELECT i+5, f FROM t1;
INSERT INTO t1 SELECT i+10, f FROM t1;

CREATE EVENT ev1 ON SCHEDULE EVERY 1 SECOND
DO INSERT INTO t1 VALUES (SLEEP(5),CONCAT('ev1_',CONNECTION_ID()));
CREATE EVENT ev2 ON SCHEDULE EVERY 1 SECOND
DO INSERT INTO t1 VALUES (SLEEP(5),CONCAT('ev2_',CONNECTION_ID()));

connection slave;
STOP SLAVE IO_THREAD;

connection master;
let $run = 20;
while ($run)
{
        connect (m$run,localhost,root,,);
        connection m$run;
        send;
        eval UPDATE t1 SET f = CONCAT('up_',CONNECTION_ID()) WHERE i = $run;
        connection master;
        dec $run;
}

connection master;
SET GLOBAL event_scheduler = OFF;

let $run = 20;
while ($run)
{
	connection m$run;
	reap;
        disconnect m$run;
        dec $run;
}

#
# Clean up
#
connection slave;
source include/stop_slave.inc;

disable_warnings;
UNINSTALL PLUGIN rpl_semi_sync_slave;

connection master;
UNINSTALL PLUGIN rpl_semi_sync_master;
enable_warnings;

connection slave;
source include/start_slave.inc;

connection master;
DROP EVENT ev1;
DROP EVENT ev2;
DROP TABLE t1;
sync_slave_with_master;