From 14e809d0f7e40b1b2034e142d484f4182cda2e52 Mon Sep 17 00:00:00 2001 From: Jonathan Pickett Date: Tue, 12 Nov 2013 18:36:17 -0800 Subject: [PATCH] adjusting unit test timing and forcing double evaluation rather than string evaluation --- tests/unit/expire.tcl | 57 ++++++++++++++++++++++++++-------------- tests/unit/type/zset.tcl | 8 ++++-- 2 files changed, 43 insertions(+), 22 deletions(-) diff --git a/tests/unit/expire.tcl b/tests/unit/expire.tcl index 0a974297..4213a763 100644 --- a/tests/unit/expire.tcl +++ b/tests/unit/expire.tcl @@ -8,8 +8,11 @@ start_server {tags {"expire"}} { set v3 [r expire x 10] set v4 [r ttl x] r expire x 2 - list $v1 $v2 $v3 $v4 - } {1 [45] 1 10} + assert {$v1 eq 1} + assert {$v2 >= 4} + assert {$v3 eq 1} + assert {$v4 >= 9} + } test {EXPIRE - It should be still possible to read 'x'} { r get x @@ -105,10 +108,10 @@ start_server {tags {"expire"}} { set expire 100 set maxExpire 120 if { [string match {*win32*} [platform::identify]] == 1 } { - # tweaking windows expire times in order to bypass unit test failures. statement-statement execution time on a fully taxed system can be 150ms. + # tweaking windows expire times in order to bypass unit test failures. statement-statement execution time on a fully taxed system can be 100's of ms. set minExpire 10 - set expire 200 - set maxExpire 500 + set expire 1000 + set maxExpire 2000 } # This test is very likely to do a false positive if the @@ -116,50 +119,64 @@ start_server {tags {"expire"}} { # chances. for {set j 0} {$j < 10} {incr j} { r del x y z - r psetex x $expire somevalue + r psetex x $expire somevalue_1 after $minExpire set a [r get x] after $maxExpire set b [r get x] - r set x somevalue + r set x somevalue_2 r pexpire x $expire after $minExpire set c [r get x] after $maxExpire set d [r get x] - r set x somevalue + r set x somevalue_3 r pexpireat x [expr ([clock seconds]*1000)+$expire] after $minExpire set e [r get x] after $maxExpire set f [r get x] - if {$a eq {somevalue} && $b eq {} && - $c eq {somevalue} && $d eq {} && - $e eq {somevalue} && $f eq {}} break + if {$a eq {somevalue_1} && $b eq {} && + $c eq {somevalue_2} && $d eq {} && + $e eq {somevalue_3} && $f eq {}} break } - list $a $b - } {somevalue {}} + list $a $b $c $d $e $f + } {somevalue_1 {} somevalue_2 {} somevalue_3 {}} test {PTTL returns millisecond time to live} { + set expireTime 1 + set minTime 900 + set maxTime 1000 + if { [string match {*win32*} [platform::identify]] == 1 } { + set expireTime 2 + set minTime 200 + set maxTime 2000 + } r del x - r setex x 1 somevalue + r setex x $expireTime somevalue set ttl [r pttl x] - assert {$ttl > 900 && $ttl <= 1000} + assert {$ttl > $minTime && $ttl <= $maxTime} } test {Redis should actively expire keys incrementally} { - r flushdb - r psetex key1 500 a - r psetex key2 500 a - r psetex key3 500 a + set expireTime 500 + set evictionTime 1000 + if { [string match {*win32*} [platform::identify]] == 1 } { + set expireTime 2000 + set evictionTime 4000 + } + r flushdb + r psetex key1 $expireTime a + r psetex key2 $expireTime a + r psetex key3 $expireTime a set size1 [r dbsize] # Redis expires random keys ten times every second so we are # fairly sure that all the three keys should be evicted after # one second. - after 1000 + after $evictionTime set size2 [r dbsize] list $size1 $size2 } {3 0} diff --git a/tests/unit/type/zset.tcl b/tests/unit/type/zset.tcl index 806f4c88..effb7d60 100644 --- a/tests/unit/type/zset.tcl +++ b/tests/unit/type/zset.tcl @@ -558,7 +558,9 @@ start_server {tags {"zset"}} { assert_encoding $encoding zscoretest for {set i 0} {$i < $elements} {incr i} { - assert_equal [lindex $aux $i] [r zscore zscoretest $i] + set x [expr { double([lindex $aux $i]) } ] + set y [expr { double([r zscore zscoretest $i]) } ] + assert_equal $x $y } } @@ -574,7 +576,9 @@ start_server {tags {"zset"}} { r debug reload assert_encoding $encoding zscoretest for {set i 0} {$i < $elements} {incr i} { - assert_equal [lindex $aux $i] [r zscore zscoretest $i] + set x [expr { double([lindex $aux $i]) } ] + set y [expr { double([r zscore zscoretest $i]) } ] + assert_equal $x $y } }