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 {If min-slaves-to-write is honored, write is accepted} { 10 r config set min-slaves-to-write 1 11 r config set min-slaves-max-lag 10 12 r set foo 12345 13 wait_for_condition 50 100 { 14 [r -1 get foo] eq {12345} 15 } else { 16 fail "Write did not reached slave" 17 } 18 } 19 20 test {No write if min-slaves-to-write is < attached slaves} { 21 r config set min-slaves-to-write 2 22 r config set min-slaves-max-lag 10 23 catch {r set foo 12345} err 24 set err 25 } {NOREPLICAS*} 26 27 test {If min-slaves-to-write is honored, write is accepted (again)} { 28 r config set min-slaves-to-write 1 29 r config set min-slaves-max-lag 10 30 r set foo 12345 31 wait_for_condition 50 100 { 32 [r -1 get foo] eq {12345} 33 } else { 34 fail "Write did not reached slave" 35 } 36 } 37 38 test {No write if min-slaves-max-lag is > of the slave lag} { 39 r -1 deferred 1 40 r config set min-slaves-to-write 1 41 r config set min-slaves-max-lag 2 42 r -1 debug sleep 6 43 assert {[r set foo 12345] eq {OK}} 44 after 4000 45 catch {r set foo 12345} err 46 assert {[r -1 read] eq {OK}} 47 r -1 deferred 0 48 set err 49 } {NOREPLICAS*} 50 51 test {min-slaves-to-write is ignored by slaves} { 52 r config set min-slaves-to-write 1 53 r config set min-slaves-max-lag 10 54 r -1 config set min-slaves-to-write 1 55 r -1 config set min-slaves-max-lag 10 56 r set foo aaabbb 57 wait_for_condition 50 100 { 58 [r -1 get foo] eq {aaabbb} 59 } else { 60 fail "Write did not reached slave" 61 } 62 } 63 64 # Fix parameters for the next test to work 65 r config set min-slaves-to-write 0 66 r -1 config set min-slaves-to-write 0 67 r flushall 68 69 test {MASTER and SLAVE dataset should be identical after complex ops} { 70 createComplexDataset r 10000 71 after 500 72 if {[r debug digest] ne [r -1 debug digest]} { 73 set csv1 [csvdump r] 74 set csv2 [csvdump {r -1}] 75 set fd [open /tmp/repldump1.txt w] 76 puts -nonewline $fd $csv1 77 close $fd 78 set fd [open /tmp/repldump2.txt w] 79 puts -nonewline $fd $csv2 80 close $fd 81 puts "Master - Slave inconsistency" 82 puts "Run diff -u against /tmp/repldump*.txt for more info" 83 } 84 assert_equal [r debug digest] [r -1 debug digest] 85 } 86 } 87} 88