Merge branch 'mnowak/process-core-dumps-when-named-fails-to-start' into 'main'
Process core dump from named which failed to start See merge request isc-projects/bind9!4987
This commit is contained in:
@@ -43,8 +43,9 @@ else
|
||||
fi
|
||||
|
||||
do_run=false
|
||||
restart=false
|
||||
log_flags="-r"
|
||||
while getopts "sknp:r-:" OPT; do
|
||||
while getopts "sknp:r-:t" OPT; do
|
||||
log_flags="$log_flags -$OPT$OPTARG"
|
||||
if [ "$OPT" = "-" ] && [ -n "$OPTARG" ]; then
|
||||
OPT="${OPTARG%%=*}"
|
||||
@@ -59,6 +60,7 @@ while getopts "sknp:r-:" OPT; do
|
||||
p | port) baseport=$OPTARG ;;
|
||||
r | run) do_run=true ;;
|
||||
s | skip) exit 77 ;;
|
||||
t | restart) restart=true ;;
|
||||
-) break ;;
|
||||
*) echo "invalid option" >&2; exit 1 ;;
|
||||
esac
|
||||
@@ -113,22 +115,14 @@ fi
|
||||
# Determine which ports to use for this system test.
|
||||
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
|
||||
}
|
||||
|
||||
@@ -179,14 +173,16 @@ else
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Clean up files left from any potential previous runs
|
||||
if test -f "$systest/clean.sh"
|
||||
then
|
||||
if ! ( cd "${systest}" && $SHELL clean.sh "$@" ); then
|
||||
echowarn "I:$systest:clean.sh script failed"
|
||||
echofail "R:$systest:FAIL"
|
||||
echoend "E:$systest:$(date_with_args)"
|
||||
exit 1
|
||||
# Clean up files left from any potential previous runs except when
|
||||
# started with the --restart option.
|
||||
if ! $restart; then
|
||||
if test -f "$systest/clean.sh"; then
|
||||
if ! ( cd "${systest}" && $SHELL clean.sh "$@" ); then
|
||||
echowarn "I:$systest:clean.sh script failed"
|
||||
echofail "R:$systest:FAIL"
|
||||
echoend "E:$systest:$(date_with_args)"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -205,29 +201,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 +296,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
|
||||
}
|
||||
|
||||
@@ -310,7 +315,7 @@ if [ $status -ne 0 ]; then
|
||||
echofail "R:$systest:FAIL"
|
||||
else
|
||||
echopass "R:$systest:PASS"
|
||||
if $clean; then
|
||||
if $clean && ! $restart; then
|
||||
( cd "${systest}" && $SHELL clean.sh "$@" )
|
||||
if [ "${srcdir}" = "${builddir}" ]; then
|
||||
print_outstanding_files
|
||||
|
||||
@@ -344,7 +344,7 @@ sub construct_ans_command {
|
||||
if ($restart) {
|
||||
$command .= " >>ans.run 2>&1 &";
|
||||
} else {
|
||||
$command .= " >ans.run 2>&1 &";
|
||||
$command .= " >ans.run 2>&1 &";
|
||||
}
|
||||
|
||||
# get the shell to report the pid of the server ($!)
|
||||
|
||||
Reference in New Issue
Block a user