CloudXR service tests can only run against a mocked runtime; no GPU path for src/core/cloudxr_tests
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 385
- Forks
- 88
- Avg merge
- 3d 23h
- Merged PRs (30d)
- 82
Description
Problem
src/core/cloudxr_tests and src/core/rig_tests run only under ctest on GitHub-hosted, GPU-less runners, so every test that touches the runtime has to fake one: a hand-bound unix socket for is_runtime_live(), a mocked Popen for the runtime process, and now a patched runtime_version() (it dlopens libcloudxr, which needs libcuda). At that point we are testing the mocks as much as the service. Nothing verifies that service start really detaches, that stop really tears the runtime down, or that status reads a real /proc cmdline.
What already exists
- GPU runners:
[self-hosted, linux, gpu, x64|arm64], used bytest-viz-gpu,test-cloudxr,test-teleop-ros2. Gated only onneeds: build-ubuntu, so they do run on PRs. - ctest never runs on them. It runs only in
build-ubuntu, unfiltered. test-viz-gpuis the precedent worth copying: viz python tests carrypytestmark = skipif(not _gpu_available()), skip cleanly on the CPU runner, and the same files are re-run withpytestagainst the built wheel on the GPU runner.test-cloudxrcannot host these as-is — the runtime is a separate compose service and the run dir is mounted:ro, so no lifecycle test can write to it.
Direction
Add a real-runtime tier to cloudxr_tests that skips when no runtime is available, and run it on the GPU runner the way test-viz-gpu runs the viz suite. Keep mocks only for branches a real runtime cannot produce (wedged service, stale pid).
Related: #880 (hand-registered GPU example tests — same root cause on the examples/ side). Stubs introduced by #927.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with src/core/cloudxr_tests and the test-viz-gpu workflow precedent. Add a real-runtime test tier that skips when no runtime is available and runs on the GPU runner, keeping mocks only for impossible states. Done means lifecycle behavior such as start, stop, and status is tested against the real runtime while CPU ctest remains clean.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- docker-compose, github-actions, python
- Domain
- ci-cd, infrastructure, testing
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 56/100