]> git.saurik.com Git - redis.git/blobdiff - test-redis.tcl
lookup rank of a zset entry in a different function
[redis.git] / test-redis.tcl
index 0db430d4e82f4a2ed30c83afa15ce77bf1b4b94a..0fc1e7dfc9b871447e125803c8fb07503ac8d79c 100644 (file)
@@ -178,7 +178,7 @@ proc createComplexDataset {r ops} {
 }
 
 proc datasetDigest r {
-    set keys [lsort [split [$r keys *] " "]]
+    set keys [lsort [$r keys *]]
     set digest {}
     foreach k $keys {
         set t [$r type $k]
@@ -204,7 +204,7 @@ proc datasetDigest r {
                     set aux [::sha1::sha1 -hex [$r zrange $k 0 -1]]
                 }
             } default {
-                error "Type not supported"
+                error "Type not supported: $t"
             }
         }
         if {$aux eq {}} continue
@@ -1192,6 +1192,18 @@ proc main {server port} {
         $r zcard ztmp-blabla
     } {0}
 
+    test {ZRANK basics} {
+        $r zadd zranktmp 10 x
+        $r zadd zranktmp 20 y
+        $r zadd zranktmp 30 z
+        list [$r zrank zranktmp x] [$r zrank zranktmp y] [$r zrank zranktmp z]
+    } {0 1 2}
+
+    test {ZRANK - after deletion} {
+        $r zrem zranktmp y
+        list [$r zrank zranktmp x] [$r zrank zranktmp z]
+    } {0 1}
+
     test {ZSCORE} {
         set aux {}
         set err {}
@@ -1516,6 +1528,31 @@ proc main {server port} {
         format $diff
     } {0}
 
+    test {ZSETs ZRANK augmented skip list stress testing} {
+        set err {}
+        $r del myzset
+        for {set k 0} {$k < 10000} {incr k} {
+            set i [expr {$k%1000}]
+            if {[expr rand()] < .2} {
+                $r zrem myzset $i
+            } else {
+                set score [expr rand()]
+                $r zadd myzset $score $i
+            }
+            set card [$r zcard myzset]
+            if {$card > 0} {
+                set index [randomInt $card]
+                set ele [lindex [$r zrange myzset $index $index] 0]
+                set rank [$r zrank myzset $ele]
+                if {$rank != $index} {
+                    set err "$ele RANK is wrong! ($rank != $index)"
+                    break
+                }
+            }
+        }
+        set _ $err
+    } {}
+
     foreach fuzztype {binary alpha compr} {
         test "FUZZ stresser with data model $fuzztype" {
             set err 0
@@ -1533,6 +1570,7 @@ proc main {server port} {
     }
 
     test {BGSAVE} {
+        waitForBgsave $r
         $r flushdb
         $r save
         $r set x 10
@@ -1662,6 +1700,18 @@ proc main {server port} {
         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 {APPEND basics} {
         list [$r append foo bar] [$r get foo] \
              [$r append foo 100] [$r get foo]