docker: Extract complement logs on failure.

docker: Sort config options used during complement.

Signed-off-by: Jason Volk <jason@zemos.net>
This commit is contained in:
Jason Volk
2025-07-27 01:26:44 +00:00
parent df7cd58618
commit f04924d6be
6 changed files with 109 additions and 67 deletions

View File

@@ -15,6 +15,19 @@ default_sys_name="debian"
default_sys_target="x86_64-v1-linux-gnu"
default_sys_version="testing-slim"
default_run=".*"
run="${1:-$default_run}"
skip=""
skip="TestPartialStateJoin.*"
skip="${skip}|TestRoomDeleteAlias/Pa.*/Can_delete_canonical_alias"
skip="${skip}|TestUnbanViaInvite.*"
skip="${skip}|TestToDeviceMessagesOverFederation/stopped_server"
skip="${skip}|TestLogin/parallel/POST_/login_as_non-existing_user_is_rejected"
skip="${skip}|TestThreadReceiptsInSyncMSC4102"
skip="${skip}|TestRoomCreate/Parallel/POST_/createRoom_makes_a_room_with_a_topic_and_writes_rich_topic_representation"
skip="${skip}|TestRoomCreate/Parallel/POST_/createRoom_makes_a_room_with_a_topic_via_initial_state_overwritten_by_topic"
set -a
cargo_profile="${cargo_profile:-$default_cargo_profile}"
feat_set="${feat_set:-$default_feat_set}"
@@ -30,12 +43,21 @@ set +a
###############################################################################
envs=""
envs="$envs -e complement_verbose=${complement_verbose:-0}"
envs="$envs -e complement_count=${complement_count:-1}"
envs="$envs -e complement_parallel=${complement_parallel:-16}"
envs="$envs -e complement_shuffle=${complement_shuffle:-0}"
envs="$envs -e complement_timeout=${complement_timeout:-1h}"
envs="$envs -e complement_skip=${complement_skip:-$skip}"
envs="$envs -e complement_run=${run}"
set -x
tester_image="complement-tester--${sys_name}--${sys_version}--${sys_target}"
testee_image="complement-testee--${cargo_profile}--${rust_toolchain}--${rust_target}--${feat_set}--${sys_name}--${sys_version}--${sys_target}"
name="complement_tester__${sys_name}__${sys_version}__${sys_target}"
sock="/var/run/docker.sock"
arg="--name $name -v $sock:$sock --network=host $tester_image ${testee_image}"
arg="--name $name -v $sock:$sock --network=host $envs $tester_image ${testee_image}"
set +x
if test "$CI_VERBOSE_ENV" = "true"; then
@@ -45,21 +67,32 @@ fi
docker rm -f "$name" 2>/dev/null
trap 'set +x; date; echo -e "\033[1;41;37mERROR\033[0m"' ERR
arg="-d $arg"
cid=$(docker run $arg)
if test "$CI" = "true"; then
arg="-d $arg"
cid=$(docker run $arg)
else
arg="--rm -a stdout -a stderr $arg"
docker run $arg
exit $?
echo -n "$cid" > "$name"
fi
echo -n "$cid" > "$name"
output_src="$cid:/usr/src/complement/full_output.jsonl"
output_dst="complement.jsonl"
extract_output() {
docker cp "$output_src" "$output_dst"
}
trap 'docker container stop $cid; set +x; date; echo -e "\033[1;41;37mERROR\033[0m"' INT
result_src="$cid:/usr/src/complement/new_results.jsonl"
result_dst="tests/test_results/complement/test_results.jsonl"
extract_results() {
docker cp "$result_src" "$result_dst"
}
trap 'extract_output; set +x; date; echo -e "\033[1;41;37mERROR\033[0m"' ERR
trap 'docker container stop $cid; extract_output' INT
docker logs -f "$cid"
docker wait "$cid" 2>/dev/null
extract_results
git diff -U0 --color --shortstat "$result_dst" | (grep "$run" || true)
git diff --quiet --exit-code "$result_dst"
echo -e "\033[1;42;30mACCEPT\033[0m"