]> git.saurik.com Git - redis.git/blobdiff - tests/support/util.tcl
Consistency test improved
[redis.git] / tests / support / util.tcl
index ae758f4cb3ff041745d81773335437e3038f3a73..26cf1dc177f24b0b3ca057697bbde8f1c874f8b4 100644 (file)
@@ -224,3 +224,52 @@ proc formatCommand {args} {
     }
     set _ $cmd
 }
+
+proc csvdump r {
+    set o {}
+    foreach k [lsort [$r keys *]] {
+        set type [$r type $k]
+        append o [csvstring $k] , [csvstring $type] ,
+        switch $type {
+            string {
+                append o [csvstring [$r get $k]] "\n"
+            }
+            list {
+                foreach e [$r lrange $k 0 -1] {
+                    append o [csvstring $e] ,
+                }
+                append o "\n"
+            }
+            set {
+                foreach e [lsort [$r smembers $k]] {
+                    append o [csvstring $e] ,
+                }
+                append o "\n"
+            }
+            zset {
+                foreach e [$r zrange $k 0 -1 withscores] {
+                    append o [csvstring $e] ,
+                }
+                append o "\n"
+            }
+            hash {
+                set fields [$r hgetall $k]
+                set newfields {}
+                foreach {k v} $fields {
+                    lappend newfields [list $k $v]
+                }
+                set fields [lsort -index 0 $newfields]
+                foreach kv $fields {
+                    append o [csvstring [lindex $kv 0]] ,
+                    append o [csvstring [lindex $kv 1]] ,
+                }
+                append o "\n"
+            }
+        }
+    }
+    return $o
+}
+
+proc csvstring s {
+    return "\"$s\""
+}