mirror of
https://github.com/fluencelabs/redis
synced 2025-03-30 22:31:03 +00:00
Consistency test improved
This commit is contained in:
parent
f99e660b44
commit
dd3f505ff5
@ -224,3 +224,52 @@ proc formatCommand {args} {
|
|||||||
}
|
}
|
||||||
set _ $cmd
|
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
|
set _ $err
|
||||||
} {*invalid*}
|
} {*invalid*}
|
||||||
|
|
||||||
if {![catch {package require sha1}]} {
|
tags {consistency} {
|
||||||
test {Check consistency of different data types after a reload} {
|
if {![catch {package require sha1}]} {
|
||||||
r flushdb
|
test {Check consistency of different data types after a reload} {
|
||||||
createComplexDataset r 10000
|
r flushdb
|
||||||
set sha1 [r debug digest]
|
createComplexDataset r 10000
|
||||||
r debug reload
|
set dump [csvdump r]
|
||||||
set sha1_after [r debug digest]
|
set sha1 [r debug digest]
|
||||||
expr {$sha1 eq $sha1_after}
|
r debug reload
|
||||||
} {1}
|
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"
|
||||||
|
|
||||||
test {Same dataset digest if saving/reloading as AOF?} {
|
set fd [open /tmp/repldump1.txt w]
|
||||||
r bgrewriteaof
|
puts $fd $dump
|
||||||
waitForBgrewriteaof r
|
close $fd
|
||||||
r debug loadaof
|
set fd [open /tmp/repldump2.txt w]
|
||||||
set sha1_after [r debug digest]
|
puts $fd $newdump
|
||||||
expr {$sha1 eq $sha1_after}
|
close $fd
|
||||||
} {1}
|
|
||||||
|
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)} {
|
test {EXPIRES after a reload (snapshot + append only file)} {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user