예제 #1
0
    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')
예제 #2
0
    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')
예제 #3
0
 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")
예제 #4
0
 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)
예제 #5
0
    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
예제 #6
0
    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
예제 #7
0
 def test_002_save_nxproperty(self):
     vm = TestVM(None, None, qid=1, name='testvm')
     vm.nxproperty = 'value'
     xml = vm.__xml__()
     self.assertNotIn('nxproperty', xml)
예제 #8
0
 def test_002_save_nxproperty(self):
     vm = TestVM(None, None, qid=1, name='testvm')
     vm.nxproperty = 'value'
     xml = vm.__xml__()
     self.assertNotIn('nxproperty', xml)