xref: /f-stack/app/redis-5.0.5/tests/unit/wait.tcl (revision 572c4311)
1start_server {tags {"wait"}} {
2start_server {} {
3    set slave [srv 0 client]
4    set slave_host [srv 0 host]
5    set slave_port [srv 0 port]
6    set master [srv -1 client]
7    set master_host [srv -1 host]
8    set master_port [srv -1 port]
9
10    test {Setup slave} {
11        $slave slaveof $master_host $master_port
12        wait_for_condition 50 100 {
13            [s 0 master_link_status] eq {up}
14        } else {
15            fail "Replication not started."
16        }
17    }
18
19    test {WAIT should acknowledge 1 additional copy of the data} {
20        $master set foo 0
21        $master incr foo
22        $master incr foo
23        $master incr foo
24        assert {[$master wait 1 5000] == 1}
25        assert {[$slave get foo] == 3}
26    }
27
28    test {WAIT should not acknowledge 2 additional copies of the data} {
29        $master incr foo
30        assert {[$master wait 2 1000] <= 1}
31    }
32
33    test {WAIT should not acknowledge 1 additional copy if slave is blocked} {
34        exec src/redis-cli -h $slave_host -p $slave_port debug sleep 5 > /dev/null 2> /dev/null &
35        after 1000 ;# Give redis-cli the time to execute the command.
36        $master set foo 0
37        $master incr foo
38        $master incr foo
39        $master incr foo
40        assert {[$master wait 1 3000] == 0}
41    }
42}}
43