diff --git a/.github/workflows/automated_release.yml b/.github/workflows/automated_release.yml index 92633b1e2..fc9dab9a3 100644 --- a/.github/workflows/automated_release.yml +++ b/.github/workflows/automated_release.yml @@ -132,7 +132,7 @@ jobs: delete-release-on-failure: runs-on: ubuntu-24.04 - needs: create-draft-release + needs: finalize-release if: ${{ failure() || cancelled() }} permissions: contents: write diff --git a/.github/workflows/coverage_report.yml b/.github/workflows/coverage_report.yml index 8e635a53b..4780dae7d 100644 --- a/.github/workflows/coverage_report.yml +++ b/.github/workflows/coverage_report.yml @@ -24,8 +24,6 @@ on: jobs: coverage-report: runs-on: ubuntu-24.04 - permissions: - contents: write # required to upload release assets outputs: artifact-name: ${{ steps.set-artifact-name.outputs.artifact-name }} @@ -56,13 +54,15 @@ jobs: bazel coverage //... --build_tests_only - name: Generate HTML Coverage Report + # FIXME: "--ignore-errors category,inconsistent" is a workaround to cope with gcov messing up hit counts because of internal data races run: | genhtml "$(bazel info output_path)/_coverage/_coverage_report.dat" \ -o=cpp_coverage \ --show-details \ --legend \ --function-coverage \ - --branch-coverage + --branch-coverage \ + --ignore-errors category,inconsistent - name: Create archive of test report run: | diff --git a/quality/integration_testing/integration_testing.bzl b/quality/integration_testing/integration_testing.bzl index 0ac70b986..7ec24fda8 100644 --- a/quality/integration_testing/integration_testing.bzl +++ b/quality/integration_testing/integration_testing.bzl @@ -21,6 +21,14 @@ def _extend_list_in_kwargs(kwargs, key, values): kwargs[key] = kwargs.get(key, []) + values return kwargs +def _extend_list_in_kwargs_without_duplicates(kwargs, key, values): + kwargs_values = kwargs.get(key, []) + for value in values: + if value not in kwargs_values: + kwargs_values.append(value) + kwargs[key] = kwargs_values + return kwargs + def integration_test(name, srcs, filesystem, **kwargs): pytest_bootstrap = Label("//quality/integration_testing:main.py") pytest_toml = Label("//quality/integration_testing:pytest.toml") @@ -154,6 +162,13 @@ def integration_test(name, srcs, filesystem, **kwargs): **kwargs ) + # FIXME: Integration tests are highly flaky with TSAN. (Ticket-249859) + _extend_list_in_kwargs_without_duplicates( + kwargs, + "target_compatible_with", + ["//quality/sanitizer/constraints:no_tsan"], + ) + test_as_exec( name = name, executable = select({ diff --git a/score/mw/com/test/bigdata/integration_test/test_bigdata.py b/score/mw/com/test/bigdata/integration_test/test_bigdata.py index 1fbf8e5b1..372a3ffc7 100644 --- a/score/mw/com/test/bigdata/integration_test/test_bigdata.py +++ b/score/mw/com/test/bigdata/integration_test/test_bigdata.py @@ -16,4 +16,4 @@ def test_bigdata_exchange(sut): # Sender runs for 30 cycles at 40ms intervals, Receiver receives 25 cycles with sut.start_process("./bin/bigdata --mode send -t 40 -n 30", cwd="/opt/bigdata/") as sender_process: with sut.start_process("./bin/bigdata --mode recv -n 25", cwd="/opt/bigdata/") as receiver_process: - assert receiver_process.wait_for_exit() == 0 + assert receiver_process.wait_for_exit(timeout=120) == 0 diff --git a/score/mw/com/test/generic_proxy/integration_test/test_generic_proxy.py b/score/mw/com/test/generic_proxy/integration_test/test_generic_proxy.py index 1713f0d79..b09e612dc 100644 --- a/score/mw/com/test/generic_proxy/integration_test/test_generic_proxy.py +++ b/score/mw/com/test/generic_proxy/integration_test/test_generic_proxy.py @@ -19,4 +19,4 @@ def test_generic_proxy(sut): # Sender runs for 30 cycles at 40ms intervals, Receiver receives 25 cycles with sut.start_process("./bin/generic_proxy -m send -t 40 -n 30", cwd="/opt/generic_proxy/") as sender: with sut.start_process("./bin/generic_proxy -m recv -n 25", cwd="/opt/generic_proxy/") as receiver: - assert receiver.wait_for_exit() == 0 + assert receiver.wait_for_exit(timeout=120) == 0 diff --git a/score/mw/com/test/multiple_proxies/integration_test/test_multiple_proxies.py b/score/mw/com/test/multiple_proxies/integration_test/test_multiple_proxies.py index 85050fc48..5a98da783 100644 --- a/score/mw/com/test/multiple_proxies/integration_test/test_multiple_proxies.py +++ b/score/mw/com/test/multiple_proxies/integration_test/test_multiple_proxies.py @@ -19,4 +19,4 @@ def test_multiple_proxies(sut): # Sender runs for 30 cycles at 40ms intervals, Receiver receives 25 cycles with sut.start_process("./bin/multiple_proxies -m send -t 40 -n 30", cwd="/opt/multiple_proxies/") as sender: with sut.start_process("./bin/multiple_proxies -m recv -n 25", cwd="/opt/multiple_proxies/") as receiver: - assert receiver.wait_for_exit() == 0 + assert receiver.wait_for_exit(timeout=120) == 0