list [$r lrange mylist 0 -1] [$r type newlist] [string range $err 0 2]
} {{a b c d} string ERR}
+ test {RPOPLPUSH against non existing src key} {
+ $r del mylist
+ $r del newlist
+ $r rpoplpush mylist newlist
+ } {}
+
test {RENAME basic usage} {
$r set mykey hello
$r rename mykey mykey1
$r lrange mylist 0 -1
} {99 98 97 96 95}
+ test {LTRIM stress testing} {
+ set mylist {}
+ set err {}
+ for {set i 0} {$i < 20} {incr i} {
+ lappend mylist $i
+ }
+
+ for {set j 0} {$j < 100} {incr j} {
+ # Fill the list
+ $r del mylist
+ for {set i 0} {$i < 20} {incr i} {
+ $r rpush mylist $i
+ }
+ # Trim at random
+ set a [randomInt 20]
+ set b [randomInt 20]
+ $r ltrim mylist $a $b
+ if {[$r lrange mylist 0 -1] ne [lrange $mylist $a $b]} {
+ set err "[$r lrange mylist 0 -1] != [lrange $mylist $a $b]"
+ break
+ }
+ }
+ set _ $err
+ } {}
+
test {LSET} {
+ $r del mylist
+ foreach x {99 98 97 96 95} {
+ $r rpush mylist $x
+ }
$r lset mylist 1 foo
$r lset mylist -1 bar
$r lrange mylist 0 -1
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]
}
$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]
$r sort mylist BY weight_* GET #
} {2 1 3}
+ test {SORT with constant GET} {
+ $r sort mylist GET foo
+ } {{} {} {}}
+
test {LREM, remove all the occurrences} {
$r flushdb
$r rpush mylist foo
set _ $err
} {}
- test {ZRANGE and ZREVRANGE} {
- list [$r zrange ztmp 0 -1] [$r zrevrange ztmp 0 -1]
- } {{y x z} {z x y}}
+ test {ZRANGE and ZREVRANGE basics} {
+ list [$r zrange ztmp 0 -1] [$r zrevrange ztmp 0 -1] \
+ [$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
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 {}
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 {}