X-Git-Url: https://git.saurik.com/redis.git/blobdiff_plain/d922ae6592228851d3a5b93ce9b3e22be31caddc..76b7233adb5c59b072209434d9a5ee795c5affa5:/test-redis.tcl diff --git a/test-redis.tcl b/test-redis.tcl index c5f15bfb..c0a025af 100644 --- a/test-redis.tcl +++ b/test-redis.tcl @@ -280,20 +280,46 @@ proc main {server port} { $r get foo } [string repeat "abcd" 1000000] + test {Very big payload random access} { + set err {} + array set payload {} + for {set j 0} {$j < 100} {incr j} { + set size [expr 1+[randomInt 100000]] + set buf [string repeat "pl-$j" $size] + set payload($j) $buf + $r set bigpayload_$j $buf + } + for {set j 0} {$j < 1000} {incr j} { + set index [randomInt 100] + set buf [$r get bigpayload_$index] + if {$buf != $payload($index)} { + set err "Values differ: I set '$payload($index)' but I read back '$buf'" + break + } + } + unset payload + set _ $err + } {} + test {SET 10000 numeric keys and access all them in reverse order} { + set err {} for {set x 0} {$x < 10000} {incr x} { $r set $x $x } set sum 0 for {set x 9999} {$x >= 0} {incr x -1} { - incr sum [$r get $x] + set val [$r get $x] + if {$val ne $x} { + set err "Eleemnt at position $x is $val instead of $x" + break + } } - format $sum - } {49995000} + set _ $err + } {} - test {DBSIZE should be 10001 now} { + test {DBSIZE should be 10101 now} { $r dbsize - } {10001} + } {10101} test {INCR against non existing key} { set res {} @@ -877,18 +903,23 @@ proc main {server port} { lsort [array names myset] } {a b c} - test {Create a random list} { + test {Create a random list and a random set} { set tosort {} array set seenrand {} for {set i 0} {$i < 10000} {incr i} { while 1 { # Make sure all the weights are different because # Redis does not use a stable sort but Tcl does. - set rint [expr int(rand()*1000000)] + randpath { + set rint [expr int(rand()*1000000)] + } { + set rint [expr rand()] + } if {![info exists seenrand($rint)]} break } set seenrand($rint) x $r lpush tosort $i + $r sadd tosort-set $i $r set weight_$i $rint lappend tosort [list $i $rint] } @@ -904,6 +935,15 @@ proc main {server port} { $r sort tosort {BY weight_*} } $res + test {the same SORT with BY, but against the newly created set} { + $r sort tosort-set {BY weight_*} + } $res + + test {SORT with BY and STORE against the newly created list} { + $r sort tosort {BY weight_*} store sort-res + $r lrange sort-res 0 -1 + } $res + test {SORT direct, numeric, against the newly created list} { $r sort tosort } [lsort -integer $res] @@ -1193,6 +1233,10 @@ proc main {server port} { [$r zrange ztmp 1 -1] [$r zrevrange ztmp 1 -1] } {{y x z} {z x y} {x z} {x y}} + test {ZRANGE WITHSCORES} { + $r zrange ztmp 0 -1 withscores + } {y 1 x 10 z 30} + test {ZSETs stress tester - sorting is working well?} { set delta 0 for {set test 0} {$test < 2} {incr test} { @@ -1518,6 +1562,9 @@ proc main {server port} { test {PIPELINING stresser (also a regression for the old epoll bug)} { set fd2 [socket 127.0.0.1 6379] fconfigure $fd2 -encoding binary -translation binary + puts -nonewline $fd2 "SELECT 9\r\n" + flush $fd2 + gets $fd2 for {set i 0} {$i < 100000} {incr i} { set q {} @@ -1541,6 +1588,18 @@ proc main {server port} { set _ 1 } {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}} + # Leave the user with a clean DB before to exit test {FLUSHDB} { set aux {}