Skip to content

updater: full migration to asyncio - #322

Open
piotrbartman wants to merge 6 commits into
QubesOS:mainfrom
piotrbartman:updater/async
Open

updater: full migration to asyncio#322
piotrbartman wants to merge 6 commits into
QubesOS:mainfrom
piotrbartman:updater/async

Conversation

@piotrbartman

Copy link
Copy Markdown
Member

Inspiration was /pull/320

While searching for a solution, I went deeper and ended up with a major refactor.

First commit:

  • replace threads with asyncio loop to enable reliable event handling,
  • consolidate event-loop access to a single call in main()
      The loop cannot be dropped entirely: it must be the one consistent with GApplication.
      It's a best effort solution to make an eventual migration to newer version easier.
  • move blocking Admin API calls (VM start/shutdown) to an executor to prevent UI and loading spinners from freezing,
  • eliminate nested modal GTK loops (dialog.run()), replacing them with async dialogs,
  • re-enable qubesadmin caching and tied the EventsDispatcher listener directly to the active async loop to have real-time cache invalidation,
  • close window button closes the updater just after updates,
  • adapt tests to coroutines.

The following commits fix smaller issues loosely related to main subject.
fix QubesOS/qubes-issues/issues/10947

- replace threads with asyncio loop to enable reliable event handling,
- consolidate event-loop access to a single call in main()
  The loop cannot be dropped entirely: it must be the one consistent with GApplication.
  It's a best effort solution to make an eventual migration to newer version easier.
- move blocking Admin API calls (VM start/shutdown) to an executor to prevent UI and loading spinners from freezing,
- eliminate nested modal GTK loops (dialog.run()), replacing them with async dialogs,
- re-enable qubesadmin caching and tied the `EventsDispatcher` listener directly to the active async loop to have real-time cache invalidation,
- close window button closes the updater just after updates,
- adapt tests to coroutines.
This is an artifact of gi.events (the update itself has already finished) and cannot be fixed cleanly without patching gi.events.
@marmarek

Copy link
Copy Markdown
Member

For shutdown handling specifically, take a look at https://github.com/QubesOS/qubes-desktop-linux-manager/pull/312/changes

Comment thread qubes_config/tests/test_gtk_utils.py Outdated
Comment thread qui/updater/tests/conftest.py Outdated
``asyncio.run()`` fails (it tries to set a new loop on the main thread's
context).
"""
loop = asyncio.SelectorEventLoop()

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this really a good idea? Isn't it better to simply take that created loop (asyncio.get_event_loop())?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I focused here on maximum isolation in unit tests, but maybe it would actually be better to increase integration with the working environment

@qubesos-bot

qubesos-bot commented Jul 23, 2026

Copy link
Copy Markdown

OpenQA test summary

Complete test suite and dependencies: https://openqa.qubes-os.org/tests/overview?distri=qubesos&version=4.3&build=2026072801-devel&flavor=pull-requests

Test run included the following:

Upload failures

  • system_tests_backup
    • system_tests: Failed (test died)
      # Test died: command 'curl --form upload=@tests-qubes.tests.integ.b...

New failures, excluding unstable

Compared to: https://openqa.qubes-os.org/tests/overview?distri=qubesos&version=4.3&build=2026050504-devel&flavor=update

  • system_tests_extra

  • system_tests_usbproxy

  • system_tests_dispvm

  • system_tests_basic_vm_qrexec_gui_zfs

    • TC_20_NonAudio_whonix-workstation-18-pool: test_000_start_shutdown (error + timed out)
      qubes.exc.QubesVMShutdownTimeoutError: Domain shutdown timed out: '...
  • system_tests_audio

    • TC_20_AudioVM_PipeWire_whonix-workstation-18: test_226_audio_playback_pipewire (failure)
      AssertionError: too short audio, expected 10s, got 9.16380952380952...
  • install_default_upload@hw7

    • firstboot: unnamed test (unknown)
    • firstboot: Failed (test died)
      # Test died: no candidate needle with tag(s) 'nm-applet-more-networ...
  • system_tests_guivm_gpu_gui_interactive@hw13

    • update_guivm: Failed (test died)
      # Test died: command '(set -o pipefail; qubesctl --all --show-outpu...

Failed tests

16 failures
  • system_tests_whonix

    • [unstable] whonixcheck: fail (unknown)
      Whonixcheck for sys-whonix failed...

    • [unstable] whonixcheck: Failed (test died)
      # Test died: systemcheck failed at qubesos/tests/whonixcheck.pm lin...

  • system_tests_pvgrub_salt_storage

  • system_tests_extra

  • system_tests_usbproxy

  • system_tests_network_ipv6

  • system_tests_network_updates

    • [unstable] TC_00_Dom0Upgrade_whonix-gateway-18: test_000_update_salt (error)
      subprocess.CalledProcessError: Command 'timeout=120; while ! tor-ci...

    • [unstable] TC_00_Dom0Upgrade_whonix-gateway-18: test_001_update_check (failure)
      ^... AssertionError: '' is not true

  • system_tests_dispvm

  • system_tests_basic_vm_qrexec_gui_zfs

    • TC_20_NonAudio_whonix-workstation-18-pool: test_000_start_shutdown (error + timed out)
      qubes.exc.QubesVMShutdownTimeoutError: Domain shutdown timed out: '...
  • system_tests_audio

  • system_tests_audio@hw1

  • install_default_upload@hw7

    • firstboot: unnamed test (unknown)
    • firstboot: Failed (test died)
      # Test died: no candidate needle with tag(s) 'nm-applet-more-networ...
  • system_tests_guivm_gpu_gui_interactive@hw13

    • update_guivm: Failed (test died)
      # Test died: command '(set -o pipefail; qubesctl --all --show-outpu...

Fixed failures

Compared to: https://openqa.qubes-os.org/tests/176874#dependencies

23 fixed
  • system_tests_pvgrub_salt_storage

    • TC_41_HVMGrub_debian-13-xfce: test_000_standalone_vm (error)
      qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...

    • TC_41_HVMGrub_debian-13-xfce: test_001_standalone_vm_dracut (error)
      qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...

    • TC_41_HVMGrub_debian-13-xfce: test_010_template_based_vm (error)
      qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...

    • TC_41_HVMGrub_fedora-43-xfce: test_010_template_based_vm (error)
      qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...

  • system_tests_extra

    • TC_01_InputProxyExclude_debian-13-xfce: test_000_qemu_tablet (error)
      qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...

    • TC_01_InputProxyExclude_fedora-43-xfce: test_000_qemu_tablet (error)
      qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...

    • TC_00_QVCTest_fedora-43-xfce: test_010_screenshare (failure + cleanup)
      ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^... AssertionError: 1179648 != 0

    • TC_00_QVCTest_whonix-gateway-18: test_010_screenshare (failure + cleanup)
      AssertionError: 2.3156185715769593 not less than 2.0

    • TC_00_PDFConverter_fedora-43-xfce: test_004_cancel_stops_conversion (failure)
      AssertionError: DispVM not cleaned up 10s after cancel: {<DispVM at...

  • system_tests_usbproxy

    • system_tests: wait_serial (wait serial expected)
      # wait_serial expected: qr/h3uXO-\d+-/...

    • TC_20_USBProxy_core3_fedora-43-xfce: test_090_attach_stubdom (error)
      qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...

  • system_tests_network_ipv6

  • system_tests_audio

  • system_tests_audio@hw1

  • system_tests_guivm_gpu_gui_interactive@hw13

    • shutdown: unnamed test (unknown)
    • shutdown: Failed (test died)
      # Test died: no candidate needle with tag(s) 'text-logged-in-root' ...
  • system_tests_whonix@hw1

    • whonixcheck: fail (unknown)
      Whonixcheck for sys-whonix failed...

    • whonixcheck: Failed (test died)
      # Test died: systemcheck failed at qubesos/tests/whonixcheck.pm lin...

Unstable tests

Details
  • system_tests_whonix

    whonixcheck/Failed (2/5 times with errors)
    • job 188935 # Test died: command 'qvm-run -ap whonix-gateway-18 'LC_ALL=C whon...
    • job 189348 # Test died: command 'qvm-run -ap whonix-gateway-18 'LC_ALL=C whon...
    whonixcheck/Failed (1/5 times with errors)
    • job 188636 # Test died: systemcheck failed at qubesos/tests/whonixcheck.pm lin...
    whonixcheck/fail (2/5 times with errors)
    whonixcheck/fail (1/5 times with errors)
    • job 188636 Whonixcheck for whonix-workstation-18 failed...
    whonixcheck/wait_serial (2/5 times with errors)
    • job 188935 # Command: qvm-run -ap whonix-gateway-18 'LC_ALL=C whonixcheck --v...
    • job 189348 # Command: qvm-run -ap whonix-gateway-18 'LC_ALL=C whonixcheck --v...
    whonixcheck/wait_serial (1/5 times with errors)
    • job 189348 # Command: curl --form upload=@/var/log/libvirt/libxl/libxl-driver....
  • system_tests_network

    system_tests/Fail (1/5 times with errors)
    • job 188964 Tests qubes.tests.integ.network failed (exit code 1), details repor...
    system_tests/Failed (1/5 times with errors)
    • job 188964 # Test died: Some tests failed at qubesos/tests/system_tests.pm lin...
    VmNetworking_debian-13-xfce/test_110_dynamic_attach (1/5 times with errors)
    • job 188964 ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^... AssertionError: 125 != 0
    VmNetworking_fedora-43-xfce/test_114_reattach_after_provider_crash (1/5 times with errors)
    • job 188964 qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...
  • system_tests_pvgrub_salt_storage

    system_tests/Fail (4/5 times with errors)
    • job 188480 Tests qubes.tests.integ.grub failed (exit code 1), details reported...
    • job 188519 Tests qubes.tests.integ.grub failed (exit code 1), details reported...
    • job 188668 Tests qubes.tests.integ.grub failed (exit code 1), details reported...
    • job 188967 Tests qubes.tests.integ.grub failed (exit code 1), details reported...
    system_tests/Fail (1/5 times with errors)
    • job 188967 Tests qubes.tests.integ.salt failed (exit code 1), details reported...
    system_tests/Fail (1/5 times with errors)
    • job 188967 Tests qubes.tests.integ.storage failed (exit code 1), details repor...
    system_tests/Failed (3/5 times with errors)
    • job 188480 # Test died: Some tests failed at qubesos/tests/system_tests.pm lin...
    • job 188519 # Test died: Some tests failed at qubesos/tests/system_tests.pm lin...
    • job 188668 # Test died: Some tests failed at qubesos/tests/system_tests.pm lin...
    system_tests/Failed (1/5 times with errors)
    • job 188967 # Test died: Some tests failed at qubesos/tests/system_tests.pm lin...
    TC_41_HVMGrub_debian-13-xfce/test_000_standalone_vm (1/5 times with errors)
    • job 188967 qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...
    TC_41_HVMGrub_fedora-43-xfce/test_000_standalone_vm (2/5 times with errors)
    • job 188668 qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...
    • job 188967 qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...
    StorageReflinkOnExt4/test_000_volatile (1/5 times with errors)
    • job 188967 qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...
    TC_10_VMSalt_fedora-43-xfce/test_001_multi_state_highstate (1/5 times with errors)
    • job 188967 qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...
    TC_41_HVMGrub_debian-13-xfce/test_001_standalone_vm_dracut (2/5 times with errors)
    • job 188480 qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...
    • job 188967 qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...
    TC_41_HVMGrub_debian-13-xfce/test_010_template_based_vm (3/5 times with errors)
    • job 188480 qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...
    • job 188668 qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...
    • job 188967 qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...
    TC_41_HVMGrub_fedora-43-xfce/test_010_template_based_vm (3/5 times with errors)
    • job 188480 qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...
    • job 188668 qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...
    • job 188967 qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...
    TC_41_HVMGrub_debian-13-xfce/test_011_template_based_vm_dracut (4/5 times with errors)
    • job 188480 qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...
    • job 188519 qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...
    • job 188668 qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...
    • job 188967 qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...
  • system_tests_extra

    system_tests/Fail (2/5 times with errors)
    • job 188473 Tests qubes.tests.extra failed (exit code 1), details reported sepa...
    • job 188661 Tests qubes.tests.extra failed (exit code 1), details reported sepa...
    system_tests/Failed (2/5 times with errors)
    • job 188473 # Test died: Some tests failed at qubesos/tests/system_tests.pm lin...
    • job 188661 # Test died: Some tests failed at qubesos/tests/system_tests.pm lin...
    TC_01_InputProxyExclude_debian-13-xfce/test_000_qemu_tablet (1/5 times with errors)
    • job 188661 qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...
    TC_01_InputProxyExclude_fedora-43-xfce/test_000_qemu_tablet (2/5 times with errors)
    • job 188473 qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...
    • job 188661 qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...
    TC_00_PDFConverter_debian-13-xfce/test_002_500_pages (1/5 times with errors)
    • job 188473 AssertionError: 1 != 0 : qvm-convert-pdf failed: b'Sending file to ...
    TC_00_PDFConverter_debian-13-xfce/test_004_cancel_stops_conversion (1/5 times with errors)
    • job 188661 AssertionError: DispVM not cleaned up 20s after cancel: ['disp7751']
    TC_00_PDFConverter_fedora-43-xfce/test_004_cancel_stops_conversion (2/5 times with errors)
    • job 188473 AssertionError: DispVM not cleaned up 20s after cancel: ['disp758']
    • job 188661 AssertionError: DispVM not cleaned up 20s after cancel: ['disp8125']
    TC_00_PDFConverter_debian-13-xfce/test_005_docx (1/5 times with errors)
    • job 188473 AssertionError: 127 != 0 : qvm-convert-file failed: b'-bash: line 1...
    TC_00_PDFConverter_debian-13-xfce/test_006_odt (1/5 times with errors)
    • job 188473 AssertionError: 127 != 0 : qvm-convert-file failed: b'-bash: line 1...
    TC_00_PDFConverter_debian-13-xfce/test_007_xlsx (1/5 times with errors)
    • job 188473 AssertionError: 127 != 0 : qvm-convert-file failed: b'-bash: line 1...
    TC_00_PDFConverter_debian-13-xfce/test_008_ods (1/5 times with errors)
    • job 188473 AssertionError: 127 != 0 : qvm-convert-file failed: b'-bash: line 1...
    TC_00_Direct_whonix-workstation-18/test_060_import_secret (1/5 times with errors)
    • job 188661 AssertionError: key generation failed: b''b"gpg: keybox '/home/user...
  • system_tests_usbproxy

    system_tests/Fail (1/5 times with errors)
    • job 188934 Tests qubes.tests.extra failed (exit code 1), details reported sepa...
    system_tests/Failed (1/5 times with errors)
    • job 188934 # Test died: Some tests failed at qubesos/tests/system_tests.pm lin...
    TC_20_USBProxy_core3_debian-13-xfce/test_090_attach_stubdom (1/5 times with errors)
    • job 188934 qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...
    TC_20_USBProxy_core3_fedora-43-xfce/test_090_attach_stubdom (1/5 times with errors)
    • job 188934 qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...
  • system_tests_network_ipv6

    system_tests/Fail (4/5 times with errors)
    • job 188517 Tests qubes.tests.integ.network_ipv6 failed (exit code 1), details ...
    • job 188525 Tests qubes.tests.integ.network_ipv6 failed (exit code 1), details ...
    • job 188666 Tests qubes.tests.integ.network_ipv6 failed (exit code 1), details ...
    • job 188965 Tests qubes.tests.integ.network_ipv6 failed (exit code 1), details ...
    system_tests/Failed (4/5 times with errors)
    • job 188517 # Test died: Some tests failed at qubesos/tests/system_tests.pm lin...
    • job 188525 # Test died: Some tests failed at qubesos/tests/system_tests.pm lin...
    • job 188666 # Test died: Some tests failed at qubesos/tests/system_tests.pm lin...
    • job 188965 # Test died: Some tests failed at qubesos/tests/system_tests.pm lin...
    VmIPv6Networking_debian-13-xfce/test_001_simple_networking_paused_from_none_to_existent (1/5 times with errors)
    • job 188517 subprocess.CalledProcessError: Command 'qubes.WaitForNetworkUplink'...
    VmIPv6Networking_fedora-43-xfce/test_030_firewallvm_firewall (1/5 times with errors)
    • job 188965 qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...
    VmIPv6Networking_fedora-43-xfce/test_040_inter_vm (1/5 times with errors)
    • job 188666 qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...
    VmIPv6Networking_debian-13-xfce/test_110_dynamic_attach (1/5 times with errors)
    • job 188525 ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^... AssertionError: 125 != 0
    VmIPv6Networking_fedora-43-xfce/test_112_reattach_after_provider_shutdown (1/5 times with errors)
    • job 188666 qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...
    VmIPv6Networking_fedora-43-xfce/test_113_reattach_after_provider_kill (1/5 times with errors)
    • job 188666 qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...
    VmIPv6Networking_fedora-43-xfce/test_501_simple_networking_paused_from_none_to_existent (1/5 times with errors)
    • job 188517 subprocess.CalledProcessError: Command 'qubes.WaitForNetworkUplink'...
    system_tests/wait_serial (1/5 times with errors)
    • job 188517 # Command: curl --form upload=@/var/log/libvirt/libxl/libxl-driver....
  • system_tests_network_updates

    system_tests/Fail (4/5 times with errors)
    • job 188479 Tests qubes.tests.integ.dom0_update failed (exit code 1), details r...
    • job 188667 Tests qubes.tests.integ.dom0_update failed (exit code 1), details r...
    • job 188966 Tests qubes.tests.integ.dom0_update failed (exit code 1), details r...
    • job 189164 Tests qubes.tests.integ.dom0_update failed (exit code 1), details r...
    system_tests/Failed (4/5 times with errors)
    • job 188479 # Test died: Some tests failed at qubesos/tests/system_tests.pm lin...
    • job 188667 # Test died: Some tests failed at qubesos/tests/system_tests.pm lin...
    • job 188966 # Test died: Some tests failed at qubesos/tests/system_tests.pm lin...
    • job 189164 # Test died: Some tests failed at qubesos/tests/system_tests.pm lin...
    TC_00_Dom0Upgrade_whonix-gateway-18/test_000_update (1/5 times with errors)
    • job 188667 Error: Failed to download metadata for repo 'test': Cannot download...
    TC_00_Dom0Upgrade_whonix-gateway-18/test_000_update_salt (1/5 times with errors)
    • job 188479 ?[0;31mDuration: 136920.941 ms?[0;0m... ?[0;31m Changes: ?[0;0m
    TC_00_Dom0Upgrade_whonix-gateway-18/test_001_update_check (2/5 times with errors)
    • job 188966 subprocess.CalledProcessError: Command 'timeout=120; while ! tor-ci...
    • job 189164 subprocess.CalledProcessError: Command 'timeout=120; while ! tor-ci...
    TC_00_Dom0Upgrade_whonix-gateway-18/test_006_update_flag_clear (2/5 times with errors)
    • job 188667 Error: Failed to download metadata for repo 'test': Cannot download...
    • job 188966 Error: Failed to download metadata for repo 'test': Cannot download...
    system_tests/wait_serial (1/5 times with errors)
    • job 188966 # Command: curl --form upload=@/var/log/libvirt/libxl/libxl-driver....
  • system_tests_dispvm

    system_tests/Fail (1/5 times with errors)
    • job 188511 Tests qubes.tests.integ.dispvm failed (exit code 1), details report...
    system_tests/Failed (1/5 times with errors)
    • job 188511 # Test died: Some tests failed at qubesos/tests/system_tests.pm lin...
    TC_21_DispVM_Preload/test_011_preload_reject_max (1/5 times with errors)
    • job 188511 qubes.exc.QubesVMShutdownTimeoutError: Domain shutdown timed out: '...
  • system_tests_kde_gui_interactive

    gui_keyboard_layout/Failed (2/5 times with errors)
    • job 188640 # Test died: command 'qvm-shutdown --wait work' timed out at /usr/l...
    • job 189137 # Test died: command 'qvm-shutdown --wait work' timed out at /usr/l...
    gui_keyboard_layout/wait_serial (2/5 times with errors)
    • job 188640 # Command: qvm-shutdown --wait work...
    • job 189137 # Command: qvm-shutdown --wait work...
  • system_tests_basic_vm_qrexec_gui_zfs

    system_tests/Fail (1/5 times with errors)
    • job 189155 Tests qubes.tests.integ.vm_qrexec_gui failed (exit code 1), details...
    switch_pool/Failed (1/5 times with errors)
    • job 189183 # Test died: command 'qvm-start --skip-if-running sys-firewall sys-...
    system_tests/Failed (1/5 times with errors)
    • job 189155 # Test died: Some tests failed at qubesos/tests/system_tests.pm lin...
    TC_20_NonAudio_whonix-gateway-18-pool/test_012_qubes_desktop_run (1/5 times with errors)
    • job 189155 raise TimeoutError from exc_val... TimeoutError
  • system_tests_audio

    system_tests/Fail (4/5 times with errors)
    • job 188499 Tests qubes.tests.integ.audio failed (exit code 1), details reporte...
    • job 188526 Tests qubes.tests.integ.audio failed (exit code 1), details reporte...
    • job 188639 Tests qubes.tests.integ.audio failed (exit code 1), details reporte...
    • job 189136 Tests qubes.tests.integ.audio failed (exit code 1), details reporte...
    system_tests/Failed (4/5 times with errors)
    • job 188499 # Test died: Some tests failed at qubesos/tests/system_tests.pm lin...
    • job 188526 # Test died: Some tests failed at qubesos/tests/system_tests.pm lin...
    • job 188639 # Test died: Some tests failed at qubesos/tests/system_tests.pm lin...
    • job 189136 # Test died: Some tests failed at qubesos/tests/system_tests.pm lin...
    TC_20_AudioVM_Pulse_fedora-43-xfce/test_223_audio_play_hvm (1/5 times with errors)
    • job 188639 qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...
    TC_20_AudioVM_Pulse_fedora-43-xfce/test_224_audio_rec_muted_hvm (1/5 times with errors)
    • job 188639 qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...
    TC_20_AudioVM_Pulse_whonix-workstation-18/test_224_audio_rec_muted_hvm (1/5 times with errors)
    • job 188639 qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...
    TC_20_AudioVM_Pulse_whonix-workstation-18/test_225_audio_rec_unmuted_hvm (3/5 times with errors)
    • job 188499 AssertionError: too short audio, expected 10s, got 7.85712018140589...
    • job 188526 AssertionError: too short audio, expected 10s, got 6.66848072562358...
    • job 188639 AssertionError: too short audio, expected 10s, got 6.83272108843537...
    TC_20_AudioVM_PipeWire_whonix-workstation-18/test_251_audio_playback_audiovm_pipewire_late_start (1/5 times with errors)
    • job 189136 AssertionError: too short audio, expected 10s, got 9.09505668934240...
    TC_20_AudioVM_Pulse_fedora-43-xfce/test_252_audio_playback_audiovm_switch_hvm (1/5 times with errors)
    • job 188639 qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...
  • system_tests_audio@hw1

    system_tests/Fail (4/5 times with errors)
    • job 188499 Tests qubes.tests.integ.audio failed (exit code 1), details reporte...
    • job 188526 Tests qubes.tests.integ.audio failed (exit code 1), details reporte...
    • job 188639 Tests qubes.tests.integ.audio failed (exit code 1), details reporte...
    • job 189136 Tests qubes.tests.integ.audio failed (exit code 1), details reporte...
    system_tests/Failed (4/5 times with errors)
    • job 188499 # Test died: Some tests failed at qubesos/tests/system_tests.pm lin...
    • job 188526 # Test died: Some tests failed at qubesos/tests/system_tests.pm lin...
    • job 188639 # Test died: Some tests failed at qubesos/tests/system_tests.pm lin...
    • job 189136 # Test died: Some tests failed at qubesos/tests/system_tests.pm lin...
    TC_20_AudioVM_Pulse_fedora-43-xfce/test_223_audio_play_hvm (1/5 times with errors)
    • job 188639 qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...
    TC_20_AudioVM_Pulse_fedora-43-xfce/test_224_audio_rec_muted_hvm (1/5 times with errors)
    • job 188639 qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...
    TC_20_AudioVM_Pulse_whonix-workstation-18/test_224_audio_rec_muted_hvm (1/5 times with errors)
    • job 188639 qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...
    TC_20_AudioVM_Pulse_whonix-workstation-18/test_225_audio_rec_unmuted_hvm (3/5 times with errors)
    • job 188499 AssertionError: too short audio, expected 10s, got 7.85712018140589...
    • job 188526 AssertionError: too short audio, expected 10s, got 6.66848072562358...
    • job 188639 AssertionError: too short audio, expected 10s, got 6.83272108843537...
    TC_20_AudioVM_PipeWire_whonix-workstation-18/test_251_audio_playback_audiovm_pipewire_late_start (1/5 times with errors)
    • job 189136 AssertionError: too short audio, expected 10s, got 9.09505668934240...
    TC_20_AudioVM_Pulse_fedora-43-xfce/test_252_audio_playback_audiovm_switch_hvm (1/5 times with errors)
    • job 188639 qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...
  • system_tests_whonix@hw1

    whonixcheck/Failed (2/5 times with errors)
    • job 188935 # Test died: command 'qvm-run -ap whonix-gateway-18 'LC_ALL=C whon...
    • job 189348 # Test died: command 'qvm-run -ap whonix-gateway-18 'LC_ALL=C whon...
    whonixcheck/Failed (1/5 times with errors)
    • job 188636 # Test died: systemcheck failed at qubesos/tests/whonixcheck.pm lin...
    whonixcheck/fail (2/5 times with errors)
    whonixcheck/fail (1/5 times with errors)
    • job 188636 Whonixcheck for whonix-workstation-18 failed...
    whonixcheck/wait_serial (2/5 times with errors)
    • job 188935 # Command: qvm-run -ap whonix-gateway-18 'LC_ALL=C whonixcheck --v...
    • job 189348 # Command: qvm-run -ap whonix-gateway-18 'LC_ALL=C whonixcheck --v...
    whonixcheck/wait_serial (1/5 times with errors)
    • job 189348 # Command: curl --form upload=@/var/log/libvirt/libxl/libxl-driver....
  • system_tests_basic_vm_qrexec_gui_btrfs

    system_tests/Fail (1/5 times with errors)
    • job 188655 Tests qubes.tests.integ.basic failed (exit code 1), details reporte...
    system_tests/Fail (1/5 times with errors)
    • job 188655 Tests qubes.tests.integ.vm_qrexec_gui failed (exit code 1), details...
    system_tests/Failed (1/5 times with errors)
    • job 188655 # Test died: Some tests failed at qubesos/tests/system_tests.pm lin...
    TC_20_NonAudio_debian-13-xfce-pool/test_000_start_shutdown (1/5 times with errors)
    • job 188655 qubes.exc.QubesVMShutdownTimeoutError: Domain shutdown timed out: '...
    TC_00_Basic/test_210_bootmode_template (1/5 times with errors)
    • job 188655 qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...
  • system_tests_basic_vm_qrexec_gui_ext4

    system_tests/Fail (1/5 times with errors)
    • job 188955 Tests qubes.tests.integ.vm_qrexec_gui failed (exit code 1), details...
    system_tests/Failed (1/5 times with errors)
    • job 188955 # Test died: Some tests failed at qubesos/tests/system_tests.pm lin...
    TC_20_NonAudio_debian-13-xfce-pool/test_500_gui_agent_env_sync (1/5 times with errors)
    • job 188955 qubes.exc.QubesVMShutdownTimeoutError: Domain shutdown timed out: '...
    TC_20_NonAudio_fedora-43-xfce-pool/test_500_gui_agent_env_sync (1/5 times with errors)
    • job 188955 OSError: Volume /var/lib/qubes-pool/appvms/test-inst-envsync/privat...
    TC_20_NonAudio_whonix-gateway-18-pool/test_500_gui_agent_env_sync (1/5 times with errors)
    • job 188955 OSError: Volume /var/lib/qubes-pool/appvms/test-inst-envsync/privat...
    TC_20_NonAudio_whonix-workstation-18-pool/test_500_gui_agent_env_sync (1/5 times with errors)
    • job 188955 OSError: Volume /var/lib/qubes-pool/appvms/test-inst-envsync/privat...
  • system_tests_basic_vm_qrexec_gui_xfs

    startup/ (1/5 times with errors)
    system_tests/Fail (1/5 times with errors)
    • job 188956 Tests qubes.tests.integ.vm_qrexec_gui failed (exit code 1), details...
    startup/Failed (1/5 times with errors)
    • job 189154 # Test died: no candidate needle with tag(s) 'luks-prompt, login-pr...
    system_tests/Failed (1/5 times with errors)
    • job 188956 # Test died: Some tests failed at qubesos/tests/system_tests.pm lin...
    TC_20_NonAudio_fedora-43-xfce-pool/test_101_qrexec_filecopy_with_autostart (1/5 times with errors)
    • job 188956 AssertionError: qvm-copy-to-vm failed: b'In order to avoid typing t...
    TC_20_NonAudio_fedora-43-xfce-pool/test_400_long_window_title (1/5 times with errors)
    • job 188956 qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...
    startup/wait_serial (1/5 times with errors)
    • job 189154 # wait_serial expected: qr/login:\s*$|root@.*#\s*$/ui...
    startup/wait_serial (1/5 times with errors)
    • job 189154 # wait_serial expected: qr/PS1="root# "/u...
    startup/wait_serial (1/5 times with errors)
    startup/wait_serial (1/5 times with errors)
    • job 189154 # wait_serial expected: "export TERM=dumb; stty cols 2048 rows 25; ...
  • system_tests_gui_tools@hw7

    qui_widgets_update/ (1/5 times with errors)
    qui_widgets_update/ (1/5 times with errors)
    qui_widgets_update/Failed (1/5 times with errors)
    • job 189375 # Test died: no candidate needle with tag(s) 'qubes-update-finish' ...
  • system_tests_splitgpg

    system_tests/Failed (1/5 times with errors)
    • job 189167 # Test died: command 'testfunc qubes.tests.extra' timed out at qube...
    system_tests/wait_serial (1/5 times with errors)
    • job 189167 # Command: testfunc qubes.tests.extra...
  • system_tests_gui_tools

    qui_widgets_update/ (1/5 times with errors)
    qui_widgets_update/ (1/5 times with errors)
    qui_widgets_update/Failed (1/5 times with errors)
    • job 189375 # Test died: no candidate needle with tag(s) 'qubes-update-finish' ...

Performance Tests

Performance degradation:

9 performance degradations
  • whonix-gateway-18_exec-root: 152.87 🔻 ( previous job: 126.14, degradation: 121.19%)
  • whonix-gateway-18_exec-data-duplex-root: 152.89 🔻 ( previous job: 137.28, degradation: 111.37%)
  • whonix-gateway-18_socket-data-duplex: 111.01 🔻 ( previous job: 90.03, degradation: 123.30%)
  • whonix-workstation-18_exec-root: 160.59 🔻 ( previous job: 144.02, degradation: 111.50%)
  • whonix-workstation-18_socket: 8.86 🔻 ( previous job: 7.66, degradation: 115.67%)
  • whonix-workstation-18_exec-data-duplex-root: 155.56 🔻 ( previous job: 130.67, degradation: 119.05%)
  • dom0_root_rnd4k_q1t1_read 3:read_bandwidth_kb: 2044.00 🔻 ( previous job: 8963.00, degradation: 22.80%)
  • dom0_varlibqubes_rnd4k_q32t1_read 3:read_bandwidth_kb: 15494.00 🔻 ( previous job: 102155.00, degradation: 15.17%)
  • dom0_varlibqubes_rnd4k_q32t1_write 3:write_bandwidth_kb: 5157.00 🔻 ( previous job: 10623.00, degradation: 48.55%)

Remaining performance tests:

63 tests
  • debian-13-xfce_exec: 8.40 🔻 ( previous job: 7.85, degradation: 106.96%)
  • debian-13-xfce_exec-root: 27.23 🔻 ( previous job: 26.74, degradation: 101.84%)
  • debian-13-xfce_socket: 8.23 🟢 ( previous job: 8.37, improvement: 98.34%)
  • debian-13-xfce_socket-root: 9.13 🔻 ( previous job: 9.13, degradation: 100.08%)
  • debian-13-xfce_exec-data-simplex: 66.16 🔻 ( previous job: 63.05, degradation: 104.92%)
  • debian-13-xfce_exec-data-duplex: 66.27 🔻 ( previous job: 62.45, degradation: 106.12%)
  • debian-13-xfce_exec-data-duplex-root: 82.29 🔻 ( previous job: 78.04, degradation: 105.45%)
  • debian-13-xfce_socket-data-duplex: 83.85 🟢 ( previous job: 85.67, improvement: 97.88%)
  • fedora-44-xfce_exec: 9.19
  • fedora-44-xfce_exec-root: 70.23
  • fedora-44-xfce_socket: 8.76
  • fedora-44-xfce_socket-root: 8.87
  • fedora-44-xfce_exec-data-simplex: 67.46
  • fedora-44-xfce_exec-data-duplex: 70.96
  • fedora-44-xfce_exec-data-duplex-root: 114.92
  • fedora-44-xfce_socket-data-duplex: 82.18
  • whonix-gateway-18_exec: 8.54 🔻 ( previous job: 8.01, degradation: 106.62%)
  • whonix-gateway-18_socket: 8.32 🟢 ( previous job: 8.63, improvement: 96.44%)
  • whonix-gateway-18_socket-root: 8.36 🟢 ( previous job: 8.37, improvement: 99.85%)
  • whonix-gateway-18_exec-data-simplex: 63.76 🔻 ( previous job: 62.50, degradation: 102.01%)
  • whonix-gateway-18_exec-data-duplex: 65.93 🟢 ( previous job: 68.01, improvement: 96.94%)
  • whonix-workstation-18_exec: 8.20 🔻 ( previous job: 8.14, degradation: 100.75%)
  • whonix-workstation-18_socket-root: 8.34 🟢 ( previous job: 8.87, improvement: 94.05%)
  • whonix-workstation-18_exec-data-simplex: 64.16 🟢 ( previous job: 66.36, improvement: 96.69%)
  • whonix-workstation-18_exec-data-duplex: 70.58 🔻 ( previous job: 65.56, degradation: 107.67%)
  • whonix-workstation-18_socket-data-duplex: 91.32 🟢 ( previous job: 92.97, improvement: 98.22%)
  • dom0_root_seq1m_q8t1_read 3:read_bandwidth_kb: 381439.00 🔻 ( previous job: 388793.00, degradation: 98.11%)
  • dom0_root_seq1m_q8t1_write 3:write_bandwidth_kb: 205980.00 🟢 ( previous job: 119690.00, improvement: 172.09%)
  • dom0_root_seq1m_q1t1_read 3:read_bandwidth_kb: 285016.00 🟢 ( previous job: 245223.00, improvement: 116.23%)
  • dom0_root_seq1m_q1t1_write 3:write_bandwidth_kb: 186720.00 🔻 ( previous job: 199974.00, degradation: 93.37%)
  • dom0_root_rnd4k_q32t1_read 3:read_bandwidth_kb: 17294.00 🟢 ( previous job: 13948.00, improvement: 123.99%)
  • dom0_root_rnd4k_q32t1_write 3:write_bandwidth_kb: 7045.00 🟢 ( previous job: 6899.00, improvement: 102.12%)
  • dom0_root_rnd4k_q1t1_write 3:write_bandwidth_kb: 5110.00 🟢 ( previous job: 5055.00, improvement: 101.09%)
  • dom0_varlibqubes_seq1m_q8t1_read 3:read_bandwidth_kb: 425213.00 🔻 ( previous job: 429040.00, degradation: 99.11%)
  • dom0_varlibqubes_seq1m_q8t1_write 3:write_bandwidth_kb: 309771.00 🟢 ( previous job: 257066.00, improvement: 120.50%)
  • dom0_varlibqubes_seq1m_q1t1_read 3:read_bandwidth_kb: 446772.00 🟢 ( previous job: 446202.00, improvement: 100.13%)
  • dom0_varlibqubes_seq1m_q1t1_write 3:write_bandwidth_kb: 186627.00 🔻 ( previous job: 201978.00, degradation: 92.40%)
  • dom0_varlibqubes_rnd4k_q1t1_read 3:read_bandwidth_kb: 8625.00 🟢 ( previous job: 8179.00, improvement: 105.45%)
  • dom0_varlibqubes_rnd4k_q1t1_write 3:write_bandwidth_kb: 5109.00 🟢 ( previous job: 4404.00, improvement: 116.01%)
  • fedora-44-xfce_root_seq1m_q8t1_read 3:read_bandwidth_kb: 447344.00
  • fedora-44-xfce_root_seq1m_q8t1_write 3:write_bandwidth_kb: 125462.00
  • fedora-44-xfce_root_seq1m_q1t1_read 3:read_bandwidth_kb: 354368.00
  • fedora-44-xfce_root_seq1m_q1t1_write 3:write_bandwidth_kb: 50860.00
  • fedora-44-xfce_root_rnd4k_q32t1_read 3:read_bandwidth_kb: 56538.00
  • fedora-44-xfce_root_rnd4k_q32t1_write 3:write_bandwidth_kb: 2737.00
  • fedora-44-xfce_root_rnd4k_q1t1_read 3:read_bandwidth_kb: 8960.00
  • fedora-44-xfce_root_rnd4k_q1t1_write 3:write_bandwidth_kb: 441.00
  • fedora-44-xfce_private_seq1m_q8t1_read 3:read_bandwidth_kb: 318522.00
  • fedora-44-xfce_private_seq1m_q8t1_write 3:write_bandwidth_kb: 87058.00
  • fedora-44-xfce_private_seq1m_q1t1_read 3:read_bandwidth_kb: 341889.00
  • fedora-44-xfce_private_seq1m_q1t1_write 3:write_bandwidth_kb: 33349.00
  • fedora-44-xfce_private_rnd4k_q32t1_read 3:read_bandwidth_kb: 83027.00
  • fedora-44-xfce_private_rnd4k_q32t1_write 3:write_bandwidth_kb: 3357.00
  • fedora-44-xfce_private_rnd4k_q1t1_read 3:read_bandwidth_kb: 8038.00
  • fedora-44-xfce_private_rnd4k_q1t1_write 3:write_bandwidth_kb: 425.00
  • fedora-44-xfce_volatile_seq1m_q8t1_read 3:read_bandwidth_kb: 316121.00
  • fedora-44-xfce_volatile_seq1m_q8t1_write 3:write_bandwidth_kb: 76229.00
  • fedora-44-xfce_volatile_seq1m_q1t1_read 3:read_bandwidth_kb: 335651.00
  • fedora-44-xfce_volatile_seq1m_q1t1_write 3:write_bandwidth_kb: 21740.00
  • fedora-44-xfce_volatile_rnd4k_q32t1_read 3:read_bandwidth_kb: 66173.00
  • fedora-44-xfce_volatile_rnd4k_q32t1_write 3:write_bandwidth_kb: 2534.00
  • fedora-44-xfce_volatile_rnd4k_q1t1_read 3:read_bandwidth_kb: 4951.00
  • fedora-44-xfce_volatile_rnd4k_q1t1_write 3:write_bandwidth_kb: 1246.00

@codecov

codecov Bot commented Jul 28, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 86.23188% with 57 lines in your changes missing coverage. Please review.
✅ Project coverage is 92.79%. Comparing base (f93aab1) to head (0d6b277).

Files with missing lines Patch % Lines
qui/updater/progress_page.py 55.55% 28 Missing ⚠️
qui/updater/updater.py 73.84% 17 Missing ⚠️
qui/updater/summary_page.py 75.00% 8 Missing ⚠️
qui/updater/tests/conftest.py 62.50% 3 Missing ⚠️
qubes_config/tests/test_gtk_utils.py 94.11% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main     #322      +/-   ##
==========================================
+ Coverage   92.67%   92.79%   +0.11%     
==========================================
  Files          66       66              
  Lines       13631    13835     +204     
==========================================
+ Hits        12633    12838     +205     
+ Misses        998      997       -1     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Updater complains about unawaited tasks

3 participants