1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- start_server {tags {"repl"}} {
- start_server {} {
- test {First server should have role slave after SLAVEOF} {
- r -1 slaveof [srv 0 host] [srv 0 port]
- after 1000
- s -1 role
- } {slave}
- test {BRPOPLPUSH replication, when blocking against empty list} {
- set rd [redis_deferring_client]
- $rd brpoplpush a b 5
- r lpush a foo
- after 1000
- assert_equal [r debug digest] [r -1 debug digest]
- }
- test {BRPOPLPUSH replication, list exists} {
- set rd [redis_deferring_client]
- r lpush c 1
- r lpush c 2
- r lpush c 3
- $rd brpoplpush c d 5
- after 1000
- assert_equal [r debug digest] [r -1 debug digest]
- }
- test {MASTER and SLAVE dataset should be identical after complex ops} {
- createComplexDataset r 10000
- after 500
- if {[r debug digest] ne [r -1 debug digest]} {
- set csv1 [csvdump r]
- set csv2 [csvdump {r -1}]
- set fd [open /tmp/repldump1.txt w]
- puts -nonewline $fd $csv1
- close $fd
- set fd [open /tmp/repldump2.txt w]
- puts -nonewline $fd $csv2
- close $fd
- puts "Master - Slave inconsistency"
- puts "Run diff -u against /tmp/repldump*.txt for more info"
- }
- assert_equal [r debug digest] [r -1 debug digest]
- }
- test {MASTER and SLAVE consistency with expire} {
- createComplexDataset r 50000 useexpire
- after 4000 ;# Make sure everything expired before taking the digest
- r keys * ;# Force DEL syntesizing to slave
- after 1000 ;# Wait another second. Now everything should be fine.
- if {[r debug digest] ne [r -1 debug digest]} {
- set csv1 [csvdump r]
- set csv2 [csvdump {r -1}]
- set fd [open /tmp/repldump1.txt w]
- puts -nonewline $fd $csv1
- close $fd
- set fd [open /tmp/repldump2.txt w]
- puts -nonewline $fd $csv2
- close $fd
- puts "Master - Slave inconsistency"
- puts "Run diff -u against /tmp/repldump*.txt for more info"
- }
- assert_equal [r debug digest] [r -1 debug digest]
- }
- }
- }
- start_server {tags {"repl"}} {
- r set mykey foo
-
- start_server {} {
- test {Second server should have role master at first} {
- s role
- } {master}
-
- test {SLAVEOF should start with link status "down"} {
- r slaveof [srv -1 host] [srv -1 port]
- s master_link_status
- } {down}
-
- test {The role should immediately be changed to "slave"} {
- s role
- } {slave}
- wait_for_sync r
- test {Sync should have transferred keys from master} {
- r get mykey
- } {foo}
-
- test {The link status should be up} {
- s master_link_status
- } {up}
-
- test {SET on the master should immediately propagate} {
- r -1 set mykey bar
- r 0 get mykey
- } {bar}
- }
- }
|