Cluster test: do leaks detection with OSX leaks utility.
This commit is contained in:
parent
190babe2df
commit
8b3aa734c9
@ -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}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user