2025-03-15 04:23:24 +00:00
|
|
|
#!/bin/bash
|
|
|
|
|
set -eo pipefail
|
|
|
|
|
|
|
|
|
|
BASEDIR=$(dirname "$0")
|
|
|
|
|
|
2025-05-03 02:32:49 +00:00
|
|
|
CI="${CI:-false}"
|
|
|
|
|
CI_VERBOSE="${CI_VERBOSE_ENV:-false}"
|
|
|
|
|
CI_VERBOSE_ENV="${CI_VERBOSE_ENV:-$CI_VERBOSE}"
|
|
|
|
|
|
2025-05-01 10:21:36 +00:00
|
|
|
default_cargo_profile="test"
|
|
|
|
|
default_feat_set="all"
|
|
|
|
|
default_rust_toolchain="nightly"
|
|
|
|
|
default_rust_target="x86_64-unknown-linux-gnu"
|
|
|
|
|
default_sys_name="debian"
|
2025-06-25 02:11:44 +00:00
|
|
|
default_sys_target="x86_64-v1-linux-gnu"
|
2025-05-01 10:21:36 +00:00
|
|
|
default_sys_version="testing-slim"
|
|
|
|
|
|
2025-08-04 01:07:13 +00:00
|
|
|
default_complement_verbose=0
|
|
|
|
|
default_complement_count=1
|
2025-08-04 10:10:45 +00:00
|
|
|
default_complement_parallel=1
|
2025-08-04 01:07:13 +00:00
|
|
|
default_complement_shuffle=0
|
|
|
|
|
default_complement_timeout="1h"
|
|
|
|
|
default_complement_run=".*"
|
|
|
|
|
|
|
|
|
|
run="${1:-$default_complement_run}"
|
2025-07-27 01:26:44 +00:00
|
|
|
skip=""
|
2025-08-04 10:10:45 +00:00
|
|
|
skip="${skip}TestToDeviceMessagesOverFederation/stopped_server"
|
|
|
|
|
skip="${skip}|TestToDeviceMessagesOverFederation/interrupted_connectivity"
|
2025-07-27 01:26:44 +00:00
|
|
|
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"
|
2025-08-04 10:10:45 +00:00
|
|
|
skip="${skip}|TestLogin/parallel/POST_/"
|
|
|
|
|
skip="${skip}|TestUnbanViaInvite"
|
|
|
|
|
skip="${skip}|TestRoomState/Parallel/GET_/publicRooms_lists_newly-created_room"
|
2025-09-02 06:28:44 +00:00
|
|
|
# flakes due to timeout in debug-mode
|
|
|
|
|
skip="${skip}|TestMSC4297StateResolutionV2_1_starts_from_empty_set"
|
|
|
|
|
skip="${skip}|TestMSC4297StateResolutionV2_1_includes_conflicted_subgraph"
|
2025-07-27 01:26:44 +00:00
|
|
|
|
2025-05-01 07:47:51 +00:00
|
|
|
set -a
|
2025-05-01 10:21:36 +00:00
|
|
|
cargo_profile="${cargo_profile:-$default_cargo_profile}"
|
|
|
|
|
feat_set="${feat_set:-$default_feat_set}"
|
|
|
|
|
rust_target="${rust_target:-$default_rust_target}"
|
|
|
|
|
rust_toolchain="${rust_toolchain:-$default_rust_toolchain}"
|
2025-05-11 10:33:56 +00:00
|
|
|
sys_name="${sys_name:-$default_sys_name}"
|
2025-05-01 10:21:36 +00:00
|
|
|
sys_target="${sys_target:-$default_sys_target}"
|
|
|
|
|
sys_version="${sys_version:-$default_sys_version}"
|
|
|
|
|
|
2025-03-15 04:23:24 +00:00
|
|
|
runner_name=$(echo $RUNNER_NAME | cut -d"." -f1)
|
|
|
|
|
runner_num=$(echo $RUNNER_NAME | cut -d"." -f2)
|
2025-05-01 07:47:51 +00:00
|
|
|
set +a
|
2025-03-15 04:23:24 +00:00
|
|
|
|
|
|
|
|
###############################################################################
|
|
|
|
|
|
2025-07-27 01:26:44 +00:00
|
|
|
envs=""
|
2025-08-04 01:07:13 +00:00
|
|
|
envs="$envs -e complement_verbose=${complement_verbose:-$default_complement_verbose}"
|
|
|
|
|
envs="$envs -e complement_count=${complement_count:-$default_complement_count}"
|
|
|
|
|
envs="$envs -e complement_parallel=${complement_parallel:-$default_complement_parallel}"
|
|
|
|
|
envs="$envs -e complement_shuffle=${complement_shuffle:-$default_complement_shuffle}"
|
|
|
|
|
envs="$envs -e complement_timeout=${complement_timeout:-$default_complement_timeout}"
|
2025-07-27 01:26:44 +00:00
|
|
|
envs="$envs -e complement_skip=${complement_skip:-$skip}"
|
2025-08-04 01:07:13 +00:00
|
|
|
envs="$envs -e complement_run=${1:-$default_complement_run}"
|
2025-07-27 01:26:44 +00:00
|
|
|
|
2025-05-11 10:33:56 +00:00
|
|
|
set -x
|
2025-06-05 11:18:36 +00:00
|
|
|
tester_image="complement-tester--${sys_name}--${sys_version}--${sys_target}"
|
2025-05-01 07:47:51 +00:00
|
|
|
testee_image="complement-testee--${cargo_profile}--${rust_toolchain}--${rust_target}--${feat_set}--${sys_name}--${sys_version}--${sys_target}"
|
2025-06-05 11:18:36 +00:00
|
|
|
name="complement_tester__${sys_name}__${sys_version}__${sys_target}"
|
2025-03-15 04:23:24 +00:00
|
|
|
sock="/var/run/docker.sock"
|
2025-07-27 01:26:44 +00:00
|
|
|
arg="--name $name -v $sock:$sock --network=host $envs $tester_image ${testee_image}"
|
2025-05-11 10:33:56 +00:00
|
|
|
set +x
|
2025-05-03 02:32:49 +00:00
|
|
|
|
|
|
|
|
if test "$CI_VERBOSE_ENV" = "true"; then
|
|
|
|
|
date
|
|
|
|
|
env
|
|
|
|
|
fi
|
|
|
|
|
|
2025-05-10 04:29:08 +00:00
|
|
|
docker rm -f "$name" 2>/dev/null
|
|
|
|
|
|
2025-07-27 01:26:44 +00:00
|
|
|
arg="-d $arg"
|
|
|
|
|
cid=$(docker run $arg)
|
2025-05-10 04:29:08 +00:00
|
|
|
|
|
|
|
|
if test "$CI" = "true"; then
|
2025-07-27 01:26:44 +00:00
|
|
|
echo -n "$cid" > "$name"
|
2025-05-10 04:29:08 +00:00
|
|
|
fi
|
|
|
|
|
|
2025-07-27 01:26:44 +00:00
|
|
|
output_src="$cid:/usr/src/complement/full_output.jsonl"
|
|
|
|
|
output_dst="complement.jsonl"
|
|
|
|
|
extract_output() {
|
|
|
|
|
docker cp "$output_src" "$output_dst"
|
|
|
|
|
}
|
2025-05-03 02:32:49 +00:00
|
|
|
|
2025-07-27 01:26:44 +00:00
|
|
|
result_src="$cid:/usr/src/complement/new_results.jsonl"
|
2025-09-25 12:04:12 +00:00
|
|
|
result_dst="tests/complement/results.jsonl"
|
2025-07-27 01:26:44 +00:00
|
|
|
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
|
2025-05-03 02:32:49 +00:00
|
|
|
docker logs -f "$cid"
|
2025-03-15 04:23:24 +00:00
|
|
|
docker wait "$cid" 2>/dev/null
|
2025-05-11 10:33:56 +00:00
|
|
|
|
2025-07-27 01:26:44 +00:00
|
|
|
extract_results
|
|
|
|
|
git diff -U0 --color --shortstat "$result_dst" | (grep "$run" || true)
|
|
|
|
|
|
|
|
|
|
git diff --quiet --exit-code "$result_dst"
|
2025-06-06 19:25:49 +00:00
|
|
|
echo -e "\033[1;42;30mACCEPT\033[0m"
|