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
Show whitespace changes
Inline
Side-by-side
tests/support/server.tcl
View file @
436f18b6
...
@@ -27,6 +27,7 @@ proc kill_server config {
...
@@ -27,6 +27,7 @@ proc kill_server config {
set pid
[
dict get $config pid
]
set pid
[
dict get $config pid
]
# check for leaks
# check for leaks
if
{
!
[
dict exists $config
"skipleaks"
]}
{
catch
{
catch
{
if
{[
string match
{
*Darwin*
}
[
exec uname -a
]]}
{
if
{[
string match
{
*Darwin*
}
[
exec uname -a
]]}
{
test
"Check for memory leaks (pid
$pid
)"
{
test
"Check for memory leaks (pid
$pid
)"
{
...
@@ -34,6 +35,7 @@ proc kill_server config {
...
@@ -34,6 +35,7 @@ proc kill_server config {
}
{
*0 leaks*
}
}
{
*0 leaks*
}
}
}
}
}
}
# kill server and wait for the process to be totally exited
# kill server and wait for the process to be totally exited
while
{[
is_alive $config
]}
{
while
{[
is_alive $config
]}
{
...
@@ -182,13 +184,27 @@ proc start_server {filename overrides {code undefined}} {
...
@@ -182,13 +184,27 @@ proc start_server {filename overrides {code undefined}} {
# pop the server object
# pop the server object
set ::servers
[
lrange $::servers 0 end-1
]
set ::servers
[
lrange $::servers 0 end-1
]
# 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
kill_server $srv
error
"exception"
if
{[
string length $err
]
> 0
}
{
}
else
if
{[
string length $err
]
> 0
}
{
puts
"Error executing the suite, aborting..."
puts
"Error executing the suite, aborting..."
puts $err
puts $err
exit 1
exit 1
}
}
kill_server $srv
}
else
{
}
else
{
set _ $srv
set _ $srv
}
}
...
...
tests/support/test.tcl
View file @
436f18b6
...
@@ -8,15 +8,9 @@ proc test {name code okpattern} {
...
@@ -8,15 +8,9 @@ proc test {name code okpattern} {
puts -nonewline
[
format
"#%03d %-68s "
$::testnum $name
]
puts -nonewline
[
format
"#%03d %-68s "
$::testnum $name
]
flush stdout
flush stdout
if
{[
catch
{
set retval
[
uplevel 1 $code
]}
error
]}
{
if
{[
catch
{
set retval
[
uplevel 1 $code
]}
error
]}
{
puts
"ERROR
\n\n
Logged warnings:"
puts
"EXCEPTION"
foreach file
[
glob tests/tmp/server.
[
pid
]
.*/stdout
]
{
puts
"
\n
Caught error:
$error
"
set warnings
[
warnings_from_file $file
]
error
"exception"
if
{[
string length $warnings
]
> 0
}
{
puts $warnings
}
}
puts
"Script died with
$error
"
exit 1
}
}
if
{
$okpattern
eq $retval ||
[
string match $okpattern $retval
]}
{
if
{
$okpattern
eq $retval ||
[
string match $okpattern $retval
]}
{
puts
"PASSED"
puts
"PASSED"
...
...
tests/test_helper.tcl
View file @
436f18b6
...
@@ -92,4 +92,12 @@ proc main {} {
...
@@ -92,4 +92,12 @@ proc main {} {
cleanup
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