mirror of
https://github.com/ddnet/ddnet.git
synced 2024-11-17 13:38:18 +00:00
Stop tests on first fifo timeout
This commit is contained in:
parent
98b4258674
commit
85e99363a4
|
@ -81,28 +81,6 @@ function fail() {
|
|||
echo "[-] $1 exited with code $2"
|
||||
}
|
||||
|
||||
function fifo() {
|
||||
local cmd="$1"
|
||||
local fifo_file="$2"
|
||||
if [ -f fail_fifo_timeout.txt ]; then
|
||||
echo "[fifo] skipping because of timeout cmd: $cmd"
|
||||
return
|
||||
fi
|
||||
if [ "$arg_verbose" == "1" ]; then
|
||||
echo "[fifo] $cmd >> $fifo_file"
|
||||
fi
|
||||
if printf '%s' "$cmd" | grep -q '[`'"'"']'; then
|
||||
echo "[-] fifo commands can not contain backticks or single quotes"
|
||||
echo "[-] invalid fifo command: $cmd"
|
||||
return
|
||||
fi
|
||||
if ! timeout 3 sh -c "printf '%s\n' '$cmd' >> \"$fifo_file\""; then
|
||||
fifo_error="[-] fifo command timeout: $cmd >> $fifo_file"
|
||||
printf '%s\n' "$fifo_error"
|
||||
printf '%s\n' "$fifo_error" >> fail_fifo_timeout.txt
|
||||
fi
|
||||
}
|
||||
|
||||
# Get unused port from the system by binding to port 0 and immediately closing the socket again
|
||||
port=$(python3 -c 'import socket; s=socket.socket(); s.bind(("", 0)); print(s.getsockname()[1]); s.close()')
|
||||
|
||||
|
@ -116,7 +94,7 @@ export UBSAN_OPTIONS=suppressions=../ubsan.supp:log_path=./SAN:print_stacktrace=
|
|||
export ASAN_OPTIONS=log_path=./SAN:print_stacktrace=1:check_initialization_order=1:detect_leaks=$DETECT_LEAKS:halt_on_errors=0
|
||||
export LSAN_OPTIONS=suppressions=../lsan.supp:print_suppressions=0
|
||||
|
||||
function print_results() {
|
||||
function check_asan_and_valgrind_results() {
|
||||
if [ "$arg_valgrind_memcheck" == "1" ]; then
|
||||
# Wait to ensure that the error summary was written to the stderr files because valgrind takes some time
|
||||
# TODO: Instead wait for all started processes to finish
|
||||
|
@ -136,6 +114,74 @@ function print_results() {
|
|||
return 0
|
||||
}
|
||||
|
||||
print_results() {
|
||||
for logfile in client1.log client2.log server.log; do
|
||||
if [ "$arg_valgrind_memcheck" == "1" ]; then
|
||||
break
|
||||
fi
|
||||
if [ ! -f "$logfile" ]; then
|
||||
echo "[-] Error: logfile '$logfile' not found"
|
||||
touch fail_logs.txt
|
||||
continue
|
||||
fi
|
||||
logdiff="$(diff -u <(grep -v "console: .* access for .* is now .*abled" "$logfile" | sort) <(sort "stdout_$(basename "$logfile" .log).txt"))"
|
||||
if [ "$logdiff" != "" ]; then
|
||||
echo "[-] Error: logfile '$logfile' differs from stdout"
|
||||
echo "$logdiff"
|
||||
echo "[-] Error: logfile '$logfile' differs from stdout" >> fail_logs.txt
|
||||
echo "$logdiff" >> fail_logs.txt
|
||||
fi
|
||||
done
|
||||
|
||||
for stderr in ./stderr_*.txt; do
|
||||
if [ ! -f "$stderr" ]; then
|
||||
continue
|
||||
fi
|
||||
if [ "$(cat "$stderr")" == "" ]; then
|
||||
continue
|
||||
fi
|
||||
echo "[!] Warning: $stderr"
|
||||
cat "$stderr"
|
||||
done
|
||||
|
||||
if test -n "$(find . -maxdepth 1 -name 'fail_*' -print -quit)"; then
|
||||
for fail in fail_*; do
|
||||
cat "$fail"
|
||||
done
|
||||
check_asan_and_valgrind_results
|
||||
echo "[-] Test failed. See errors above"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "[*] All tests passed"
|
||||
check_asan_and_valgrind_results || exit 1
|
||||
}
|
||||
|
||||
function fifo() {
|
||||
local cmd="$1"
|
||||
local fifo_file="$2"
|
||||
if [ -f fail_fifo_timeout.txt ]; then
|
||||
echo "[fifo] skipping because of timeout cmd: $cmd"
|
||||
return
|
||||
fi
|
||||
if [ "$arg_verbose" == "1" ]; then
|
||||
echo "[fifo] $cmd >> $fifo_file"
|
||||
fi
|
||||
if printf '%s' "$cmd" | grep -q '[`'"'"']'; then
|
||||
echo "[-] fifo commands can not contain backticks or single quotes"
|
||||
echo "[-] invalid fifo command: $cmd"
|
||||
exit 1
|
||||
fi
|
||||
if ! timeout 3 sh -c "printf '%s\n' '$cmd' >> \"$fifo_file\""; then
|
||||
fifo_error="[-] fifo command timeout: $cmd >> $fifo_file"
|
||||
printf '%s\n' "$fifo_error"
|
||||
printf '%s\n' "$fifo_error" >> fail_fifo_timeout.txt
|
||||
kill_all
|
||||
print_results
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
rm -rf integration_test
|
||||
mkdir -p integration_test/data/maps
|
||||
cp data/maps/coverage.map integration_test/data/maps
|
||||
|
@ -344,43 +390,4 @@ elif [ "$arg_valgrind_memcheck" != "1" ] && [ "$rank_time" != "$expected_times"
|
|||
echo " got: $rank_time"
|
||||
fi
|
||||
|
||||
for logfile in client1.log client2.log server.log; do
|
||||
if [ "$arg_valgrind_memcheck" == "1" ]; then
|
||||
break
|
||||
fi
|
||||
if [ ! -f "$logfile" ]; then
|
||||
echo "[-] Error: logfile '$logfile' not found"
|
||||
touch fail_logs.txt
|
||||
continue
|
||||
fi
|
||||
logdiff="$(diff -u <(grep -v "console: .* access for .* is now .*abled" "$logfile" | sort) <(sort "stdout_$(basename "$logfile" .log).txt"))"
|
||||
if [ "$logdiff" != "" ]; then
|
||||
echo "[-] Error: logfile '$logfile' differs from stdout"
|
||||
echo "$logdiff"
|
||||
echo "[-] Error: logfile '$logfile' differs from stdout" >> fail_logs.txt
|
||||
echo "$logdiff" >> fail_logs.txt
|
||||
fi
|
||||
done
|
||||
|
||||
for stderr in ./stderr_*.txt; do
|
||||
if [ ! -f "$stderr" ]; then
|
||||
continue
|
||||
fi
|
||||
if [ "$(cat "$stderr")" == "" ]; then
|
||||
continue
|
||||
fi
|
||||
echo "[!] Warning: $stderr"
|
||||
cat "$stderr"
|
||||
done
|
||||
|
||||
if test -n "$(find . -maxdepth 1 -name 'fail_*' -print -quit)"; then
|
||||
for fail in fail_*; do
|
||||
cat "$fail"
|
||||
done
|
||||
print_results
|
||||
echo "[-] Test failed. See errors above"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "[*] All tests passed"
|
||||
print_results || exit 1
|
||||
print_results
|
||||
|
|
Loading…
Reference in a new issue