Cluster test: do leaks detection with OSX leaks utility.

This commit is contained in:
antirez 2016-01-02 13:14:23 +01:00
parent 190babe2df
commit 8b3aa734c9

View File

@ -249,6 +249,37 @@ proc test {descr code} {
}
}
# Check memory leaks when running on OSX using the "leaks" utility.
proc check_leaks instance_types {
if {[string match {*Darwin*} [exec uname -a]]} {
puts -nonewline "Testing for memory leaks..."; flush stdout
foreach type $instance_types {
foreach_instance_id [set ::${type}_instances] id {
if {[instance_is_killed $type $id]} continue
set pid [get_instance_attrib $type $id pid]
set output {0 leaks}
catch {exec leaks $pid} output
if {[string match {*process does not exist*} $output] ||
[string match {*cannot examine*} $output]} {
# In a few tests we kill the server process.
set output "0 leaks"
} else {
puts -nonewline "$type/$pid "
flush stdout
}
if {![string match {*0 leaks*} $output]} {
puts [colorstr red "=== MEMORY LEAK DETECTED ==="]
puts "Instance type $type, ID $id:"
puts $output
puts "==="
incr ::failed
}
}
}
puts ""
}
}
# Execute all the units inside the 'tests' directory.
proc run_tests {} {
set tests [lsort [glob ../tests/*]]
@ -259,6 +290,7 @@ proc run_tests {} {
if {[file isdirectory $test]} continue
puts [colorstr yellow "Testing unit: [lindex [file split $test] end]"]
source $test
check_leaks {redis sentinel}
}
}