def test(self): """Test debmarshal.privops.main. Beacuse this is so tied to the system dbus session, which we can't even get to as a non-privileged user, we pretty much have to mock out everything. """ bus = self.mox.CreateMock(dbus.bus.BusConnection) name = self.mox.CreateMock(dbus.service.BusName) dbus_obj = self.mox.CreateMock(privops.Privops) loop = self.mox.CreateMock(gobject.MainLoop) self.mox.StubOutWithMock(dbus.mainloop.glib, 'DBusGMainLoop') self.mox.StubOutWithMock(dbus, 'SystemBus', use_mock_anything=True) self.mox.StubOutWithMock(dbus.service, 'BusName', use_mock_anything=True) self.mox.StubOutWithMock(privops, 'Privops', use_mock_anything=True) self.mox.StubOutWithMock(gobject, 'MainLoop', use_mock_anything=True) self.mox.StubOutWithMock(gobject, 'timeout_add_seconds') dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) dbus.SystemBus().AndReturn(bus) dbus.service.BusName(privops.DBUS_BUS_NAME, bus).AndReturn(name) privops.Privops(name, privops.DBUS_OBJECT_PATH).AndReturn(dbus_obj) gobject.MainLoop().AndReturn(loop) loop.run() self.mox.ReplayAll() privops.main()
def testNoNetwork(self): """Test that destroyNetwork doesn't try to delete a network it doesn't know about""" self.mox.ReplayAll() self.assertRaises(errors.NetworkNotFound, privops.Privops().destroyNetwork, 'debmarshal-3')
def testNoNetwork(self): """Test destroyDomain with a nonexistent domain.""" self.mox.ReplayAll() self.assertRaises(errors.DomainNotFound, privops.Privops().destroyDomain, 'debmarshal-3', 'qemu')
def testNoPermissions(self): """Test destroyDomain with a network owned by someone else.""" self.mox.StubOutWithMock(utils, 'getCaller') utils.getCaller().MultipleTimes().AndReturn(500) self.mox.ReplayAll() self.assertRaises(errors.AccessDenied, privops.Privops().destroyDomain, 'debmarshal-1', 'qemu')
def testNoPermissions(self): """Test that destroyNetwork refuses to delete a network if you don't own it""" self.mox.StubOutWithMock(utils, 'getCaller') utils.getCaller().MultipleTimes().AndReturn(501) self.mox.ReplayAll() self.assertRaises(errors.AccessDenied, privops.Privops().destroyNetwork, 'debmarshal-1')
def testStoreSuccess(self): """Test createNetwork when everything goes right""" self.mox.StubOutWithMock(utils, 'storeState') self.networks[self.name] = 1000 utils.storeState(self.networks, 'debmarshal-networks') self.mox.ReplayAll() self.assertEqual( privops.Privops().createNetwork(self.hosts), (self.name, self.gateway, '255.255.255.0', self.host_dict))
def test(self): """Test privops.domains.createNetwork. With all of the functionality pulled into helper functions, createNetwork doesn't actually do all that much work. """ name = 'debmarshal-12' memory = '128M' disks = ['/home/ebroder/root.img'] net = 'debmarshal-0' mac = '00:11:22:33:44:55' self.mox.StubOutWithMock(utils, 'getCaller') utils.getCaller().MultipleTimes().AndReturn(500) self.mox.StubOutWithMock(debmarshal.utils, 'acquireLock') debmarshal.utils.acquireLock('debmarshal-domlist', fcntl.LOCK_EX) self.mox.StubOutWithMock(hypervisors.qemu.QEMU, 'open') qemu_con = self.mox.CreateMock(libvirt.virConnect) hypervisors.qemu.QEMU.open().AndReturn(qemu_con) self.mox.StubOutWithMock(domains, '_validateNetwork') domains._validateNetwork(net, qemu_con) self.mox.StubOutWithMock(domains, '_validatePath') for d in disks: domains._validatePath(d, os.R_OK | os.W_OK) self.mox.StubOutWithMock(domains, '_findUnusedName') domains._findUnusedName(qemu_con).AndReturn(name) self.mox.StubOutWithMock(hypervisors.qemu.QEMU, 'domainXMLString') hypervisors.qemu.QEMU.domainXMLString( mox.IgnoreArg()).AndReturn('<fake_xml/>') self.mox.StubOutWithMock(domains, 'loadDomainState') domains.loadDomainState().AndReturn({('debmarshal-1', 'qemu'): 500}) self.mox.StubOutWithMock(utils, 'storeState') utils.storeState({ ('debmarshal-1', 'qemu'): 500, (name, 'qemu'): 500 }, 'debmarshal-domains') qemu_con.createLinux('<fake_xml/>', 0) self.mox.ReplayAll() self.assertEqual( privops.Privops().createDomain(memory, disks, net, mac, 'qemu', 'x86_64', {}), name)
def testSuccess(self): """Test that destroyDomain can succeed.""" self.mox.StubOutWithMock(utils, 'getCaller') utils.getCaller().MultipleTimes().AndReturn(500) virt_dom = self.mox.CreateMock(libvirt.virDomain) self.virt_con.lookupByName('debmarshal-0').AndReturn(virt_dom) virt_dom.destroy() self.mox.StubOutWithMock(utils, 'storeState') del self.domains[('debmarshal-0', 'qemu')] utils.storeState(self.domains, 'debmarshal-domains') self.mox.ReplayAll() privops.Privops().destroyDomain('debmarshal-0', 'qemu')
def testStoreFailure(self): """Test that the network is destroyed if state about it can't be stored""" self.mox.StubOutWithMock(utils, 'storeState') self.networks[self.name] = 1000 utils.storeState(self.networks, 'debmarshal-networks').\ AndRaise(Exception("Error!")) self.virt_con.networkLookupByName(self.name).MultipleTimes().AndReturn( self.virt_net) self.virt_net.destroy() self.virt_net.undefine() self.mox.ReplayAll() self.assertRaises(Exception, privops.Privops().createNetwork, self.hosts)
def testSuccess(self): """Test that destroyNetwork will actually delete an existing network owned by the right user.""" self.mox.StubOutWithMock(utils, 'getCaller') utils.getCaller().MultipleTimes().AndReturn(501) virt_net = self.mox.CreateMock(libvirt.virNetwork) self.virt_con.networkLookupByName( 'debmarshal-0').MultipleTimes().AndReturn(virt_net) virt_net.destroy() virt_net.undefine() self.mox.StubOutWithMock(utils, 'storeState') del self.networks['debmarshal-0'] utils.storeState(self.networks, 'debmarshal-networks') self.mox.ReplayAll() privops.Privops().destroyNetwork('debmarshal-0')