Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ruanhaishen
redis
Commits
436f18b6
Commit
436f18b6
authored
Jun 02, 2010
by
Pieter Noordhuis
Browse files
catch exceptions in the server proc, to be able to kill the entire chain of running servers
parent
d55d5c5d
Changes
3
Hide whitespace changes
Inline
Side-by-side
tests/support/server.tcl
View file @
436f18b6
...
...
@@ -27,11 +27,13 @@ proc kill_server config {
set pid
[
dict get $config pid
]
# check for leaks
catch
{
if
{[
string match
{
*Darwin*
}
[
exec uname -a
]]}
{
test
"Check for memory leaks (pid
$pid
)"
{
exec leaks $pid
}
{
*0 leaks*
}
if
{
!
[
dict exists $config
"skipleaks"
]}
{
catch
{
if
{[
string match
{
*Darwin*
}
[
exec uname -a
]]}
{
test
"Check for memory leaks (pid
$pid
)"
{
exec leaks $pid
}
{
*0 leaks*
}
}
}
}
...
...
@@ -182,13 +184,27 @@ proc start_server {filename overrides {code undefined}} {
# pop the server object
set ::servers
[
lrange $::servers 0 end-1
]
kill_server $srv
if
{[
string length $err
]
> 0
}
{
# allow an exception to bubble up the call chain but still kill this
# server, because we want to reuse the ports when the tests are re-run
if
{
$err
eq
"exception"
}
{
puts
[
format
"Logged warnings (pid %d):"
[
dict get $srv
"pid"
]]
set warnings
[
warnings_from_file
[
dict get $srv
"stdout"
]]
if
{[
string length $warnings
]
> 0
}
{
puts
"
$warnings
"
}
else
{
puts
"(none)"
}
# kill this server without checking for leaks
dict set srv
"skipleaks"
1
kill_server $srv
error
"exception"
}
elseif
{[
string length $err
]
> 0
}
{
puts
"Error executing the suite, aborting..."
puts $err
exit 1
}
kill_server $srv
}
else
{
set _ $srv
}
...
...
tests/support/test.tcl
View file @
436f18b6
...
...
@@ -8,15 +8,9 @@ proc test {name code okpattern} {
puts -nonewline
[
format
"#%03d %-68s "
$::testnum $name
]
flush stdout
if
{[
catch
{
set retval
[
uplevel 1 $code
]}
error
]}
{
puts
"ERROR
\n\n
Logged warnings:"
foreach file
[
glob tests/tmp/server.
[
pid
]
.*/stdout
]
{
set warnings
[
warnings_from_file $file
]
if
{[
string length $warnings
]
> 0
}
{
puts $warnings
}
}
puts
"Script died with
$error
"
exit 1
puts
"EXCEPTION"
puts
"
\n
Caught error:
$error
"
error
"exception"
}
if
{
$okpattern
eq $retval ||
[
string match $okpattern $retval
]}
{
puts
"PASSED"
...
...
tests/test_helper.tcl
View file @
436f18b6
...
...
@@ -92,4 +92,12 @@ proc main {} {
cleanup
}
main
if
{[
catch
{
main
}
err
]}
{
if
{[
string length $err
]
> 0
}
{
# only display error when not generated by the test suite
if
{
$err
ne
"exception"
}
{
puts $err
}
exit 1
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment