Commit 8497162e authored by Per Cederqvist's avatar Per Cederqvist
Browse files

(l2g_start): Pass a log file name to the valgrind wrapper.

(dbck_run): Ditto.
(spawn_lyskomd): New argument: log file name.  All callers
	updated.  Use the lyskomd.supp valgrind suppressions file.
	Pass --show-reachable=yes and a log file name to valgrind.
(check_valgrind): New arguments: logfile, need_leaks and need_errs.
	All callers updated.
parent 3bd34432
......@@ -93,7 +93,7 @@ proc l2g_start {} {
global valgrind
if {$valgrind != ""} {
spawn ./valgrind.wrap --num-callers=40 --leak-check=yes --logfile-fd=25 $l2g
spawn ./valgrind.wrap valgrind-l2g.log --suppressions=lyskomd.supp --num-callers=40 --leak-check=yes --logfile-fd=25 --show-reachable=yes $l2g
} else {
spawn $l2g
}
......@@ -134,7 +134,7 @@ proc l2g_stop {} {
simple_expect "test-l2g quitting"
wait
close
check_valgrind {}
check_valgrind valgrind-l2g.log 1 1 {}
}
proc l2g_send {str} {
......@@ -319,17 +319,20 @@ proc unanchored_expect {regex testname} {
unset test
}
proc spawn_lyskomd {arg} {
proc spawn_lyskomd {logfile arg} {
global valgrind
global spawn_id
set cmd "spawn"
if {$valgrind != ""} {
set cmd "$cmd ./valgrind.wrap"
set cmd "$cmd $logfile"
# set cmd "$cmd -v"
set cmd "$cmd --num-callers=40"
set cmd "$cmd --suppressions=lyskomd.supp"
set cmd "$cmd --leak-check=yes"
set cmd "$cmd --logfile-fd=25"
set cmd "$cmd --show-reachable=yes"
}
set cmd "$cmd ../lyskomd"
if { $arg == "" } {
......@@ -395,7 +398,7 @@ proc lyskomd_start {{aux_item_conf_file ""} \
puts $cf $extra_config
close $cf
set pid [spawn_lyskomd $args]
set pid [spawn_lyskomd valgrind-lyskomd.log $args]
set lyskomd_pid $pid
set server_id $spawn_id
......@@ -495,7 +498,7 @@ proc lyskomd_fail_start {{aux_item_conf_file "" }
puts $cf $extra_config
close $cf
set pid [spawn_lyskomd $args]
set pid [spawn_lyskomd valgrind-lyskomdfail.log $args]
set lyskomd_pid $pid
set server_id $spawn_id
......@@ -529,7 +532,7 @@ proc lyskomd_fail_start {{aux_item_conf_file "" }
timeout { fail "$test (timeout)" }
eof { pass "$test"; wait }
}
check_valgrind {}
check_valgrind valgrind-lyskomdfail.log 0 0 {}
}
proc check_memory_usage {} {
......@@ -570,7 +573,7 @@ proc parse_valgrind_leak {f} {
return 998
}
proc check_valgrind {expected_leaks} {
proc check_valgrind {logfile need_leaks need_errs expected_leaks} {
# The "expected_leaks" argument should be a such as:
#
# {"Bug 99 & Bug 93" 4 3 9}
......@@ -590,13 +593,23 @@ proc check_valgrind {expected_leaks} {
set memfound 0
set errcount 0
set leakcount 0
set tracefile "valgrind.log"
set f [open $tracefile]
# Rename the file. $saved holds the new name.
while {[file exists "valgrind-$valgrindix.log"]} {
set valgrindix [expr $valgrindix + 1]
}
set saved "valgrind-$valgrindix.log"
system "mv $logfile $saved"
# Should the log file be kept?
set keep 0
set f [open $saved]
while {[gets $f line] >= 0} {
if {[regexp "ERROR SUMMARY: (\[0-9\]*) errors" $line match errs]} {
if {$errfound} {
fail "check_valgrind logic error"
fail "check_valgrind logic error due to $saved"
set keep 1
} else {
set errfound 1
set errcount $errs
......@@ -638,38 +651,36 @@ proc check_valgrind {expected_leaks} {
}
}
close $f
if {$errfound == 0} {
fail "no error summary in valgrind output"
if {$errfound == 0 && $need_errs == 1} {
fail "no error summary in valgrind output $saved"
set keep 1
}
if {$memfound == 0} {
fail "no malloc summary in valgrind output"
if {$memfound == 0 && $need_leaks == 1} {
fail "no malloc summary in valgrind output $saved"
set keep 1
}
if {$errcount + $leakcount > 0} {
while {[file exists "valgrind-$valgrindix.log"]} {
set valgrindix [expr $valgrindix + 1]
}
set saved "valgrind-$valgrindix.log"
system "mv $tracefile $saved"
}
if {$errcount == 0} {
pass "valgrind found no errors"
} else {
fail "valgrind found $errcount error(s). See $saved."
set keep 1
}
if {$leakcount == 0} {
pass "valgrind found no leaks"
} else {
if {$definite} {
fail "valgrind found $definite definite leaks. See $saved."
set keep 1
}
if {$possible} {
fail "valgrind found $possible possible leaks. See $saved."
set keep 1
}
if {$reachable} {
fail "valgrind found $reachable reachable blocks. See $saved."
set keep 1
}
}
}
......@@ -692,7 +703,7 @@ proc lyskomd_death {{expected_leaks {}}} {
}
system "cat etc/memory-usage >> usage.all"
check_memory_usage
check_valgrind $expected_leaks
check_valgrind valgrind-lyskomd.log 1 1 $expected_leaks
dbck_run
}
......@@ -704,7 +715,7 @@ proc dbck_run {} {
global valgrind
if {$valgrind != ""} {
spawn ./valgrind.wrap --num-callers=40 --leak-check=yes --logfile-fd=25 ../dbck -d config/lyskomd-config
spawn ./valgrind.wrap valgrind-dbck.log --suppressions=lyskomd.supp --num-callers=40 --logfile-fd=25 --show-reachable=yes ../dbck -d config/lyskomd-config
} else {
spawn ../dbck -d config/lyskomd-config
}
......@@ -742,7 +753,7 @@ proc dbck_run {} {
eof { pass "$test"; wait }
}
unset test
check_valgrind {}
check_valgrind valgrind-dbck.log 0 1 {}
}
proc client_start {nr} {
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment