New test: hash ziplist -> hashtable encoding conversion.

A new stress test was added to stress test the code converting a ziplist
into an hash table.

In this commit also randomValue helper function was modified to also
return negative values.
This commit is contained in:
antirez 2012-06-11 15:19:46 +02:00
parent 80e808b6d6
commit c0de45924c
2 changed files with 22 additions and 3 deletions

View File

@ -95,6 +95,14 @@ proc randomInt {max} {
expr {int(rand()*$max)}
}
proc randomSignedInt {max} {
set i [randomInt $max]
if {rand() > 0.5} {
set i -$i
}
return $i
}
proc randpath args {
set path [expr {int(rand()*[llength $args])}]
uplevel 1 [lindex $args $path]
@ -103,13 +111,13 @@ proc randpath args {
proc randomValue {} {
randpath {
# Small enough to likely collide
randomInt 1000
randomSignedInt 1000
} {
# 32 bit compressible signed/unsigned
randpath {randomInt 2000000000} {randomInt 4000000000}
randpath {randomSignedInt 2000000000} {randomSignedInt 4000000000}
} {
# 64 bit
randpath {randomInt 1000000000000}
randpath {randomSignedInt 1000000000000}
} {
# Random string
randpath {randstring 0 256 alpha} \

View File

@ -419,4 +419,15 @@ start_server {tags {"hash"}} {
}
}
}
test {Stress test the hash ziplist -> hashtable encoding conversion} {
r config set hash-max-ziplist-entries 32
for {set j 0} {$j < 100} {incr j} {
r del myhash
for {set i 0} {$i < 64} {incr i} {
r hset myhash [randomValue] [randomValue]
}
assert {[r object encoding myhash] eq {hashtable}}
}
}
}