Skip to content

Commit

Permalink
corrupt-dump-fuzzer test, avoid creating junk keys (#9302)
Browse files Browse the repository at this point in the history
The execution of the RPOPLPUSH command by the fuzzer created junk keys,
that were later being selected by RANDOMKEY and modified.
This also meant that lists were statistically tested more than other
files.

Fix the fuzzer not to pass junk key names to RPOPLPUSH, and add a check
that detects that new keys are not added by the fuzzer to detect future
similar issues.

(cherry picked from commit 3f3f678)
  • Loading branch information
oranagra committed Oct 4, 2021
1 parent 7540708 commit aba9517
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 1 deletion.
7 changes: 7 additions & 0 deletions tests/integration/corrupt-dump-fuzzer.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,7 @@ foreach sanitize_dump {no yes} {
r debug set-skip-checksum-validation 1
set start_time [clock seconds]
generate_types
set dbsize [r dbsize]
r save
set cycle 0
set stat_terminated_in_restore 0
Expand Down Expand Up @@ -133,6 +134,12 @@ foreach sanitize_dump {no yes} {
set sent [generate_fuzzy_traffic_on_key "_$k" 1] ;# traffic for 1 second
incr stat_traffic_commands_sent [llength $sent]
r del "_$k" ;# in case the server terminated, here's where we'll detect it.
if {$dbsize != [r dbsize]} {
puts "unexpected keys"
puts "keys: [r keys *]"
puts $sent
exit 1
}
} err ] } {
# if the server terminated update stats and restart it
set report_and_restart true
Expand Down
3 changes: 2 additions & 1 deletion tests/support/util.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -608,6 +608,7 @@ proc generate_fuzzy_traffic_on_key {key duration} {
set arity [lindex $cmd_info 1]
set arity [expr $arity < 0 ? - $arity: $arity]
set firstkey [lindex $cmd_info 3]
set lastkey [lindex $cmd_info 4]
set i 1
if {$cmd == "XINFO"} {
lappend cmd "STREAM"
Expand Down Expand Up @@ -637,7 +638,7 @@ proc generate_fuzzy_traffic_on_key {key duration} {
incr i 4
}
for {} {$i < $arity} {incr i} {
if {$i == $firstkey} {
if {$i == $firstkey || $i == $lastkey} {
lappend cmd $key
} else {
lappend cmd [randomValue]
Expand Down

0 comments on commit aba9517

Please sign in to comment.