Changes a CI task that runs test the previously not run test/functional/interface_usdt_*.py
functional tests (added in #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.
I’d like to hear from reviewers:
- Are we OK with using the
hadret/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 existingYes, see #25528 (comment)container
CI task be ported to a VM and reused instead?