}
}
}
-
-proc datasetDigest r {
- set keys [lsort [$r keys *]]
- set digest {}
- foreach k $keys {
- set t [$r type $k]
- switch $t {
- {string} {
- set aux [::sha1::sha1 -hex [$r get $k]]
- } {list} {
- if {[$r llen $k] == 0} {
- set aux {}
- } else {
- set aux [::sha1::sha1 -hex [$r lrange $k 0 -1]]
- }
- } {set} {
- if {[$r scard $k] == 0} {
- set aux {}
- } else {
- set aux [::sha1::sha1 -hex [lsort [$r smembers $k]]]
- }
- } {zset} {
- if {[$r zcard $k] == 0} {
- set aux {}
- } else {
- set aux [::sha1::sha1 -hex [$r zrange $k 0 -1 withscores]]
- }
- } {hash} {
- if {[$r hlen $k] == 0} {
- set aux {}
- } else {
- set aux [::sha1::sha1 -hex [lsort [$r hgetall $k]]]
- }
- } default {
- error "Type not supported: $t"
- }
- }
- if {$aux eq {}} continue
- set digest [::sha1::sha1 -hex [join [list $aux $digest $k] "\n"]]
- }
- return $digest
-}
test {Check consistency of different data types after a reload} {
r flushdb
createComplexDataset r 10000
- set sha1 [datasetDigest r]
+ set sha1 [r debug digest]
r debug reload
- set sha1_after [datasetDigest r]
+ set sha1_after [r debug digest]
expr {$sha1 eq $sha1_after}
} {1}
r bgrewriteaof
waitForBgrewriteaof r
r debug loadaof
- set sha1_after [datasetDigest r]
+ set sha1_after [r debug digest]
expr {$sha1 eq $sha1_after}
} {1}
}