12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- tags {"external:skip"} {
- 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]}
- }
- }
- }
- }
- }
|