mirror of https://github.com/F-Stack/f-stack.git
52 lines
1.7 KiB
Tcl
52 lines
1.7 KiB
Tcl
set system_name [string tolower [exec uname -s]]
|
|
set system_supported 0
|
|
|
|
# We only support darwin or Linux with glibc
|
|
if {$system_name eq {darwin}} {
|
|
set system_supported 1
|
|
} elseif {$system_name eq {linux}} {
|
|
# Avoid the test on libmusl, which does not support backtrace
|
|
set ldd [exec ldd src/redis-server]
|
|
if {![string match {*libc.musl*} $ldd]} {
|
|
set system_supported 1
|
|
}
|
|
}
|
|
|
|
if {$system_supported} {
|
|
set server_path [tmpdir server.log]
|
|
start_server [list overrides [list dir $server_path]] {
|
|
test "Server is able to generate a stack trace on selected systems" {
|
|
r config set watchdog-period 200
|
|
r debug sleep 1
|
|
set pattern "*debugCommand*"
|
|
set retry 10
|
|
while {$retry} {
|
|
set result [exec tail -100 < [srv 0 stdout]]
|
|
if {[string match $pattern $result]} {
|
|
break
|
|
}
|
|
incr retry -1
|
|
after 1000
|
|
}
|
|
if {$retry == 0} {
|
|
error "assertion:expected stack trace not found into log file"
|
|
}
|
|
}
|
|
}
|
|
|
|
# Valgrind will complain that the process terminated by a signal, skip it.
|
|
if {!$::valgrind} {
|
|
set server_path [tmpdir server1.log]
|
|
start_server [list overrides [list dir $server_path]] {
|
|
test "Crash report generated on SIGABRT" {
|
|
set pid [s process_id]
|
|
exec kill -SIGABRT $pid
|
|
set pattern "*STACK TRACE*"
|
|
set result [exec tail -1000 < [srv 0 stdout]]
|
|
assert {[string match $pattern $result]}
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|