tests: simple end-to-end remote qrexec test#669
Conversation
|
@fepitre I tried this. It doesn't work yet. First I hit the bug I commented in the qrexec PR. But then the source on remote side is not set - it appears as the connection is coming from the relay, not vm1-remote. |
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## main #669 +/- ##
==========================================
+ Coverage 70.24% 70.26% +0.02%
==========================================
Files 59 59
Lines 12739 12788 +49
==========================================
+ Hits 8948 8986 +38
- Misses 3791 3802 +11
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
Yes, I did not added the translation to source being the vm calling qrexec originally. |
OpenQA test summaryComplete test suite and dependencies: https://openqa.qubes-os.org/tests/overview?distri=qubesos&version=4.3&build=2025042414-4.3&flavor=pull-requests Test run included the following:
New failures, excluding unstableCompared to: https://openqa.qubes-os.org/tests/overview?distri=qubesos&version=4.3&build=2025031804-4.3&flavor=update
Failed tests10 failures
Fixed failuresCompared to: https://openqa.qubes-os.org/tests/132953#dependencies 13 fixed
Unstable testsDetailsPerformance TestsPerformance degradation:14 performance degradations
Remaining performance tests:58 tests
|
* origin/pr/674:
tests: only close watch fd for LocalVM
Pull request description:
```
======================================================================
ERROR: qubes.tests.integ.misc/TC_10_RemoteVM_fedora-41-xfce/test_000_full_connect
----------------------------------------------------------------------
Traceback (most recent call last):
File "/usr/lib/python3.13/site-packages/qubes/tests/__init__.py", line 891, in cleanup_app
self.remove_test_vms()
~~~~~~~~~~~~~~~~~~~~^^
File "/usr/lib/python3.13/site-packages/qubes/tests/__init__.py", line 1216, in remove_test_vms
self.remove_vms(
~~~~~~~~~~~~~~~^
[
^
...<9 lines>...
]
^
)
^
File "/usr/lib/python3.13/site-packages/qubes/tests/__init__.py", line 1187, in remove_vms
self._remove_vm_qubes(vm)
~~~~~~~~~~~~~~~~~~~~~^^^^
File "/usr/lib/python3.13/site-packages/qubes/tests/__init__.py", line 1029, in _remove_vm_qubes
del app.domains[vm.qid]
~~~~~~~~~~~^^^^^^^^
File "/usr/lib/python3.13/site-packages/qubes/app.py", line 568, in __delitem__
self.app.fire_event("domain-delete", vm=vm)
~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.13/site-packages/qubes/events.py", line 200, in fire_event
sync_effects, async_effects = self._fire_event(
~~~~~~~~~~~~~~~~^
event, kwargs, pre_event=pre_event
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/usr/lib/python3.13/site-packages/qubes/events.py", line 169, in _fire_event
effect = func(self, event, **kwargs)
File "/usr/lib/python3.13/site-packages/qubes/tests/__init__.py", line 883, in close_qdb_on_remove
if vm._qdb_connection_watch is not None:
^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'RemoteVM' object has no attribute '_qdb_connection_watch'
```
Related to #669.
Test vm1 -> relay -> vm2-remote call path. Do it on a single host by having relay service that transform names (source to source-remote and target-remote to target). For this to work, there need to be matching pairs of VMs with and without -remote suffix, and appropriate policy for both outgoing and incoming connections. For now put the test into 'misc' package, when there will be more qubes-air related tests, move it elsewhere. QubesOS/qubes-issues#9015
RemoteVM has much less attributes, so use getattr to handle this gracefully. At the same time, add also "relayvm" attribute too. QubesOS/qubes-issues#9015
3282a6f to
e90249b
Compare
Test vm1 -> relay -> vm2-remote call path. Do it on a single host by having
relay service that transform names (source to source-remote and
target-remote to target). For this to work, there need to be matching pairs
of VMs with and without -remote suffix, and appropriate policy for both
outgoing and incoming connections.
QubesOS/qubes-issues#9015