Add hardware-free IceBT endpoint tests and a Bluetooth CI probe#5803
Closed
externl wants to merge 1 commit into
Closed
Add hardware-free IceBT endpoint tests and a Bluetooth CI probe#5803externl wants to merge 1 commit into
externl wants to merge 1 commit into
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
Adds CI coverage for IceBT endpoint parsing without requiring Bluetooth hardware, and introduces a manual GitHub Actions probe to assess whether GitHub-hosted Ubuntu runners can support an emulated Bluetooth stack (vhci + BlueZ) for future full IceBT CI.
Changes:
- Add a C++ client-only test that registers (but does not initialize) the IceBT plugin, then parses and validates
bt/btsendpoint strings and rejection of malformed endpoints. - Add build/run guards so the test is only built/executed on Linux when BlueZ/DBus libraries are available.
- Add a
workflow_dispatch-only “bluetooth-probe” workflow to probe kernel/user-space prerequisites for virtual Bluetooth controllers on GitHub-hosted runners.
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 4 comments.
| File | Description |
|---|---|
| cpp/test/IceBT/endpoints/test.py | Adds harness gating (Linux + pkg-config check) to only run when IceBT can be built. |
| cpp/test/IceBT/endpoints/Makefile.mk | Builds the new test only when IceBT_system_libs is set. |
| cpp/test/IceBT/endpoints/Client.cpp | Implements endpoint parsing/round-trip assertions for bt and bts, plus malformed input checks. |
| .github/workflows/bluetooth-probe.yml | Adds a manual diagnostic workflow to probe virtual Bluetooth feasibility on Ubuntu runners. |
Comment on lines
+99
to
+103
| try | ||
| { | ||
| Ice::ObjectPrx bad{communicator, "dummy:bt -a not-an-address"}; | ||
| test(false); | ||
| } |
Comment on lines
+109
to
+113
| try | ||
| { | ||
| Ice::ObjectPrx bad{communicator, "dummy:bt -a 01:23:45:67:89:AB -c 99"}; | ||
| test(false); | ||
| } |
Comment on lines
+63
to
+68
| sudo apt-get update | ||
| sudo apt-get install -y bluez bluez-tools | ||
| # btvirt (the virtual-controller emulator) ships in bluez-tests on some distros and not at | ||
| # all on others; try to install it, but don't fail the probe if it's unavailable. | ||
| sudo apt-get install -y bluez-tests 2>/dev/null || echo "bluez-tests not packaged on this runner" | ||
|
|
|
|
||
| cout << "testing bt endpoint parsing... " << flush; | ||
| { | ||
| Ice::ObjectPrx prx{communicator, "dummy:bt -a " + addr + " -u " + uuid + " --name test -c 1"}; |
externl
force-pushed
the
icebt-endpoint-tests
branch
3 times, most recently
from
July 2, 2026 14:34
ee81f52 to
43afaa2
Compare
Add a client-only test under cpp/test/IceBT/endpoints that parses bt and bts endpoint strings with the IceBT plug-in loaded but not initialized (Ice.InitPlugins=0), so it needs no Bluetooth hardware or D-Bus and runs in the normal Linux test suite under the default tcp config. Also add a Bluetooth runner-capability probe step to the Linux release CI job that reports whether the runner can host an emulated Bluetooth stack (virtual HCI controller plus BlueZ), as a step toward exercising the IceBT transport over Bluetooth in CI without real radios.
externl
force-pushed
the
icebt-endpoint-tests
branch
from
July 2, 2026 15:14
43afaa2 to
23a08bd
Compare
Member
Author
|
Superseded by #5839, which folds in these hardware-free endpoint tests and the CI probe (verified identical) alongside the Android-emulator IceBT-over-Bluetooth harness. Closing in favor of the consolidated PR. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The IceBT transport has had no CI coverage because its RFCOMM data path and BlueZ/D-Bus control path both need real hardware. This adds:
cpp/test/IceBT/endpoints) that parsesbt/btsendpoint strings with the IceBT plug-in loaded but not initialized (Ice.InitPlugins=0) — no Bluetooth daemon or radios needed.btsendpoint layers SSL over an IceBT endpoint, and that malformed endpoints are rejected.--host-bt).bluetooth-probeworkflow (workflow_dispatchonly) that probes whether GitHub runners can host an emulated Bluetooth stack (virtual HCI viahci_vhci+ BlueZ) — a step toward running IceBT over Bluetooth in CI without hardware.