1proc start_bg_complex_data {host port db ops} { 2 exec tclsh8.5 tests/helpers/bg_complex_data.tcl $host $port $db $ops & 3} 4 5proc stop_bg_complex_data {handle} { 6 catch {exec /bin/kill -9 $handle} 7} 8 9start_server {tags {"repl"}} { 10 start_server {} { 11 12 set master [srv 0 client] 13 set master_host [srv 0 host] 14 set master_port [srv 0 port] 15 set load_handle0 [start_bg_complex_data $master_host $master_port 9 100000] 16 set load_handle1 [start_bg_complex_data $master_host $master_port 11 100000] 17 set load_handle2 [start_bg_complex_data $master_host $master_port 12 100000] 18 19 test {First server should have role slave after SLAVEOF} { 20 r -1 slaveof [srv 0 host] [srv 0 port] 21 after 1000 22 s -1 role 23 } {slave} 24 25 test {Test replication with parallel clients writing in differnet DBs} { 26 lappend slave [srv 0 client] 27 after 5000 28 stop_bg_complex_data $load_handle0 29 stop_bg_complex_data $load_handle1 30 stop_bg_complex_data $load_handle2 31 set retry 10 32 while {$retry && ([$master debug digest] ne [$slave debug digest])}\ 33 { 34 after 1000 35 incr retry -1 36 } 37 assert {[$master dbsize] > 0} 38 39 if {[r debug digest] ne [r -1 debug digest]} { 40 set csv1 [csvdump r] 41 set csv2 [csvdump {r -1}] 42 set fd [open /tmp/repldump1.txt w] 43 puts -nonewline $fd $csv1 44 close $fd 45 set fd [open /tmp/repldump2.txt w] 46 puts -nonewline $fd $csv2 47 close $fd 48 puts "Master - Slave inconsistency" 49 puts "Run diff -u against /tmp/repldump*.txt for more info" 50 } 51 assert_equal [r debug digest] [r -1 debug digest] 52 } 53 } 54} 55