bitcoin/ci/test
MacroFake eeb5a94e27
Merge bitcoin/bitcoin#25528: ci: run USDT interface tests in the CI
cc7335edc8 ci: run USDT interface test in a VM (0xb10c)
dba6f82342 test: adopt USDT utxocache interface tests (0xb10c)
220a5a2841 test: hook into PID in tracing tests (0xb10c)

Pull request description:

  Changes a CI task that runs test the previously not run `test/functional/interface_usdt_*.py` functional tests (added in https://github.com/bitcoin/bitcoin/pull/24358).

  This task is run as CirussCI `compute_engine_instance` VM as hooking into the tracepoints is not possible in CirrusCI docker containers (https://github.com/bitcoin/bitcoin/issues/23296#issuecomment-1024920845). We use an unoffical PPA and untrusted  `bpfcc-tools` package in the CI as the Ubuntu jammy and Debian bullseye packages are outdated. We hope use an official package when new Ubuntu/Debian releases are available for the use with Google Compute Engine.

  We make sure to hook into `bitcoind` binaries in USDT interface tests via their PID, instead of their path. This makes sure multiple functional tests running in parallel don't interfere with each other.

  The utxocache USDT interface tests is adopted to a change of the functional test framework that wasn't detected as the tests weren't run in the CI. As the tracepoints expose internals, it can happen that we need to adopt the interface test when internals change. This is a bit awkward, and if it happens to frequently, we should consider generalizing the tests a bit more. For now it's fine, I think.

  See the individual commit messages for more details on the changes.

  Fixes https://github.com/bitcoin/bitcoin/issues/24782
  Fixes https://github.com/bitcoin/bitcoin/issues/23296

  I'd like to hear from reviewers:
  - Are we OK with using the [`hadret/bpfcc`](https://launchpad.net/~hadret/+archive/ubuntu/bpfcc) PPA for now? There is a clear plan when to drop it and as is currently, it could only impact the newly added VM task.
  - ~~Adding a new task increases CI runtime and costs. Should an existing `container` CI task be ported to a VM and reused instead?~~ Yes, see https://github.com/bitcoin/bitcoin/pull/25528#issuecomment-1179509525

ACKs for top commit:
  MarcoFalke:
    cr ACK cc7335edc8

Tree-SHA512: b7fddccc0a77d82371229d048abe0bf2c4ccaa45906497ef3040cf99e7f05561890aef4c253c40e4afc96bb838c9787fae81c8454c6fd9db583276e005a4ccb3
2022-08-01 11:27:29 +02:00
..
00_setup_env.sh ci: Add clang-tidy task 2022-04-04 11:57:06 +02:00
00_setup_env_android.sh ci, android: Update NDK up to r23c 2022-05-31 18:45:13 +02:00
00_setup_env_arm.sh scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
00_setup_env_i686_centos.sh ci: Bump CentOS 8 image 2022-02-01 10:13:25 +01:00
00_setup_env_i686_multiprocess.sh test: remove lief install from multiprocess job 2022-03-28 10:35:37 +01:00
00_setup_env_mac.sh build: use macOS 11 SDK (Xcode 12.2) 2022-01-26 17:28:16 +08:00
00_setup_env_mac_native_x86_64.sh ci: Improve naming related to "macOS 12 native x86_64" task 2022-06-22 10:15:16 +02:00
00_setup_env_native_asan.sh ci: run USDT interface test in a VM 2022-07-08 19:41:58 +02:00
00_setup_env_native_fuzz.sh Merge bitcoin/bitcoin#24292: Revert "ci: Run fuzzer task for the master branch only" 2022-02-21 13:12:36 +00:00
00_setup_env_native_fuzz_with_msan.sh ci: Use clang-12 and libcxx-12 for msan 2022-03-30 11:56:06 +02:00
00_setup_env_native_fuzz_with_valgrind.sh ci: better pin to dwarf4 in valgrind job 2022-07-21 10:16:46 +01:00
00_setup_env_native_msan.sh ci: Use clang-12 and libcxx-12 for msan 2022-03-30 11:56:06 +02:00
00_setup_env_native_nowallet_libbitcoinkernel.sh ci: Build libbitcoinkernel 2022-04-27 17:36:39 -04:00
00_setup_env_native_qt5.sh test: previous releases: add v23.0 2022-05-06 10:00:47 +02:00
00_setup_env_native_tidy.sh ci: run USDT interface test in a VM 2022-07-08 19:41:58 +02:00
00_setup_env_native_tsan.sh ci: add DEBUG_LOCKCONTENTION to CI task containing DEBUG_LOCKORDER 2022-05-20 12:48:17 +02:00
00_setup_env_native_valgrind.sh ci: better pin to dwarf4 in valgrind job 2022-07-21 10:16:46 +01:00
00_setup_env_s390x.sh test: Exclude broken feature_init for now 2022-02-04 16:33:36 +01:00
00_setup_env_win64.sh ci: Install documented packages for "Win64" CI task 2022-05-28 11:34:11 +02:00
04_install.sh ci: run USDT interface test in a VM 2022-07-08 19:41:58 +02:00
05_before_script.sh ci, android: Update Command-line Tools from 2.1 up to 7.0 2022-05-31 18:43:11 +02:00
06_script_a.sh [ci] apply cache size limit and print ccache statistics in "ARM64 Android APK" 2022-07-04 22:18:41 +09:00
06_script_b.sh tidy: run clang-tidy in quiet mode 2022-07-29 16:12:45 +01:00
wrap-qemu.sh refactor: integrate no_nul into univalue unitester 2022-07-18 09:15:18 +01:00
wrap-valgrind.sh scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
wrap-wine.sh refactor: integrate no_nul into univalue unitester 2022-07-18 09:15:18 +01:00
wrapped-cl.bat ci: Integrate ccache into MSVC build 2022-03-12 03:20:33 +01:00