1start_server {tags {"repl"}} { 2 start_server {} { 3 test {First server should have role slave after SLAVEOF} { 4 r -1 slaveof [srv 0 host] [srv 0 port] 5 after 1000 6 s -1 role 7 } {slave} 8 9 test {MASTER and SLAVE dataset should be identical after complex ops} { 10 createComplexDataset r 10000 11 after 500 12 if {[r debug digest] ne [r -1 debug digest]} { 13 set csv1 [csvdump r] 14 set csv2 [csvdump {r -1}] 15 set fd [open /tmp/repldump1.txt w] 16 puts -nonewline $fd $csv1 17 close $fd 18 set fd [open /tmp/repldump2.txt w] 19 puts -nonewline $fd $csv2 20 close $fd 21 puts "Master - Slave inconsistency" 22 puts "Run diff -u against /tmp/repldump*.txt for more info" 23 } 24 assert_equal [r debug digest] [r -1 debug digest] 25 } 26 27 test {MASTER and SLAVE consistency with expire} { 28 createComplexDataset r 50000 useexpire 29 after 4000 ;# Make sure everything expired before taking the digest 30 r keys * ;# Force DEL syntesizing to slave 31 after 1000 ;# Wait another second. Now everything should be fine. 32 if {[r debug digest] ne [r -1 debug digest]} { 33 set csv1 [csvdump r] 34 set csv2 [csvdump {r -1}] 35 set fd [open /tmp/repldump1.txt w] 36 puts -nonewline $fd $csv1 37 close $fd 38 set fd [open /tmp/repldump2.txt w] 39 puts -nonewline $fd $csv2 40 close $fd 41 puts "Master - Slave inconsistency" 42 puts "Run diff -u against /tmp/repldump*.txt for more info" 43 } 44 assert_equal [r debug digest] [r -1 debug digest] 45 } 46 } 47} 48 49start_server {tags {"repl"}} { 50 r set mykey foo 51 52 start_server {} { 53 test {Second server should have role master at first} { 54 s role 55 } {master} 56 57 test {SLAVEOF should start with link status "down"} { 58 r slaveof [srv -1 host] [srv -1 port] 59 s master_link_status 60 } {down} 61 62 test {The role should immediately be changed to "slave"} { 63 s role 64 } {slave} 65 66 wait_for_sync r 67 test {Sync should have transferred keys from master} { 68 r get mykey 69 } {foo} 70 71 test {The link status should be up} { 72 s master_link_status 73 } {up} 74 75 test {SET on the master should immediately propagate} { 76 r -1 set mykey bar 77 r 0 get mykey 78 } {bar} 79 } 80} 81