提交 dd3f505f 编写于 作者: A antirez

Consistency test improved

上级 f99e660b
......@@ -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\""
}
......@@ -46,23 +46,57 @@ start_server {} {
set _ $err
} {*invalid*}
if {![catch {package require sha1}]} {
test {Check consistency of different data types after a reload} {
r flushdb
createComplexDataset r 10000
set sha1 [r debug digest]
r debug reload
set sha1_after [r debug digest]
expr {$sha1 eq $sha1_after}
} {1}
test {Same dataset digest if saving/reloading as AOF?} {
r bgrewriteaof
waitForBgrewriteaof r
r debug loadaof
set sha1_after [r debug digest]
expr {$sha1 eq $sha1_after}
} {1}
tags {consistency} {
if {![catch {package require sha1}]} {
test {Check consistency of different data types after a reload} {
r flushdb
createComplexDataset r 10000
set dump [csvdump r]
set sha1 [r debug digest]
r debug reload
r set baubau x
set sha1_after [r debug digest]
if {$sha1 eq $sha1_after} {
set _ 1
} else {
set newdump [csvdump r]
puts "Consistency test failed!"
puts "You can inspect the two dumps in /tmp/repldump*.txt"
set fd [open /tmp/repldump1.txt w]
puts $fd $dump
close $fd
set fd [open /tmp/repldump2.txt w]
puts $fd $newdump
close $fd
set _ 0
}
} {1}
test {Same dataset digest if saving/reloading as AOF?} {
r bgrewriteaof
waitForBgrewriteaof r
r debug loadaof
set sha1_after [r debug digest]
if {$sha1 eq $sha1_after} {
set _ 1
} else {
set newdump [csvdump r]
puts "Consistency test failed!"
puts "You can inspect the two dumps in /tmp/aofdump*.txt"
set fd [open /tmp/aofdump1.txt w]
puts $fd $dump
close $fd
set fd [open /tmp/aofdump2.txt w]
puts $fd $newdump
close $fd
set _ 0
}
} {1}
}
}
test {EXPIRES after a reload (snapshot + append only file)} {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册