#At file:///home/ksm/sun/repo/WL4416/mysql-6.0-rpl/ based on revid:sven@stripped
2744 Serge Kozlov 2008-12-04
WL#4416:
1. Skip sleeps for primitives from rpl_extra if used engine is not NDB
(via new primitive wait_for_ndb_to_binlog.inc)
2. Replace sleep by sync_slave_io_master.inc for rpl_stm_000001.test
added:
mysql-test/include/wait_for_ndb_to_binlog.inc
modified:
mysql-test/extra/rpl_tests/rpl_row_blob.test
mysql-test/extra/rpl_tests/rpl_row_func003.test
mysql-test/extra/rpl_tests/rpl_row_sp003.test
mysql-test/extra/rpl_tests/rpl_stm_000001.test
mysql-test/extra/rpl_tests/rpl_trig004.test
=== modified file 'mysql-test/extra/rpl_tests/rpl_row_blob.test'
--- a/mysql-test/extra/rpl_tests/rpl_row_blob.test 2007-06-18 13:36:10 +0000
+++ b/mysql-test/extra/rpl_tests/rpl_row_blob.test 2008-12-03 21:49:25 +0000
@@ -36,7 +36,7 @@ SELECT LENGTH(data) FROM test.t1 WHERE c
save_master_pos;
connection slave;
sync_with_master;
-sleep 5;
+--source include/wait_for_ndb_to_binlog.inc
--echo
--echo **** Data Insert Validation Slave Section test.t1 ****
--echo
@@ -56,12 +56,10 @@ UPDATE t1 set data=repeat('c',17*1024) w
--echo
SELECT LENGTH(data) FROM test.t1 WHERE c1 = 1;
SELECT LENGTH(data) FROM test.t1 WHERE c1 = 2;
-# Sleep is needed for NDB to allow time for
-# Injector thread to populate the bin log.
save_master_pos;
connection slave;
sync_with_master;
-sleep 5;
+--source include/wait_for_ndb_to_binlog.inc
--echo
--echo **** Data Update Validation Slave Section test.t1 ****
--echo
@@ -132,7 +130,7 @@ FROM test.t2 WHERE c1=2;
save_master_pos;
connection slave;
sync_with_master;
-sleep 5;
+--source include/wait_for_ndb_to_binlog.inc
--echo
--echo **** Data Insert Validation Slave Section test.t2 ****
--echo
@@ -155,12 +153,10 @@ SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900
FROM test.t2 WHERE c1=1;
SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3)
FROM test.t2 WHERE c1=2;
-# Sleep is needed for NDB to allow time for
-# Injector thread to populate the bin log.
save_master_pos;
connection slave;
sync_with_master;
-sleep 5;
+--source include/wait_for_ndb_to_binlog.inc
--echo
--echo **** Data Update Validation Slave Section test.t2 ****
--echo
=== modified file 'mysql-test/extra/rpl_tests/rpl_row_func003.test'
--- a/mysql-test/extra/rpl_tests/rpl_row_func003.test 2007-06-18 13:36:10 +0000
+++ b/mysql-test/extra/rpl_tests/rpl_row_func003.test 2008-12-03 21:49:25 +0000
@@ -44,9 +44,10 @@ END|
delimiter ;|
INSERT INTO test.t1 VALUES (null,test.f1()),(null,test.f1()),(null,test.f1());
-sleep 6;
+let $wait_time= 6;
+--source include/wait_for_ndb_to_binlog.inc
INSERT INTO test.t1 VALUES (null,test.f1()),(null,test.f1()),(null,test.f1());
-sleep 6;
+--source include/wait_for_ndb_to_binlog.inc
#Select in this test are used for debugging
#select * from test.t1;
=== modified file 'mysql-test/extra/rpl_tests/rpl_row_sp003.test'
--- a/mysql-test/extra/rpl_tests/rpl_row_sp003.test 2007-06-18 13:36:10 +0000
+++ b/mysql-test/extra/rpl_tests/rpl_row_sp003.test 2008-12-03 21:49:25 +0000
@@ -41,10 +41,7 @@ CALL test.p2();
SELECT release_lock("test");
SELECT * FROM test.t1;
#show binlog events;
-# Added sleep for use with NDB to ensure that
-# the injector thread will populate log before
-# we switch to the slave.
-sleep 5;
+--source include/wait_for_ndb_to_binlog.inc
sync_slave_with_master;
connection slave;
SELECT * FROM test.t1;
=== modified file 'mysql-test/extra/rpl_tests/rpl_stm_000001.test'
--- a/mysql-test/extra/rpl_tests/rpl_stm_000001.test 2007-12-12 17:19:24 +0000
+++ b/mysql-test/extra/rpl_tests/rpl_stm_000001.test 2008-12-03 21:49:25 +0000
@@ -68,8 +68,8 @@ enable_query_log;
connection slave;
lock tables t1 read;
start slave;
-#hope this is long enough for I/O thread to fetch over 16K relay log data
-sleep 3;
+connection master;
+--source include/sync_slave_io_with_master.inc
unlock tables;
#test handling of aborted connection in the middle of update
=== modified file 'mysql-test/extra/rpl_tests/rpl_trig004.test'
--- a/mysql-test/extra/rpl_tests/rpl_trig004.test 2007-06-06 17:57:07 +0000
+++ b/mysql-test/extra/rpl_tests/rpl_trig004.test 2008-12-03 21:49:25 +0000
@@ -35,9 +35,8 @@ INSERT INTO test.t2 VALUES (1, 0.0);
#show binlog events;
select * from test.t1;
select * from test.t2;
-# Have to sleep for a few seconds to allow
-# NDB injector thread to populate binlog
-sleep 10;
+let $wait_time= 10;
+--source include/wait_for_ndb_to_binlog.inc
sync_slave_with_master;
connection slave;
select * from test.t1;
=== added file 'mysql-test/include/wait_for_ndb_to_binlog.inc'
--- a/mysql-test/include/wait_for_ndb_to_binlog.inc 1970-01-01 00:00:00 +0000
+++ b/mysql-test/include/wait_for_ndb_to_binlog.inc 2008-12-03 21:49:25 +0000
@@ -0,0 +1,33 @@
+# ==== Purpose ====
+#
+# Several test primitives from mysql-test/extra/rpl_tests
+# shared for test cases for MyISAM, InnoDB, NDB and other
+# engines. But for NDB all events will be added by NDB
+# injector and now there are no way to detect the state of
+# NDB injector therefore this primitive waits 5 sec
+# if engine type is NDB.
+# In future that should be fixed by waiting of proper
+# state of NDB injector.
+#
+# ==== Usage ====
+#
+# let $engine_type= NDB;
+# --source include/wait_for_ndb_to_binlog.inc
+#
+# ==== Parameters =====
+#
+# $engine_type
+# Type of engine. If type is NDB then it waits $wait_time sec
+#
+# $wait_time
+# Test will wait $wait_time seconds
+
+let $_wait_time= $wait_time;
+if (!$wait_time) {
+ let $_wait_time= 5;
+}
+
+if (`SELECT UPPER(LEFT('$engine_type',3))`) {
+ sleep $_wait_time;
+}
+