Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions qubes/tests/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -1536,6 +1536,7 @@ def load_tests(loader, tests, pattern): # pylint: disable=unused-argument
'qubes.tests.integ.network_ipv6',
'qubes.tests.integ.dispvm',
'qubes.tests.integ.vm_qrexec_gui',
'qubes.tests.integ.audio',
'qubes.tests.integ.mime',
'qubes.tests.integ.salt',
'qubes.tests.integ.backup',
Expand Down
478 changes: 478 additions & 0 deletions qubes/tests/integ/audio.py

Large diffs are not rendered by default.

18 changes: 17 additions & 1 deletion qubes/tests/integ/network.py
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,6 @@ def test_000_simple_networking(self):
self.assertEqual(self.run_cmd(self.testvm1, self.ping_ip), 0)
self.assertEqual(self.run_cmd(self.testvm1, self.ping_name), 0)


def test_010_simple_proxyvm(self):
'''
:type self: qubes.tests.SystemTestCase | VMNetworkingMixin
Expand All @@ -188,6 +187,23 @@ def test_010_simple_proxyvm(self):
self.assertEqual(self.run_cmd(self.testvm1, self.ping_name), 0,
"Ping by IP from AppVM failed")

self.proxy.netvm = None
self.loop.run_until_complete(self.testnetvm.shutdown(wait=True))
# change IP to test if all info is updated, especially DNS redirect
self.test_ip = '192.168.45.123'
self.ping_ip = self.ping_cmd.format(target=self.test_ip)
self.configure_netvm()
self.proxy.netvm = self.testnetvm
self.loop.run_until_complete(asyncio.sleep(1))

self.assertEqual(self.run_cmd(self.proxy, self.ping_ip), 0,
"Ping by IP from ProxyVM failed (after switch)")
self.assertEqual(self.run_cmd(self.proxy, self.ping_name), 0,
"Ping by name from ProxyVM failed (after switch)")
self.assertEqual(self.run_cmd(self.testvm1, self.ping_ip), 0,
"Ping by IP from AppVM failed (after switch)")
self.assertEqual(self.run_cmd(self.testvm1, self.ping_name), 0,
"Ping by IP from AppVM failed (after switch)")

@qubes.tests.expectedFailureIfTemplate('debian-7')
@unittest.skipUnless(spawn.find_executable('xdotool'),
Expand Down
440 changes: 1 addition & 439 deletions qubes/tests/integ/vm_qrexec_gui.py

Large diffs are not rendered by default.

10 changes: 9 additions & 1 deletion qubes/vm/mix/net.py
Original file line number Diff line number Diff line change
Expand Up @@ -583,11 +583,19 @@ def on_domain_qdb_create(self, event):
self.set_mapped_ip_info_for_vm(vm)
self.reload_firewall_for_vm(vm)

@qubes.events.handler('firewall-changed', 'domain-spawn')
@qubes.events.handler('firewall-changed')
def on_firewall_changed(self, event, **kwargs):
''' Reloads the firewall if vm is running and has a NetVM assigned '''
# pylint: disable=unused-argument
if self.is_running() and self.netvm:
self.netvm.reload_firewall_for_vm(self) # pylint: disable=no-member

@qubes.events.handler('domain-pre-spawn')
def on_pre_spawn(self, event, **kwargs):
""" Prepare qubesdb in netvm entries before relevant interface
is created """
# pylint: disable=unused-argument
if self.netvm:
self.netvm.reload_connected_ips()
self.netvm.set_mapped_ip_info_for_vm(self)
self.netvm.reload_firewall_for_vm(self) # pylint: disable=no-member
Expand Down
17 changes: 17 additions & 0 deletions qubes/vm/qubesvm.py
Original file line number Diff line number Diff line change
Expand Up @@ -280,6 +280,19 @@ class QubesVM(qubes.vm.mix.net.NetVMMixin, qubes.vm.BaseVM):

*other arguments are as in :py:meth:`start`*

.. event:: domain-pre-spawn (subject, event, start_guid)

Fired just before creating libvirt domain.
But after preparation steps - verifying storage, requesting memory,
starting netvm etc.

:param subject: Event emitter (the qube object)
:param event: Event name (``'domain-pre-spawn'``)

Handler for this event may be asynchronous.

*other arguments are as in :py:meth:`start`*

.. event:: domain-spawn (subject, event, start_guid)

Fired after creating libvirt domain.
Expand Down Expand Up @@ -1208,6 +1221,10 @@ async def start(self, start_guid=True, notify_function=None,
raise

try:
await self.fire_event_async('domain-pre-spawn',
pre_event=True,
start_guid=start_guid)

self._update_libvirt_domain()

self.libvirt_domain.createWithFlags(
Expand Down
1 change: 1 addition & 0 deletions rpm_spec/core-dom0.spec.in
Original file line number Diff line number Diff line change
Expand Up @@ -506,6 +506,7 @@ done
%dir %{python3_sitelib}/qubes/tests/integ/__pycache__
%{python3_sitelib}/qubes/tests/integ/__pycache__/*
%{python3_sitelib}/qubes/tests/integ/__init__.py
%{python3_sitelib}/qubes/tests/integ/audio.py
%{python3_sitelib}/qubes/tests/integ/backup.py
%{python3_sitelib}/qubes/tests/integ/backupcompatibility.py
%{python3_sitelib}/qubes/tests/integ/backupdispvm.py
Expand Down