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.
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]
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} \
}
}
}
+
+ 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}}
+ }
+ }
}