1 start_server
{tags
{"dump"}} {
2 test
{DUMP
/ RESTORE are able to serialize
/ unserialize a simple key
} {
4 set encoded
[r dump foo
]
6 list [r exists foo
] [r restore foo
0 $encoded] [r ttl foo
] [r get foo
]
9 test
{RESTORE can
set an arbitrary expire to the materialized key
} {
11 set encoded
[r dump foo
]
13 r restore foo
5000 $encoded
15 assert
{$ttl >= 3000 && $ttl <= 5000}
19 test
{RESTORE returns an
error of the key already exists
} {
22 catch {r restore foo
0 "..."} e
26 test
{DUMP of non existing key returns nil
} {
27 r dump nonexisting_key
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
]
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]
42 assert
{[$first exists key
] == 0}
43 assert
{[$second exists key
] == 1}
44 assert
{[$second get key
] eq
{Some Value
}}
45 assert
{[$second ttl key
] == -1}
49 test
{MIGRATE propagates TTL correctly
} {
50 set first
[srv
0 client
]
51 r
set key
"Some Value"
52 start_server
{tags
{"repl"}} {
53 set second
[srv
0 client
]
54 set second_host
[srv
0 host
]
55 set second_port
[srv
0 port
]
57 assert
{[$first exists key
] == 1}
58 assert
{[$second exists key
] == 0}
60 set ret
[r
-1 migrate
$second_host $second_port key
9 5000]
62 assert
{[$first exists key
] == 0}
63 assert
{[$second exists key
] == 1}
64 assert
{[$second get key
] eq
{Some Value
}}
65 assert
{[$second ttl key
] >= 7 && [$second ttl key
] <= 10}
69 test
{MIGRATE can correctly transfer large values
} {
70 set first
[srv
0 client
]
72 for {set j
0} {$j < 5000} {incr j
} {
73 r rpush key
1 2 3 4 5 6 7 8 9 10
74 r rpush key
"item 1" "item 2" "item 3" "item 4" "item 5" \
75 "item 6" "item 7" "item 8" "item 9" "item 10"
77 assert
{[string length
[r dump key
]] > (1024*64)}
78 start_server
{tags
{"repl"}} {
79 set second
[srv
0 client
]
80 set second_host
[srv
0 host
]
81 set second_port
[srv
0 port
]
83 assert
{[$first exists key
] == 1}
84 assert
{[$second exists key
] == 0}
85 set ret
[r
-1 migrate
$second_host $second_port key
9 10000]
87 assert
{[$first exists key
] == 0}
88 assert
{[$second exists key
] == 1}
89 assert
{[$second ttl key
] == -1}
90 assert
{[$second llen key
] == 5000*20}
94 test
{MIGRATE timeout actually works
} {
95 set first
[srv
0 client
]
96 r
set key
"Some Value"
97 start_server
{tags
{"repl"}} {
98 set second
[srv
0 client
]
99 set second_host
[srv
0 host
]
100 set second_port
[srv
0 port
]
102 assert
{[$first exists key
] == 1}
103 assert
{[$second exists key
] == 0}
105 set rd
[redis_deferring_client
]
106 $rd debug sleep
5.0 ; # Make second server unable to reply.
108 catch {r
-1 migrate
$second_host $second_port key
9 1000} e
109 assert_match
{IOERR
*} $e