]>
Commit | Line | Data |
---|---|---|
1 | start_server {tags {"dump"}} { | |
2 | test {DUMP / RESTORE are able to serialize / unserialize a simple key} { | |
3 | r set foo bar | |
4 | set encoded [r dump foo] | |
5 | r del foo | |
6 | list [r exists foo] [r restore foo 0 $encoded] [r ttl foo] [r get foo] | |
7 | } {0 OK -1 bar} | |
8 | ||
9 | test {RESTORE can set an arbitrary expire to the materialized key} { | |
10 | r set foo bar | |
11 | set encoded [r dump foo] | |
12 | r del foo | |
13 | r restore foo 5000 $encoded | |
14 | set ttl [r pttl foo] | |
15 | assert {$ttl >= 3000 && $ttl <= 5000} | |
16 | r get foo | |
17 | } {bar} | |
18 | ||
19 | test {RESTORE returns an error of the key already exists} { | |
20 | r set foo bar | |
21 | set e {} | |
22 | catch {r restore foo 0 "..."} e | |
23 | set e | |
24 | } {*is busy*} | |
25 | ||
26 | test {DUMP of non existing key returns nil} { | |
27 | r dump nonexisting_key | |
28 | } {} | |
29 | ||
30 | test {MIGRATE is able to migrate a key between two instances} { | |
31 | set first [srv 0 client] | |
32 | r set key "Some Value" | |
33 | start_server {tags {"repl"}} { | |
34 | set second [srv 0 client] | |
35 | set second_host [srv 0 host] | |
36 | set second_port [srv 0 port] | |
37 | ||
38 | assert {[$first exists key] == 1} | |
39 | assert {[$second exists key] == 0} | |
40 | set ret [r -1 migrate $second_host $second_port key 9 5000] | |
41 | assert {$ret eq {OK}} | |
42 | assert {[$first exists key] == 0} | |
43 | assert {[$second exists key] == 1} | |
44 | assert {[$second get key] eq {Some Value}} | |
45 | } | |
46 | } | |
47 | ||
48 | test {MIGRATE timeout actually works} { | |
49 | set first [srv 0 client] | |
50 | r set key "Some Value" | |
51 | start_server {tags {"repl"}} { | |
52 | set second [srv 0 client] | |
53 | set second_host [srv 0 host] | |
54 | set second_port [srv 0 port] | |
55 | ||
56 | assert {[$first exists key] == 1} | |
57 | assert {[$second exists key] == 0} | |
58 | ||
59 | set rd [redis_deferring_client] | |
60 | $rd debug sleep 5.0 ; # Make second server unable to reply. | |
61 | set e {} | |
62 | catch {r -1 migrate $second_host $second_port key 9 1000} e | |
63 | assert_match {ERR*} $e | |
64 | } | |
65 | } | |
66 | } |