X-Git-Url: https://git.saurik.com/redis.git/blobdiff_plain/121ffc85f4ab8cb4a961551163ed53541834c2b1..9c00f078978e452d541ddc8a9a2b7704db2cb7f3:/tests/unit/other.tcl?ds=sidebyside diff --git a/tests/unit/other.tcl b/tests/unit/other.tcl index 8eebdc63..a53f3f5c 100644 --- a/tests/unit/other.tcl +++ b/tests/unit/other.tcl @@ -107,7 +107,7 @@ start_server {tags {"other"}} { } } - test {EXPIRES after a reload (snapshot + append only file)} { + test {EXPIRES after a reload (snapshot + append only file rewrite)} { r flushdb r set x 10 r expire x 1000 @@ -123,6 +123,45 @@ start_server {tags {"other"}} { list $e1 $e2 } {1 1} + test {EXPIRES after AOF reload (without rewrite)} { + r flushdb + r config set appendonly yes + r set x somevalue + r expire x 1000 + r setex y 2000 somevalue + r set z somevalue + r expireat z [expr {[clock seconds]+3000}] + + # Milliseconds variants + r set px somevalue + r pexpire px 1000000 + r psetex py 2000000 somevalue + r set pz somevalue + r pexpireat pz [expr {([clock seconds]+3000)*1000}] + + # Reload and check + waitForBgrewriteaof r + # We need to wait two seconds to avoid false positives here, otherwise + # the DEBUG LOADAOF command may read a partial file. + # Another solution would be to set the fsync policy to no, since this + # prevents write() to be delayed by the completion of fsync(). + after 2000 + r debug loadaof + set ttl [r ttl x] + assert {$ttl > 900 && $ttl <= 1000} + set ttl [r ttl y] + assert {$ttl > 1900 && $ttl <= 2000} + set ttl [r ttl z] + assert {$ttl > 2900 && $ttl <= 3000} + set ttl [r ttl px] + assert {$ttl > 900 && $ttl <= 1000} + set ttl [r ttl py] + assert {$ttl > 1900 && $ttl <= 2000} + set ttl [r ttl pz] + assert {$ttl > 2900 && $ttl <= 3000} + r config set appendonly no + } + tags {protocol} { test {PIPELINING stresser (also a regression for the old epoll bug)} { set fd2 [socket $::host $::port] @@ -154,53 +193,6 @@ start_server {tags {"other"}} { } {1} } - test {MUTLI / EXEC basics} { - r del mylist - r rpush mylist a - r rpush mylist b - r rpush mylist c - r multi - set v1 [r lrange mylist 0 -1] - set v2 [r ping] - set v3 [r exec] - list $v1 $v2 $v3 - } {QUEUED QUEUED {{a b c} PONG}} - - test {DISCARD} { - r del mylist - r rpush mylist a - r rpush mylist b - r rpush mylist c - r multi - set v1 [r del mylist] - set v2 [r discard] - set v3 [r lrange mylist 0 -1] - list $v1 $v2 $v3 - } {QUEUED OK {a b c}} - - test {Nested MULTI are not allowed} { - set err {} - r multi - catch {[r multi]} err - r exec - set _ $err - } {*ERR MULTI*} - - test {MULTI where commands alter argc/argv} { - r sadd myset a - r multi - r spop myset - list [r exec] [r exists myset] - } {a 0} - - test {WATCH inside MULTI is not allowed} { - set err {} - r multi - catch {[r watch x]} err - r exec - set _ $err - } {*ERR WATCH*} - test {APPEND basics} { list [r append foo bar] [r get foo] \ [r append foo 100] [r get foo] @@ -247,6 +239,7 @@ start_server {tags {"other"}} { } {0 0} test {Perform a final SAVE to leave a clean DB on disk} { + waitForBgsave r r save } {OK} }