Merge "libvirt: make unit tests concise by setup guest object"
This commit is contained in:
commit
0d696adcea
@ -43,14 +43,14 @@ class GuestTestCase(test.NoDBTestCase):
|
|||||||
self.host = host.Host("qemu:///system")
|
self.host = host.Host("qemu:///system")
|
||||||
self.context = context.get_admin_context()
|
self.context = context.get_admin_context()
|
||||||
|
|
||||||
def test_repr(self):
|
self.domain = mock.Mock(spec=fakelibvirt.virDomain)
|
||||||
domain = mock.Mock(spec=fakelibvirt.virDomain)
|
self.guest = libvirt_guest.Guest(self.domain)
|
||||||
domain.ID.return_value = 99
|
|
||||||
domain.UUIDString.return_value = "UUID"
|
|
||||||
domain.name.return_value = "foo"
|
|
||||||
|
|
||||||
guest = libvirt_guest.Guest(domain)
|
def test_repr(self):
|
||||||
self.assertEqual("<Guest 99 foo UUID>", repr(guest))
|
self.domain.ID.return_value = 99
|
||||||
|
self.domain.UUIDString.return_value = "UUID"
|
||||||
|
self.domain.name.return_value = "foo"
|
||||||
|
self.assertEqual("<Guest 99 foo UUID>", repr(self.guest))
|
||||||
|
|
||||||
@mock.patch.object(fakelibvirt.Connection, 'defineXML')
|
@mock.patch.object(fakelibvirt.Connection, 'defineXML')
|
||||||
def test_create(self, mock_define):
|
def test_create(self, mock_define):
|
||||||
@ -65,39 +65,26 @@ class GuestTestCase(test.NoDBTestCase):
|
|||||||
"foo", self.host)
|
"foo", self.host)
|
||||||
|
|
||||||
def test_launch(self):
|
def test_launch(self):
|
||||||
domain = mock.Mock(spec=fakelibvirt.virDomain)
|
self.guest.launch()
|
||||||
|
self.domain.createWithFlags.assert_called_once_with(0)
|
||||||
guest = libvirt_guest.Guest(domain)
|
|
||||||
guest.launch()
|
|
||||||
|
|
||||||
domain.createWithFlags.assert_called_once_with(0)
|
|
||||||
|
|
||||||
def test_launch_and_pause(self):
|
def test_launch_and_pause(self):
|
||||||
domain = mock.Mock(spec=fakelibvirt.virDomain)
|
self.guest.launch(pause=True)
|
||||||
|
self.domain.createWithFlags.assert_called_once_with(
|
||||||
guest = libvirt_guest.Guest(domain)
|
|
||||||
guest.launch(pause=True)
|
|
||||||
|
|
||||||
domain.createWithFlags.assert_called_once_with(
|
|
||||||
fakelibvirt.VIR_DOMAIN_START_PAUSED)
|
fakelibvirt.VIR_DOMAIN_START_PAUSED)
|
||||||
|
|
||||||
@mock.patch.object(encodeutils, 'safe_decode')
|
@mock.patch.object(encodeutils, 'safe_decode')
|
||||||
def test_launch_exception(self, mock_safe_decode):
|
def test_launch_exception(self, mock_safe_decode):
|
||||||
domain = mock.Mock(spec=fakelibvirt.virDomain)
|
self.domain.createWithFlags.side_effect = test.TestingException
|
||||||
domain.createWithFlags.side_effect = test.TestingException
|
|
||||||
mock_safe_decode.return_value = "</xml>"
|
mock_safe_decode.return_value = "</xml>"
|
||||||
|
self.assertRaises(test.TestingException, self.guest.launch)
|
||||||
guest = libvirt_guest.Guest(domain)
|
|
||||||
self.assertRaises(test.TestingException, guest.launch)
|
|
||||||
self.assertEqual(1, mock_safe_decode.called)
|
self.assertEqual(1, mock_safe_decode.called)
|
||||||
|
|
||||||
@mock.patch.object(utils, 'execute')
|
@mock.patch.object(utils, 'execute')
|
||||||
@mock.patch.object(libvirt_guest.Guest, 'get_interfaces')
|
@mock.patch.object(libvirt_guest.Guest, 'get_interfaces')
|
||||||
def test_enable_hairpin(self, mock_get_interfaces, mock_execute):
|
def test_enable_hairpin(self, mock_get_interfaces, mock_execute):
|
||||||
mock_get_interfaces.return_value = ["vnet0", "vnet1"]
|
mock_get_interfaces.return_value = ["vnet0", "vnet1"]
|
||||||
|
self.guest.enable_hairpin()
|
||||||
guest = libvirt_guest.Guest(mock.MagicMock())
|
|
||||||
guest.enable_hairpin()
|
|
||||||
mock_execute.assert_has_calls([
|
mock_execute.assert_has_calls([
|
||||||
mock.call(
|
mock.call(
|
||||||
'tee', '/sys/class/net/vnet0/brport/hairpin_mode',
|
'tee', '/sys/class/net/vnet0/brport/hairpin_mode',
|
||||||
@ -114,14 +101,11 @@ class GuestTestCase(test.NoDBTestCase):
|
|||||||
mock_get_interfaces.return_value = ["foo"]
|
mock_get_interfaces.return_value = ["foo"]
|
||||||
mock_execute.side_effect = test.TestingException('oops')
|
mock_execute.side_effect = test.TestingException('oops')
|
||||||
|
|
||||||
guest = libvirt_guest.Guest(mock.MagicMock())
|
self.assertRaises(test.TestingException, self.guest.enable_hairpin)
|
||||||
self.assertRaises(test.TestingException, guest.enable_hairpin)
|
|
||||||
self.assertEqual(1, mock_safe_decode.called)
|
self.assertEqual(1, mock_safe_decode.called)
|
||||||
|
|
||||||
def test_get_interfaces(self):
|
def test_get_interfaces(self):
|
||||||
dom = mock.Mock(spec=fakelibvirt.virDomain)
|
self.domain.XMLDesc.return_value = """<domain>
|
||||||
dom.XMLDesc.return_value = """
|
|
||||||
<domain>
|
|
||||||
<devices>
|
<devices>
|
||||||
<interface type="network">
|
<interface type="network">
|
||||||
<target dev="vnet0"/>
|
<target dev="vnet0"/>
|
||||||
@ -131,211 +115,138 @@ class GuestTestCase(test.NoDBTestCase):
|
|||||||
</interface>
|
</interface>
|
||||||
</devices>
|
</devices>
|
||||||
</domain>"""
|
</domain>"""
|
||||||
guest = libvirt_guest.Guest(dom)
|
self.assertEqual(["vnet0", "vnet1"], self.guest.get_interfaces())
|
||||||
self.assertEqual(["vnet0", "vnet1"], guest.get_interfaces())
|
|
||||||
|
|
||||||
def test_get_interfaces_exception(self):
|
def test_get_interfaces_exception(self):
|
||||||
dom = mock.Mock(spec=fakelibvirt.virDomain)
|
self.domain.XMLDesc.return_value = "<bad xml>"
|
||||||
dom.XMLDesc.return_value = "<bad xml>"
|
self.assertEqual([], self.guest.get_interfaces())
|
||||||
guest = libvirt_guest.Guest(dom)
|
|
||||||
self.assertEqual([], guest.get_interfaces())
|
|
||||||
|
|
||||||
def test_poweroff(self):
|
def test_poweroff(self):
|
||||||
domain = mock.Mock(spec=fakelibvirt.virDomain)
|
self.guest.poweroff()
|
||||||
|
self.domain.destroy.assert_called_once_with()
|
||||||
guest = libvirt_guest.Guest(domain)
|
|
||||||
guest.poweroff()
|
|
||||||
|
|
||||||
domain.destroy.assert_called_once_with()
|
|
||||||
|
|
||||||
def test_resume(self):
|
def test_resume(self):
|
||||||
domain = mock.Mock(spec=fakelibvirt.virDomain)
|
self.guest.resume()
|
||||||
|
self.domain.resume.assert_called_once_with()
|
||||||
guest = libvirt_guest.Guest(domain)
|
|
||||||
guest.resume()
|
|
||||||
|
|
||||||
domain.resume.assert_called_once_with()
|
|
||||||
|
|
||||||
def test_get_vcpus_info(self):
|
def test_get_vcpus_info(self):
|
||||||
domain = mock.Mock(spec=fakelibvirt.virDomain)
|
self.domain.vcpus.return_value = ([(0, 1, 10290000000L, 2)],
|
||||||
domain.vcpus.return_value = ([(0, 1, 10290000000L, 2)],
|
|
||||||
[(True, True)])
|
[(True, True)])
|
||||||
guest = libvirt_guest.Guest(domain)
|
vcpus = list(self.guest.get_vcpus_info())
|
||||||
vcpus = list(guest.get_vcpus_info())
|
|
||||||
self.assertEqual(0, vcpus[0].id)
|
self.assertEqual(0, vcpus[0].id)
|
||||||
self.assertEqual(2, vcpus[0].cpu)
|
self.assertEqual(2, vcpus[0].cpu)
|
||||||
self.assertEqual(1, vcpus[0].state)
|
self.assertEqual(1, vcpus[0].state)
|
||||||
self.assertEqual(10290000000L, vcpus[0].time)
|
self.assertEqual(10290000000L, vcpus[0].time)
|
||||||
|
|
||||||
def test_delete_configuration(self):
|
def test_delete_configuration(self):
|
||||||
domain = mock.Mock(spec=fakelibvirt.virDomain)
|
self.guest.delete_configuration()
|
||||||
|
self.domain.undefineFlags.assert_called_once_with(
|
||||||
guest = libvirt_guest.Guest(domain)
|
|
||||||
guest.delete_configuration()
|
|
||||||
|
|
||||||
domain.undefineFlags.assert_called_once_with(
|
|
||||||
fakelibvirt.VIR_DOMAIN_UNDEFINE_MANAGED_SAVE)
|
fakelibvirt.VIR_DOMAIN_UNDEFINE_MANAGED_SAVE)
|
||||||
|
|
||||||
def test_delete_configuration_exception(self):
|
def test_delete_configuration_exception(self):
|
||||||
domain = mock.Mock(spec=fakelibvirt.virDomain)
|
self.domain.undefineFlags.side_effect = fakelibvirt.libvirtError(
|
||||||
domain.undefineFlags.side_effect = fakelibvirt.libvirtError('oops')
|
'oops')
|
||||||
domain.ID.return_value = 1
|
self.domain.ID.return_value = 1
|
||||||
|
self.guest.delete_configuration()
|
||||||
guest = libvirt_guest.Guest(domain)
|
self.domain.undefine.assert_called_once_with()
|
||||||
guest.delete_configuration()
|
|
||||||
|
|
||||||
domain.undefine.assert_called_once_with()
|
|
||||||
|
|
||||||
def test_attach_device(self):
|
def test_attach_device(self):
|
||||||
domain = mock.Mock(spec=fakelibvirt.virDomain)
|
|
||||||
conf = mock.Mock(spec=vconfig.LibvirtConfigGuestDevice)
|
conf = mock.Mock(spec=vconfig.LibvirtConfigGuestDevice)
|
||||||
conf.to_xml.return_value = "</xml>"
|
conf.to_xml.return_value = "</xml>"
|
||||||
|
self.guest.attach_device(conf)
|
||||||
guest = libvirt_guest.Guest(domain)
|
self.domain.attachDeviceFlags.assert_called_once_with(
|
||||||
guest.attach_device(conf)
|
"</xml>", flags=0)
|
||||||
|
|
||||||
domain.attachDeviceFlags.assert_called_once_with("</xml>", flags=0)
|
|
||||||
|
|
||||||
def test_attach_device_persistent(self):
|
def test_attach_device_persistent(self):
|
||||||
domain = mock.Mock(spec=fakelibvirt.virDomain)
|
|
||||||
conf = mock.Mock(spec=vconfig.LibvirtConfigGuestDevice)
|
conf = mock.Mock(spec=vconfig.LibvirtConfigGuestDevice)
|
||||||
conf.to_xml.return_value = "</xml>"
|
conf.to_xml.return_value = "</xml>"
|
||||||
|
self.guest.attach_device(conf, persistent=True)
|
||||||
guest = libvirt_guest.Guest(domain)
|
self.domain.attachDeviceFlags.assert_called_once_with(
|
||||||
guest.attach_device(conf, persistent=True)
|
|
||||||
|
|
||||||
domain.attachDeviceFlags.assert_called_once_with(
|
|
||||||
"</xml>", flags=fakelibvirt.VIR_DOMAIN_AFFECT_CONFIG)
|
"</xml>", flags=fakelibvirt.VIR_DOMAIN_AFFECT_CONFIG)
|
||||||
|
|
||||||
def test_attach_device_live(self):
|
def test_attach_device_live(self):
|
||||||
domain = mock.Mock(spec=fakelibvirt.virDomain)
|
|
||||||
conf = mock.Mock(spec=vconfig.LibvirtConfigGuestDevice)
|
conf = mock.Mock(spec=vconfig.LibvirtConfigGuestDevice)
|
||||||
conf.to_xml.return_value = "</xml>"
|
conf.to_xml.return_value = "</xml>"
|
||||||
|
self.guest.attach_device(conf, live=True)
|
||||||
guest = libvirt_guest.Guest(domain)
|
self.domain.attachDeviceFlags.assert_called_once_with(
|
||||||
guest.attach_device(conf, live=True)
|
|
||||||
|
|
||||||
domain.attachDeviceFlags.assert_called_once_with(
|
|
||||||
"</xml>", flags=fakelibvirt.VIR_DOMAIN_AFFECT_LIVE)
|
"</xml>", flags=fakelibvirt.VIR_DOMAIN_AFFECT_LIVE)
|
||||||
|
|
||||||
def test_attach_device_persistent_live(self):
|
def test_attach_device_persistent_live(self):
|
||||||
domain = mock.Mock(spec=fakelibvirt.virDomain)
|
|
||||||
conf = mock.Mock(spec=vconfig.LibvirtConfigGuestDevice)
|
conf = mock.Mock(spec=vconfig.LibvirtConfigGuestDevice)
|
||||||
conf.to_xml.return_value = "</xml>"
|
conf.to_xml.return_value = "</xml>"
|
||||||
|
self.guest.attach_device(conf, persistent=True, live=True)
|
||||||
guest = libvirt_guest.Guest(domain)
|
self.domain.attachDeviceFlags.assert_called_once_with(
|
||||||
guest.attach_device(conf, persistent=True, live=True)
|
|
||||||
|
|
||||||
domain.attachDeviceFlags.assert_called_once_with(
|
|
||||||
"</xml>", flags=(fakelibvirt.VIR_DOMAIN_AFFECT_CONFIG |
|
"</xml>", flags=(fakelibvirt.VIR_DOMAIN_AFFECT_CONFIG |
|
||||||
fakelibvirt.VIR_DOMAIN_AFFECT_LIVE))
|
fakelibvirt.VIR_DOMAIN_AFFECT_LIVE))
|
||||||
|
|
||||||
def test_detach_device(self):
|
def test_detach_device(self):
|
||||||
domain = mock.Mock(spec=fakelibvirt.virDomain)
|
|
||||||
conf = mock.Mock(spec=vconfig.LibvirtConfigGuestDevice)
|
conf = mock.Mock(spec=vconfig.LibvirtConfigGuestDevice)
|
||||||
conf.to_xml.return_value = "</xml>"
|
conf.to_xml.return_value = "</xml>"
|
||||||
|
self.guest.detach_device(conf)
|
||||||
guest = libvirt_guest.Guest(domain)
|
self.domain.detachDeviceFlags.assert_called_once_with(
|
||||||
guest.detach_device(conf)
|
"</xml>", flags=0)
|
||||||
|
|
||||||
domain.detachDeviceFlags.assert_called_once_with("</xml>", flags=0)
|
|
||||||
|
|
||||||
def test_detach_device_persistent(self):
|
def test_detach_device_persistent(self):
|
||||||
domain = mock.Mock(spec=fakelibvirt.virDomain)
|
|
||||||
conf = mock.Mock(spec=vconfig.LibvirtConfigGuestDevice)
|
conf = mock.Mock(spec=vconfig.LibvirtConfigGuestDevice)
|
||||||
conf.to_xml.return_value = "</xml>"
|
conf.to_xml.return_value = "</xml>"
|
||||||
|
self.guest.detach_device(conf, persistent=True)
|
||||||
guest = libvirt_guest.Guest(domain)
|
self.domain.detachDeviceFlags.assert_called_once_with(
|
||||||
guest.detach_device(conf, persistent=True)
|
|
||||||
|
|
||||||
domain.detachDeviceFlags.assert_called_once_with(
|
|
||||||
"</xml>", flags=fakelibvirt.VIR_DOMAIN_AFFECT_CONFIG)
|
"</xml>", flags=fakelibvirt.VIR_DOMAIN_AFFECT_CONFIG)
|
||||||
|
|
||||||
def test_detach_device_live(self):
|
def test_detach_device_live(self):
|
||||||
domain = mock.Mock(spec=fakelibvirt.virDomain)
|
|
||||||
conf = mock.Mock(spec=vconfig.LibvirtConfigGuestDevice)
|
conf = mock.Mock(spec=vconfig.LibvirtConfigGuestDevice)
|
||||||
conf.to_xml.return_value = "</xml>"
|
conf.to_xml.return_value = "</xml>"
|
||||||
|
self.guest.detach_device(conf, live=True)
|
||||||
guest = libvirt_guest.Guest(domain)
|
self.domain.detachDeviceFlags.assert_called_once_with(
|
||||||
guest.detach_device(conf, live=True)
|
|
||||||
|
|
||||||
domain.detachDeviceFlags.assert_called_once_with(
|
|
||||||
"</xml>", flags=fakelibvirt.VIR_DOMAIN_AFFECT_LIVE)
|
"</xml>", flags=fakelibvirt.VIR_DOMAIN_AFFECT_LIVE)
|
||||||
|
|
||||||
def test_detach_device_persistent_live(self):
|
def test_detach_device_persistent_live(self):
|
||||||
domain = mock.Mock(spec=fakelibvirt.virDomain)
|
|
||||||
conf = mock.Mock(spec=vconfig.LibvirtConfigGuestDevice)
|
conf = mock.Mock(spec=vconfig.LibvirtConfigGuestDevice)
|
||||||
conf.to_xml.return_value = "</xml>"
|
conf.to_xml.return_value = "</xml>"
|
||||||
|
self.guest.detach_device(conf, persistent=True, live=True)
|
||||||
guest = libvirt_guest.Guest(domain)
|
self.domain.detachDeviceFlags.assert_called_once_with(
|
||||||
guest.detach_device(conf, persistent=True, live=True)
|
|
||||||
|
|
||||||
domain.detachDeviceFlags.assert_called_once_with(
|
|
||||||
"</xml>", flags=(fakelibvirt.VIR_DOMAIN_AFFECT_CONFIG |
|
"</xml>", flags=(fakelibvirt.VIR_DOMAIN_AFFECT_CONFIG |
|
||||||
fakelibvirt.VIR_DOMAIN_AFFECT_LIVE))
|
fakelibvirt.VIR_DOMAIN_AFFECT_LIVE))
|
||||||
|
|
||||||
def test_get_xml_desc(self):
|
def test_get_xml_desc(self):
|
||||||
domain = mock.Mock(spec=fakelibvirt.virDomain)
|
self.guest.get_xml_desc()
|
||||||
guest = libvirt_guest.Guest(domain)
|
self.domain.XMLDesc.assert_called_once_with(flags=0)
|
||||||
guest.get_xml_desc()
|
|
||||||
|
|
||||||
domain.XMLDesc.assert_called_once_with(flags=0)
|
|
||||||
|
|
||||||
def test_get_xml_desc_dump_inactive(self):
|
def test_get_xml_desc_dump_inactive(self):
|
||||||
domain = mock.Mock(spec=fakelibvirt.virDomain)
|
self.guest.get_xml_desc(dump_inactive=True)
|
||||||
guest = libvirt_guest.Guest(domain)
|
self.domain.XMLDesc.assert_called_once_with(
|
||||||
guest.get_xml_desc(dump_inactive=True)
|
|
||||||
|
|
||||||
domain.XMLDesc.assert_called_once_with(
|
|
||||||
flags=fakelibvirt.VIR_DOMAIN_XML_INACTIVE)
|
flags=fakelibvirt.VIR_DOMAIN_XML_INACTIVE)
|
||||||
|
|
||||||
def test_get_xml_desc_dump_sensitive(self):
|
def test_get_xml_desc_dump_sensitive(self):
|
||||||
domain = mock.Mock(spec=fakelibvirt.virDomain)
|
self.guest.get_xml_desc(dump_sensitive=True)
|
||||||
guest = libvirt_guest.Guest(domain)
|
self.domain.XMLDesc.assert_called_once_with(
|
||||||
guest.get_xml_desc(dump_sensitive=True)
|
|
||||||
|
|
||||||
domain.XMLDesc.assert_called_once_with(
|
|
||||||
flags=fakelibvirt.VIR_DOMAIN_XML_SECURE)
|
flags=fakelibvirt.VIR_DOMAIN_XML_SECURE)
|
||||||
|
|
||||||
def test_get_xml_desc_dump_inactive_dump_sensitive(self):
|
def test_get_xml_desc_dump_inactive_dump_sensitive(self):
|
||||||
domain = mock.Mock(spec=fakelibvirt.virDomain)
|
self.guest.get_xml_desc(dump_inactive=True, dump_sensitive=True)
|
||||||
guest = libvirt_guest.Guest(domain)
|
self.domain.XMLDesc.assert_called_once_with(
|
||||||
guest.get_xml_desc(dump_inactive=True, dump_sensitive=True)
|
|
||||||
|
|
||||||
domain.XMLDesc.assert_called_once_with(
|
|
||||||
flags=(fakelibvirt.VIR_DOMAIN_XML_INACTIVE |
|
flags=(fakelibvirt.VIR_DOMAIN_XML_INACTIVE |
|
||||||
fakelibvirt.VIR_DOMAIN_XML_SECURE))
|
fakelibvirt.VIR_DOMAIN_XML_SECURE))
|
||||||
|
|
||||||
def test_get_xml_desc_dump_migratable(self):
|
def test_get_xml_desc_dump_migratable(self):
|
||||||
domain = mock.Mock(spec=fakelibvirt.virDomain)
|
self.guest.get_xml_desc(dump_migratable=True)
|
||||||
guest = libvirt_guest.Guest(domain)
|
self.domain.XMLDesc.assert_called_once_with(
|
||||||
guest.get_xml_desc(dump_migratable=True)
|
|
||||||
|
|
||||||
domain.XMLDesc.assert_called_once_with(
|
|
||||||
flags=fakelibvirt.VIR_DOMAIN_XML_MIGRATABLE)
|
flags=fakelibvirt.VIR_DOMAIN_XML_MIGRATABLE)
|
||||||
|
|
||||||
def test_has_persistent_configuration(self):
|
def test_has_persistent_configuration(self):
|
||||||
domain = mock.Mock(spec=fakelibvirt.virDomain)
|
|
||||||
guest = libvirt_guest.Guest(domain)
|
|
||||||
self.assertTrue(
|
self.assertTrue(
|
||||||
guest.has_persistent_configuration())
|
self.guest.has_persistent_configuration())
|
||||||
domain.isPersistent.assert_called_once_with()
|
self.domain.isPersistent.assert_called_once_with()
|
||||||
|
|
||||||
def test_save_memory_state(self):
|
def test_save_memory_state(self):
|
||||||
domain = mock.Mock(spec=fakelibvirt.virDomain)
|
self.guest.save_memory_state()
|
||||||
guest = libvirt_guest.Guest(domain)
|
self.domain.managedSave.assert_called_once_with(0)
|
||||||
guest.save_memory_state()
|
|
||||||
|
|
||||||
domain.managedSave.assert_called_once_with(0)
|
|
||||||
|
|
||||||
def test_get_block_device(self):
|
def test_get_block_device(self):
|
||||||
domain = mock.Mock(spec=fakelibvirt.virDomain)
|
|
||||||
guest = libvirt_guest.Guest(domain)
|
|
||||||
disk = 'vda'
|
disk = 'vda'
|
||||||
|
gblock = self.guest.get_block_device(disk)
|
||||||
gblock = guest.get_block_device(disk)
|
|
||||||
self.assertEqual(disk, gblock._disk)
|
self.assertEqual(disk, gblock._disk)
|
||||||
self.assertEqual(guest, gblock._guest)
|
self.assertEqual(self.guest, gblock._guest)
|
||||||
|
|
||||||
|
|
||||||
class GuestBlockTestCase(test.NoDBTestCase):
|
class GuestBlockTestCase(test.NoDBTestCase):
|
||||||
|
Loading…
Reference in New Issue
Block a user