From ab8232d0223a9983e5590998b6c44d9639dc8b56 Mon Sep 17 00:00:00 2001 From: antirez Date: Mon, 2 Apr 2012 11:44:25 +0200 Subject: [PATCH] DUMP, RESTORE, MIGRATE tests. --- tests/test_helper.tcl | 1 + tests/unit/dump.tcl | 66 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+) create mode 100644 tests/unit/dump.tcl diff --git a/tests/test_helper.tcl b/tests/test_helper.tcl index 7978d8a4..34d96606 100644 --- a/tests/test_helper.tcl +++ b/tests/test_helper.tcl @@ -39,6 +39,7 @@ set ::all_tests { unit/maxmemory unit/introspection unit/obuf-limits + unit/dump } # Index to the next test to run in the ::all_tests list. set ::next_test 0 diff --git a/tests/unit/dump.tcl b/tests/unit/dump.tcl new file mode 100644 index 00000000..120638ec --- /dev/null +++ b/tests/unit/dump.tcl @@ -0,0 +1,66 @@ +start_server {tags {"dump"}} { + test {DUMP / RESTORE are able to serialize / unserialize a simple key} { + r set foo bar + set encoded [r dump foo] + r del foo + list [r exists foo] [r restore foo 0 $encoded] [r ttl foo] [r get foo] + } {0 OK -1 bar} + + test {RESTORE can set an arbitrary expire to the materialized key} { + r set foo bar + set encoded [r dump foo] + r del foo + r restore foo 5000 $encoded + set ttl [r pttl foo] + assert {$ttl >= 3000 && $ttl <= 5000} + r get foo + } {bar} + + test {RESTORE returns an error of the key already exists} { + r set foo bar + set e {} + catch {r restore foo 0 "..."} e + set e + } {*is busy*} + + test {DUMP of non existing key returns nil} { + r dump nonexisting_key + } {} + + test {MIGRATE is able to migrate a key between two instances} { + set first [srv 0 client] + r set key "Some Value" + start_server {tags {"repl"}} { + set second [srv 0 client] + set second_host [srv 0 host] + set second_port [srv 0 port] + + assert {[$first exists key] == 1} + assert {[$second exists key] == 0} + set ret [r -1 migrate $second_host $second_port key 9 5000] + assert {$ret eq {OK}} + assert {[$first exists key] == 0} + assert {[$second exists key] == 1} + assert {[$second get key] eq {Some Value}} + } + } + + test {MIGRATE timeout actually works} { + set first [srv 0 client] + r set key "Some Value" + start_server {tags {"repl"}} { + set second [srv 0 client] + set second_host [srv 0 host] + set second_port [srv 0 port] + + assert {[$first exists key] == 1} + assert {[$second exists key] == 0} + + set rd [redis_deferring_client] + $rd debug sleep 5.0 ; # Make second server unable to reply. + set e {} + catch {r -1 migrate $second_host $second_port key 9 1000} e + assert_match {ERR*} $e + } + } +}