def test_000_load(self): node = self.xml.xpath('//domain')[0] vm = TestVM(TestApp(), node) vm.app.domains['domain1'] = vm vm.load_properties(load_stage=None) vm.load_extras() self.assertEqual(vm.qid, 1) self.assertEqual(vm.testprop, 'testvalue') self.assertEqual(vm.testprop, 'testvalue') self.assertEqual(vm.testlabel, 'label-1') self.assertEqual(vm.defaultprop, 'defaultvalue') self.assertEqual(vm.tags, {'testtag'}) self.assertEqual(vm.features, { 'testfeature_empty': '', 'testfeature_aqq': 'aqq', }) self.assertCountEqual(vm.devices.keys(), ('pci', )) self.assertCountEqual(list(vm.devices['pci'].persistent()), [qubes.ext.pci.PCIDevice(vm, '00_11.22')]) assignments = list(vm.devices['pci'].assignments()) self.assertEqual(len(assignments), 1) self.assertEqual(assignments[0].options, {'no-strict-reset': 'True'}) self.assertEqual(assignments[0].persistent, True) self.assertXMLIsValid(vm.__xml__(), 'relaxng/domain.rng')
def test_000_load(self): node = self.xml.xpath('//domain')[0] vm = TestVM(TestApp(), node) vm.app.domains['domain1'] = vm vm.load_properties(load_stage=None) vm.load_extras() self.assertEqual(vm.qid, 1) self.assertEqual(vm.testprop, 'testvalue') self.assertEqual(vm.testprop, 'testvalue') self.assertEqual(vm.testlabel, 'label-1') self.assertEqual(vm.defaultprop, 'defaultvalue') self.assertEqual(vm.tags, {'testtag'}) self.assertEqual(vm.features, { 'testfeature_empty': '', 'testfeature_aqq': 'aqq', }) self.assertCountEqual(vm.devices.keys(), ('pci',)) self.assertCountEqual(list(vm.devices['pci'].persistent()), [qubes.ext.pci.PCIDevice(vm, '00_11.22')]) assignments = list(vm.devices['pci'].assignments()) self.assertEqual(len(assignments), 1) self.assertEqual(assignments[0].options, {'no-strict-reset': 'True'}) self.assertEqual(assignments[0].persistent, True) self.assertXMLIsValid(vm.__xml__(), 'domain.rng')
def assertPropertyDefaultValue(self, vm, prop_name, expected_default=property_no_default): if expected_default is self.property_no_default: with self.assertRaises(AttributeError): getattr(vm, prop_name) else: with self.assertNotRaises(AttributeError): self.assertEqual(getattr(vm, prop_name), expected_default) xml = vm.__xml__() prop_xml = xml.xpath( './properties/property[@name=\'{}\']'.format(prop_name)) self.assertEqual(len(prop_xml), 0, "Property still found in XML")
def assertPropertyValue(self, vm, prop_name, set_value, expected_value, expected_xml_content=None): # FIXME: any better exception list? or maybe all of that should be a # single exception? with self.assertNotRaises((ValueError, TypeError, KeyError)): setattr(vm, prop_name, set_value) self.assertEqual(getattr(vm, prop_name), expected_value) if expected_xml_content is not None: xml = vm.__xml__() prop_xml = xml.xpath( './properties/property[@name=\'{}\']'.format(prop_name)) self.assertEqual(len(prop_xml), 1, "Property not found in XML") self.assertEqual(prop_xml[0].text, expected_xml_content)
def __xml__(self): element = lxml.etree.Element('qubes') element.append(self.xml_labels()) pools_xml = lxml.etree.Element('pools') for pool in self.pools.values(): xml = pool.__xml__() if xml is not None: pools_xml.append(xml) element.append(pools_xml) element.append(self.xml_properties()) domains = lxml.etree.Element('domains') for vm in self.domains: domains.append(vm.__xml__()) element.append(domains) return element
def __xml__(self): element = lxml.etree.Element('qubes') element.append(self.xml_labels()) pools_xml = lxml.etree.Element('pools') for pool in self.pools.values(): xml = pool.__xml__() if xml is not None: pools_xml.append(xml) element.append(pools_xml) element.append(self.xml_properties()) domains = lxml.etree.Element('domains') for vm in self.domains: domains.append(vm.__xml__()) element.append(domains) return element
def test_002_save_nxproperty(self): vm = TestVM(None, None, qid=1, name='testvm') vm.nxproperty = 'value' xml = vm.__xml__() self.assertNotIn('nxproperty', xml)
def test_002_save_nxproperty(self): vm = TestVM(None, None, qid=1, name='testvm') vm.nxproperty = 'value' xml = vm.__xml__() self.assertNotIn('nxproperty', xml)