Skip to content

Commit

Permalink
Added a new hash fuzzy tester.
Browse files Browse the repository at this point in the history
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
antirez committed Jun 12, 2012
1 parent 0b8441c commit 1364395
Showing 1 changed file with 38 additions and 1 deletion.
39 changes: 38 additions & 1 deletion tests/unit/type/hash.tcl
Expand Up @@ -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 {}
Expand All @@ -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} {
Expand Down

0 comments on commit 1364395

Please sign in to comment.