提交 c0de4592 编写于 作者: A antirez

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.
上级 80e808b6
......@@ -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} \
......
......@@ -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}}
}
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册