RANDOMKEY issue 26 fixed, generic test + regression added

This commit is contained in:
antirez 2009-04-08 00:59:53 +02:00
parent 05557f6de7
commit ce7bef0795
2 changed files with 25 additions and 1 deletions

View File

@ -2237,9 +2237,10 @@ static void randomkeyCommand(redisClient *c) {
while(1) {
de = dictGetRandomKey(c->db->dict);
if (expireIfNeeded(c->db,dictGetEntryKey(de)) == 0) break;
if (!de || expireIfNeeded(c->db,dictGetEntryKey(de)) == 0) break;
}
if (de == NULL) {
addReply(c,shared.plus);
addReply(c,shared.crlf);
} else {
addReply(c,shared.plus);

View File

@ -588,6 +588,29 @@ proc main {server port} {
$r mget foo baazz bar myset
} {BAR {} FOO {}}
test {RANDOMKEY} {
$r flushall
$r set foo x
$r set bar y
set foo_seen 0
set bar_seen 0
for {set i 0} {$i < 100} {incr i} {
set rkey [$r randomkey]
if {$rkey eq {foo}} {
set foo_seen 1
}
if {$rkey eq {bar}} {
set bar_seen 1
}
}
list $foo_seen $bar_seen
} {1 1}
test {RANDOMKEY against empty DB} {
$r flushall
$r randomkey
} {}
# Leave the user with a clean DB before to exit
test {FLUSHALL} {
$r flushall