Process core dump from named which failed to start

When named failed to start and produced core dump, the core file wasn't
processed by GDB because of run.sh script exiting immediately. This
remedies the limitation, simplifies the surrounding code, and makes the
script shellcheck clean.
This commit is contained in:
Michal Nowak
2021-05-04 12:58:23 +02:00
parent 4339831e54
commit bc097d3358

View File

@@ -115,20 +115,14 @@ eval "$(cd "${srcdir}" && ./get_ports.sh -p "$baseport" -t "$systest")"
restart=false
start_servers_failed() {
echoinfo "I:$systest:starting servers failed"
echofail "R:$systest:FAIL"
echoend "E:$systest:$(date_with_args)"
exit 1
}
start_servers() {
echoinfo "I:$systest:starting servers"
if $restart; then
$PERL start.pl --restart --port "$PORT" "$systest" || start_servers_failed
else
restart=true
$PERL start.pl --port "$PORT" "$systest" || start_servers_failed
restart_opt="--restart"
fi
if ! $PERL start.pl ${restart_opt} --port "$PORT" "$systest"; then
echoinfo "I:$systest:starting servers failed"
return 1
fi
}
@@ -205,29 +199,38 @@ status=0
run=0
# Run the tests
if [ -r "$systest/tests.sh" ]; then
start_servers
( cd "$systest" && $SHELL tests.sh "$@" )
status=$?
run=$((run+1))
stop_servers || status=1
if start_servers; then
( cd "$systest" && $SHELL tests.sh "$@" )
status=$?
run=$((run+1))
stop_servers || status=1
else
status=1
fi
fi
if [ -n "$PYTEST" ]; then
run=$((run+1))
for test in $(cd "${systest}" && find . -name "tests*.py"); do
start_servers
rm -f "$systest/$test.status"
test_status=0
(cd "$systest" && "$PYTEST" -v "$test" "$@" || echo "$?" > "$test.status") | SYSTESTDIR="$systest" cat_d
if [ -f "$systest/$test.status" ]; then
echo_i "FAILED"
test_status=$(cat "$systest/$test.status")
fi
status=$((status+test_status))
stop_servers || status=1
done
else
echoinfo "I:$systest:pytest not installed, skipping python tests"
if [ $status -eq 0 ]; then
if [ -n "$PYTEST" ]; then
run=$((run+1))
for test in $(cd "${systest}" && find . -name "tests*.py"); do
if start_servers; then
rm -f "$systest/$test.status"
test_status=0
(cd "$systest" && "$PYTEST" -v "$test" "$@" || echo "$?" > "$test.status") | SYSTESTDIR="$systest" cat_d
if [ -f "$systest/$test.status" ]; then
echo_i "FAILED"
test_status=$(cat "$systest/$test.status")
fi
status=$((status+test_status))
stop_servers || status=1
else
status=1
break
fi
done
else
echoinfo "I:$systest:pytest not installed, skipping python tests"
fi
fi
if [ "$run" -eq "0" ]; then
@@ -291,9 +294,9 @@ fi
print_outstanding_files() {
if test -d ${srcdir}/../../../.git; then
git status -su --ignored "${systest}/" 2>/dev/null | \
sed -n -e 's|^?? \(.*\)|I:'${systest}':file \1 not removed|p' \
-e 's|^!! \(.*/named.run\)$|I:'${systest}':file \1 not removed|p' \
-e 's|^!! \(.*/named.memstats\)$|I:'${systest}':file \1 not removed|p'
sed -n -e 's|^?? \(.*\)|I:'"${systest}"':file \1 not removed|p' \
-e 's|^!! \(.*/named.run\)$|I:'"${systest}"':file \1 not removed|p' \
-e 's|^!! \(.*/named.memstats\)$|I:'"${systest}"':file \1 not removed|p'
fi
}