3 # Copyright (C) 2021 - Jonathan Rajotte <jonathan.rajotte-julien@efficios.com>
5 # This program is free software: you can redistribute it and/or modify
6 # it under the terms of the GNU General Public License as published by
7 # the Free Software Foundation, either version 3 of the License, or
8 # (at your option) any later version.
10 # This program is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 # GNU General Public License for more details.
15 # You should have received a copy of the GNU General Public License
16 # along with this program. If not, see <http://www.gnu.org/licenses/>.
18 # Version compare functions
21 if [[ "$1" == "$2" ]]; then
25 local i ver1
=($1) ver2
=($2)
26 # fill empty fields in ver1 with zeros
27 for ((i
=${#ver1[@]}; i
<${#ver2[@]}; i
++)); do
30 for ((i
=0; i
<${#ver1[@]}; i
++)); do
31 if [[ -z ${ver2[i]} ]]; then
32 # fill empty fields in ver2 with zeros
35 if ((10#${ver1[i]} > 10#${ver2[i]})); then
38 if ((10#${ver1[i]} < 10#${ver2[i]})); then
47 vercomp
"$1" "$2"; local res
="$?"
48 [ "$res" -eq "0" ] ||
[ "$res" -eq "2" ]
52 vercomp
"$1" "$2"; local res
="$?"
57 vercomp
"$1" "$2"; local res
="$?"
58 [ "$res" -eq "0" ] ||
[ "$res" -eq "1" ]
62 vercomp
"$1" "$2"; local res
="$?"
67 vercomp
"$1" "$2"; local res
="$?"
71 # shellcheck disable=SC2317
74 timedatectl set-ntp true
75 # The false dates used in the tests are far in the past
76 # and it may take some time for the ntp update to actually
78 # If the date is still in the past, it is possible that
79 # subsequent steps will fail (eg. TLS certificates cannot
81 while [[ "$(date +%Y)" -lt "2024" ]] ; do
89 local TIMEOUT_MINUTES
="${1:-90}"
96 if ! ps
-q "${PID}" > /dev
/null
; then
97 # The process ID doesn't exist anymore
100 TIMEOUT
=$
((TIMEOUT
+1))
101 if [[ "${TIMEOUT}" -ge "${TIMEOUT_MINUTES}" ]]; then
102 echo "Command '${@}' timed out (${TIMEOUT} minutes) " \
103 "attempting to get backtraces for lttng/babeltrace binaries"
104 apt-get
install -y --force-yes gdb
105 # Abort all lttng-sessiond, lttng, lttng-relayd, lttng-consumerd,
106 # and babeltrace process so there are coredumps available.
107 PIDS
=$
(pgrep
'babeltrace*|[l]ttng*')
109 OUTFILE
=$
(mktemp
-t "backtrace-${P}.XXXXXX")
110 ps
-f "${P}" |
tee -a "${OUTFILE}"
111 gdb
-p "${P}" --batch -ex 'thread apply all bt' 2>&1 |
tee -a "${OUTFILE}"
112 mv "${OUTFILE}" /tmp
/coredump
/
115 # Send sigterm to make
118 # Cleanup, to hopefully not interfere with future tests
120 apt-get autoremove
-y
127 trap cleanup EXIT SIGINT SIGTERM
132 export LTTNG_ENABLE_DESTRUCTIVE_TESTS
="will-break-my-system"
133 timedatectl set-ntp false
135 # When make check is interrupted, the default test driver
136 # (`config/test-driver`) will still delete the log and trs
137 # files for the currently running test.
138 test_timeout
90 make --keep-going check || failed_tests
=1
140 if [ -f "./tests/root_regression" ]; then
141 cd "./tests" ||
exit 1
142 prove
--nocolor --verbose --merge --exec '' - < root_regression || failed_tests
=2
146 # This script doesn't exist in master anymore, but compatibility with old branches
147 # should be retained until lttng-tools 2.13 is no longer supported
148 if [ -f "./tests/root_destructive_tests" ]; then
149 cd "./tests" ||
exit 1
150 prove
--nocolor --verbose --merge --exec '' - < root_destructive_tests || failed_tests
=3
153 echo 'root_destructive_tests not found'
156 if [[ "${failed_tests}" != "0" ]] ; then
157 find tests
/ -iname '*.trs' -print0 -or -iname '*.log' -print0 |
tar czf
/tmp
/coredump
/logs.tgz
--null -T -