Prevent generating outbound traffic on a non-loopback interface during tests.
- Fix all tests, including ones that generate DNS traffic
- Change CI to catch new regressions, including DNS traffic. DNS traffic is detected because some VMs have configured a non-loopback DNS server,
[1111:1111::1]:53
:previous releases, depends DEBUG
TSan, depends, gui
multiprocess, i686, DEBUG
no wallet, libbitcoinkernel
- Required capabilities within the VM are explicit in
02_run_container.sh
:--cap-add NET_RAW
- False positives either from non-test generated outbound traffic or responses to outside-originated traffic will fail the CI. I think there is a good chance that this does not happen. If it happens then this can be revisited then and can be easily worked around by removing the
exit 1
line added to03_test_script.sh
in this PR.
Summary of each VM wrt the new check:
VM | unit (parallel) | unit (sequential) | functional | fuzz | tidy |
---|---|---|---|---|---|
32-bit CentOS, dash, gui (Cirrus CI) |
:heavy_check_mark: | - | :heavy_check_mark: | - | - |
ARM, unit tests, no functional tests (Cirrus CI) |
:heavy_check_mark: | - | - | - | - |
ASan + LSan + UBSan + integer, no depends, USDT (GitHub) |
:heavy_check_mark: | - | :heavy_check_mark: | - | - |
MSan, depends (Cirrus CI) |
:heavy_check_mark: | - | - | - | - |
TSan, depends, gui (Cirrus CI) |
:heavy_check_mark: | - | :heavy_check_mark: | - | - |
Win64 native fuzz, VS 2022 (GitHub) |
- | - | - | 2 | - |
Win64 native, VS 2022 (GitHub) |
2 | - | 2 | - | - |
Win64-cross (Cirrus CI) |
- | - | - | - | - |
fuzzer,address,undefined,integer, no depends (Cirrus CI) |
- | - | - | :heavy_check_mark: | - |
lint (Cirrus CI) |
- | - | - | - | - |
macOS 14 native, arm64, fuzz (GitHub) |
- | - | 1 | 1 | - |
macOS 14 native, arm64, no depends, sqlite only, gui (GitHub) |
1 | - | 1 | - | - |
macOS-cross, gui, no tests (Cirrus CI) |
- | - | - | - | - |
multiprocess, i686, DEBUG (Cirrus CI) |
:heavy_check_mark: | - | :heavy_check_mark: | - | - |
no wallet, libbitcoinkernel (Cirrus CI) |
:heavy_check_mark: | - | :heavy_check_mark: | - | - |
previous releases, depends DEBUG (Cirrus CI) |
- | :heavy_check_mark: | :heavy_check_mark: | - | - |
test each commit (GitHub) |
2 | - | 2 | - | - |
tidy (Cirrus CI) |
- | - | - | - | :heavy_check_mark: |
:heavy_check_mark:: test is run under tcpdump (it works!)
-: test is not run in that VM
1: tcpdump: en0: You don't have permission to capture on that device
(does not work)
2: tests are run but directly from .github/workflows/ci.yml
instead of from ci/test/03_test_script.sh
(does not work)
Resolves #31339