Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

A bunch of fixes to appmenus handling with GUI VM #60

Merged
merged 5 commits into from Oct 8, 2023

Conversation

marmarek
Copy link
Member

It is already called on various different occasions, but menu-items
change was missing.

Fixes QubesOS/qubes-issues#8494
@codecov
Copy link

codecov bot commented Sep 19, 2023

Codecov Report

Merging #60 (fdcbb35) into main (e56ecad) will decrease coverage by 0.14%.
The diff coverage is 16.66%.

@@            Coverage Diff             @@
##             main      #60      +/-   ##
==========================================
- Coverage   62.66%   62.53%   -0.14%     
==========================================
  Files           2        2              
  Lines         667      670       +3     
==========================================
+ Hits          418      419       +1     
- Misses        249      251       +2     
Flag Coverage Δ
unittests 62.53% <16.66%> (-0.14%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files Changed Coverage Δ
qubesappmenus/__init__.py 58.45% <16.66%> (-0.16%) ⬇️

Add two new qrexec services: qubes.UpdateAppmenusFor and qubes.RemoveAppmenusFor.
When menu-relevant properties are changed on a VM, call qvm-appmenus via
those new services, instead of directly. This gives a bit nicer
interface when calling it in GUI VM that is not dom0 - which is a
feature added here at the same time.

This also unifies create/update calls - now update will also initialize
directory structure if it wasn't there before.

Fixes QubesOS/qubes-issues#8528
VM settings (including apps to include in the menu) can be changed when
GUI VM is not running. In that case, queue menu update for when GUI VM
is next started, instead of just logging a warning

Related to QubesOS/qubes-issues#5804
When cloning a template, the menu-items may be already set by qvm-clone,
do not override it.

Fixes QubesOS/qubes-issues#8518
@qubesos-bot
Copy link

qubesos-bot commented Sep 19, 2023

OpenQA test summary

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

New failures, excluding unstable

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

  • system_tests_pvgrub_salt_storage

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

    • QubeManagerTest: test_226_global_settings (failure)
      AssertionError: Expected 'check_call' to be called once. Called 0 t...

    • QubeManagerTest: test_231_template_manager (failure)
      AssertionError: Expected 'check_call' to be called once. Called 0 t...

  • system_tests_whonix@hw1

  • system_tests_basic_vm_qrexec_gui@hw1

    • TC_20_AudioVM_Pulse_fedora-38-xfce: test_220_audio_play_pulseaudio (failure)
      AssertionError: Command 'paplay --format=float32le --rate=44100 --c...

    • TC_20_AudioVM_Pulse_fedora-38-xfce: test_225_audio_rec_unmuted_hvm (error)
      subprocess.CalledProcessError: Command 'qubes.WaitForSession' retur...

    • TC_20_NonAudio_debian-12-xfce: test_100_qrexec_filecopy (error)
      qubes.exc.QubesVMError: Cannot connect to qrexec agent for 60 secon...

    • TC_20_NonAudio_fedora-38-xfce: test_105_qrexec_filemove (error)
      qubes.exc.QubesVMError: Cannot connect to qrexec agent for 60 secon...

    • TC_20_NonAudio_whonix-workstation-17: test_130_qrexec_filemove_disk_full (error)
      subprocess.CalledProcessError: Command 'qubes.WaitForSession' retur...

  • system_tests_gui_interactive@hw1

    • clipboard_and_web: unnamed test (unknown)
    • clipboard_and_web: Failed (test died)
      # Test died: no candidate needle with tag(s) 'personal-firefox' mat...
  • system_tests_usbproxy

  • system_tests_qrexec

  • system_tests_basic_vm_qrexec_gui_xfs

  • system_tests_gui_tools@hw1

    • qui_widgets_devices: unnamed test (unknown)
    • qui_widgets_devices: Failed (test died)
      # Test died: no candidate needle with tag(s) 'qui-devices-dev-opene...
  • system_tests_kde_gui_interactive

    • gui_filecopy: unnamed test (unknown)
    • gui_filecopy: Failed (test died)
      # Test died: no candidate needle with tag(s) 'work-files' matched...
  • system_tests_splitgpg

Failed tests

28 failures
  • system_tests_pvgrub_salt_storage

    • [unstable] TC_41_HVMGrub_fedora-38-xfce: test_000_standalone_vm (error)
      qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...

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

  • system_tests_manager

    • QubeManagerTest: test_226_global_settings (failure)
      AssertionError: Expected 'check_call' to be called once. Called 0 t...

    • QubeManagerTest: test_231_template_manager (failure)
      AssertionError: Expected 'check_call' to be called once. Called 0 t...

  • system_tests_basic_vm_qrexec_gui_zfs

  • system_tests_whonix@hw1

    • [unstable] whonix_torbrowser: unnamed test (unknown)

    • [unstable] whonix_torbrowser: Failed (test died)
      # Test died: no candidate needle with tag(s) 'anon-whonix-tor-brows...

    • whonix_torbrowser: unnamed test (unknown)

  • system_tests_basic_vm_qrexec_gui@hw1

    • TC_20_AudioVM_Pulse_fedora-38-xfce: test_220_audio_play_pulseaudio (failure)
      AssertionError: Command 'paplay --format=float32le --rate=44100 --c...

    • TC_20_AudioVM_Pulse_fedora-38-xfce: test_225_audio_rec_unmuted_hvm (error)
      subprocess.CalledProcessError: Command 'qubes.WaitForSession' retur...

    • TC_20_NonAudio_debian-12-xfce: test_100_qrexec_filecopy (error)
      qubes.exc.QubesVMError: Cannot connect to qrexec agent for 60 secon...

    • TC_20_NonAudio_fedora-38-xfce: test_105_qrexec_filemove (error)
      qubes.exc.QubesVMError: Cannot connect to qrexec agent for 60 secon...

    • TC_20_NonAudio_whonix-workstation-17: test_130_qrexec_filemove_disk_full (error)
      subprocess.CalledProcessError: Command 'qubes.WaitForSession' retur...

  • system_tests_gui_interactive@hw1

    • clipboard_and_web: unnamed test (unknown)
    • clipboard_and_web: Failed (test died)
      # Test died: no candidate needle with tag(s) 'personal-firefox' mat...
  • system_tests_usbproxy

  • system_tests_qrexec

  • system_tests_basic_vm_qrexec_gui_xfs

  • system_tests_gui_tools@hw1

    • qui_widgets_devices: unnamed test (unknown)
    • qui_widgets_devices: Failed (test died)
      # Test died: no candidate needle with tag(s) 'qui-devices-dev-opene...
  • system_tests_kde_gui_interactive

    • gui_filecopy: unnamed test (unknown)
    • gui_filecopy: Failed (test died)
      # Test died: no candidate needle with tag(s) 'work-files' matched...
  • system_tests_splitgpg

Fixed failures

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

23 fixed
  • system_tests_whonix

  • system_tests_network

  • system_tests_manager

    • VMSettingsTest: test_26_default_dispvm (failure)
      self.assertTrue(self.vm.property_... AssertionError: False is not true
  • system_tests_guivm_gui_interactive

    • update_templates: Failed (test died)
      # Test died: command 'curl --form upload=@template-fedora-38-xfce-v...
  • system_tests_network_ipv6

    • VmIPv6Networking_fedora-38: test_040_inter_vm (error)
      qubes.exc.QubesMemoryError: Not enough memory to start domain 'test...

    • VmIPv6Networking_fedora-38: test_203_fake_ip_inter_vm_allow (error)
      qubes.exc.QubesMemoryError: Not enough memory to start domain 'test...

  • system_tests_dispvm

  • system_tests_qrexec

  • system_tests_splitgpg

Unstable tests

  • system_tests_whonix

    whonix_torbrowser/ (1/5 times with errors)
    whonix_torbrowser/ (1/5 times with errors)
    whonix_torbrowser/Failed (1/5 times with errors)
    • job 82385 # Test died: no candidate needle with tag(s) 'anon-whonix-tor-brows...
  • system_tests_suspend

    suspend/Failed (1/5 times with errors)
    • job 83088 # Test died: command 'true' timed out at /usr/lib/os-autoinst/autot...
    suspend/wait_serial (1/5 times with errors)
    • job 83088 # wait_serial expected: qr/p5~T5-\d+-/...
  • system_tests_basic_vm_qrexec_gui

    TC_00_Basic/test_120_start_standalone_with_cdrom_dom0 (1/5 times with errors)
    • job 80971 AssertionError: 1 != 0 : b'Timeout waiting for dom0:loop4 device to...
    TC_20_AudioVM_Pulse_debian-12-xfce/test_222_audio_rec_unmuted_pulseaudio (1/5 times with errors)
    • job 82899 qubes.exc.QubesVMError: Failed to attach audio input from dom0 to t...
    TC_20_AudioVM_Pulse_fedora-38-xfce/test_222_audio_rec_unmuted_pulseaudio (1/5 times with errors)
    • job 82367 AssertionError: frequency 3366.354981298878 not in specified range,...
    TC_20_NonAudio_whonix-gateway-17/test_300_bug_1028_gui_memory_pinning (1/5 times with errors)
    • job 82367 AssertionError: Dom0 window doesn't match VM window content, saved ...
  • system_tests_pvgrub_salt_storage

    TC_41_HVMGrub_fedora-38-xfce/test_000_standalone_vm (3/5 times with errors)
    • job 81879 qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...
    • job 82004 qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...
    • job 82379 qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...
  • system_tests_basic_vm_qrexec_gui_zfs

    TC_00_Basic/test_120_start_standalone_with_cdrom_dom0 (2/5 times with errors)
    • job 81872 AssertionError: 1 != 0 : b'Timeout waiting for dom0:loop4 device to...
    • job 82357 AssertionError: 1 != 0 : b'Timeout waiting for dom0:loop4 device to...
    TC_00_Basic/test_200_shutdown_event_race (1/5 times with errors)
    • job 82357 AssertionError: libvirt event impl drain timeout
    TC_00_Basic/test_202_udev_block_exclude_default (1/5 times with errors)
    • job 81872 raise exceptions.TimeoutError() from exc... TimeoutError
    TC_20_AudioVM_Pulse_debian-12-xfce-pool/test_222_audio_rec_unmuted_pulseaudio (1/5 times with errors)
    • job 81872 AssertionError: frequency 3379.6121459556007 not in specified range...
    TC_20_AudioVM_PipeWire_debian-12-xfce-pool/test_227_audio_rec_muted_pipewire (1/5 times with errors)
    • job 82889 subprocess.CalledProcessError: Command 'pkill pw-record' returned n...
  • system_tests_whonix@hw1

    whonix_torbrowser/ (1/5 times with errors)
    whonix_torbrowser/ (1/5 times with errors)
    whonix_torbrowser/Failed (1/5 times with errors)
    • job 82385 # Test died: no candidate needle with tag(s) 'anon-whonix-tor-brows...
  • system_tests_basic_vm_qrexec_gui@hw1

    TC_00_Basic/test_120_start_standalone_with_cdrom_dom0 (1/5 times with errors)
    • job 80971 AssertionError: 1 != 0 : b'Timeout waiting for dom0:loop4 device to...
    TC_20_AudioVM_Pulse_debian-12-xfce/test_222_audio_rec_unmuted_pulseaudio (1/5 times with errors)
    • job 82899 qubes.exc.QubesVMError: Failed to attach audio input from dom0 to t...
    TC_20_AudioVM_Pulse_fedora-38-xfce/test_222_audio_rec_unmuted_pulseaudio (1/5 times with errors)
    • job 82367 AssertionError: frequency 3366.354981298878 not in specified range,...
    TC_20_NonAudio_whonix-gateway-17/test_300_bug_1028_gui_memory_pinning (1/5 times with errors)
    • job 82367 AssertionError: Dom0 window doesn't match VM window content, saved ...
  • system_tests_suspend@hw1

    suspend/Failed (1/5 times with errors)
    • job 83088 # Test died: command 'true' timed out at /usr/lib/os-autoinst/autot...
    suspend/wait_serial (1/5 times with errors)
    • job 83088 # wait_serial expected: qr/p5~T5-\d+-/...
  • system_tests_network_ipv6

    VmIPv6Networking_debian-12-xfce/test_113_reattach_after_provider_kill (1/5 times with errors)
    • job 82377 raise exceptions.TimeoutError() from exc... TimeoutError
    VmIPv6Networking_fedora-38-xfce/test_540_ipv6_inter_vm (1/5 times with errors)
    • job 80991 qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...
  • system_tests_usbproxy

    TC_20_USBProxy_core3_whonix-workstation-17/test_070_attach_not_installed_front (1/5 times with errors)
    • job 81882 qubesusbproxy.core3ext.QubesUSBException: Device attach failed: 202...
  • system_tests_dispvm

    TC_20_DispVM_whonix-gateway-17/test_010_simple_dvm_run (1/5 times with errors)
    TC_20_DispVM_whonix-workstation-17/test_010_simple_dvm_run (1/5 times with errors)
    • job 81874 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^... AssertionError
    TC_20_DispVM_whonix-gateway-17/test_020_gui_app (1/5 times with errors)
    TC_20_DispVM_fedora-38-xfce/test_030_edit_file (2/5 times with errors)
    • job 81874 AssertionError: Timeout while waiting for disp[0-9]* window to show
    • job 82011 AssertionError: Timeout while waiting for disp[0-9]* window to show
    TC_20_DispVM_whonix-gateway-17/test_030_edit_file (1/5 times with errors)
    TC_20_DispVM_whonix-workstation-17/test_030_edit_file (2/5 times with errors)
    • job 81874 AssertionError: Timeout while waiting for disp[0-9]* window to show
    • job 82011 AssertionError: Timeout while waiting for disp[0-9]* window to show
    TC_20_DispVM_fedora-38-xfce/test_100_open_in_dispvm (1/5 times with errors)
    • job 81874 AssertionError: Timeout while waiting for disp[0-9]* window to show
    TC_20_DispVM_whonix-gateway-17/test_100_open_in_dispvm (1/5 times with errors)
    TC_20_DispVM_whonix-workstation-17/test_100_open_in_dispvm (2/5 times with errors)
    • job 81874 AssertionError: Timeout while waiting for disp[0-9]* window to show
    • job 82011 AssertionError: Timeout while waiting for disp[0-9]* window to show
  • system_tests_basic_vm_qrexec_gui_xfs

    TC_20_AudioVM_Pulse_debian-12-xfce-pool/test_221_audio_rec_muted_pulseaudio (1/5 times with errors)
    • job 82370 AssertionError: source-output for VM test-inst-vm1 not found
    TC_20_AudioVM_PipeWire_debian-12-xfce-pool/test_226_audio_playback_pipewire (2/5 times with errors)
    • job 82370 AssertionError: Command 'pw-play --format=f32 --rate=44100 --channe...
    • job 82902 AssertionError: Command 'pw-play --format=f32 --rate=44100 --channe...
    TC_20_NonAudio_whonix-gateway-17-pool/test_300_bug_1028_gui_memory_pinning (1/5 times with errors)
    • job 81871 AssertionError: Dom0 window doesn't match VM window content, saved ...
  • system_tests_basic_vm_qrexec_gui_btrfs

    TC_20_AudioVM_Pulse_debian-12-xfce-pool/test_220_audio_play_pulseaudio (1/5 times with errors)
    • job 81808 AssertionError: Command 'paplay --format=float32le --rate=44100 --c...
    TC_20_AudioVM_PipeWire_debian-12-xfce-pool/test_226_audio_playback_pipewire (1/5 times with errors)
    • job 81995 AssertionError: Command 'pw-play --format=f32 --rate=44100 --channe...
  • system_tests_basic_vm_qrexec_gui_ext4

    TC_30_Gui_daemon/test_000_clipboard (1/5 times with errors)
    • job 80996 qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...
    TC_00_Basic/test_120_start_standalone_with_cdrom_dom0 (1/5 times with errors)
    • job 81994 AssertionError: 1 != 0 : b'Timeout waiting for dom0:loop12 device t...
    TC_20_NonAudio_whonix-workstation-17-pool/test_130_qrexec_filemove_disk_full (1/5 times with errors)
    • job 82901 raise exceptions.TimeoutError() from exc... TimeoutError
    TC_20_AudioVM_Pulse_fedora-38-xfce-pool/test_222_audio_rec_unmuted_pulseaudio (1/5 times with errors)
    • job 82369 AssertionError: frequency 3252.494577006508 not in specified range,...
    TC_20_AudioVM_PipeWire_debian-12-xfce-pool/test_226_audio_playback_pipewire (1/5 times with errors)
    • job 81870 AssertionError: Command 'pw-play --format=f32 --rate=44100 --channe...
  • system_tests_network_updates

    TC_00_Dom0Upgrade_debian-12-xfce/test_001_update_check (1/3 times with errors)
    • job 82378 self.assertFalse(self.app.domains[... AssertionError: '1' is not false
    TC_00_Dom0Upgrade_fedora-38-xfce/test_001_update_check (1/3 times with errors)
    • job 82378 self.assertFalse(self.app.domains[... AssertionError: '1' is not false

@marmarek marmarek merged commit fdcbb35 into QubesOS:main Oct 8, 2023
1 of 4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
2 participants