Skip to content
Browse files

Added a new hash fuzzy tester.

The new fuzzy tester also removes elements from the hash instead of just
adding random fields. This should increase the probability to find bugs
in the implementations of the hash type internal representations.
  • Loading branch information...
1 parent ee789e1 commit 84d9ef4f3178a217eaf62c90b3fdbe240af975b4 @antirez antirez committed Jun 12, 2012
Showing with 38 additions and 1 deletion.
  1. +38 −1 tests/unit/type/hash.tcl
View
39 tests/unit/type/hash.tcl
@@ -397,7 +397,7 @@ start_server {tags {"hash"}} {
} {b}
foreach size {10 512} {
- test "Hash fuzzing - $size fields" {
+ test "Hash fuzzing #1 - $size fields" {
for {set times 0} {$times < 10} {incr times} {
catch {unset hash}
array set hash {}
@@ -418,6 +418,43 @@ start_server {tags {"hash"}} {
assert_equal [array size hash] [r hlen hash]
}
}
+
+ test "Hash fuzzing #2 - $size fields" {
+ for {set times 0} {$times < 10} {incr times} {
+ catch {unset hash}
+ array set hash {}
+ r del hash
+
+ # Create
+ for {set j 0} {$j < $size} {incr j} {
+ randpath {
+ set field [randomValue]
+ set value [randomValue]
+ r hset hash $field $value
+ set hash($field) $value
+ } {
+ set field [randomSignedInt 512]
+ set value [randomSignedInt 512]
+ r hset hash $field $value
+ set hash($field) $value
+ } {
+ randpath {
+ set field [randomValue]
+ } {
+ set field [randomSignedInt 512]
+ }
+ r hdel hash $field
+ unset -nocomplain hash($field)
+ }
+ }
+
+ # Verify
+ foreach {k v} [array get hash] {
+ assert_equal $v [r hget hash $k]
+ }
+ assert_equal [array size hash] [r hlen hash]
+ }
+ }
}
test {Stress test the hash ziplist -> hashtable encoding conversion} {

0 comments on commit 84d9ef4

Please sign in to comment.
Something went wrong with that request. Please try again.