tests: minor formating
This commit is contained in:
parent
0c476f014d
commit
760786d999
@ -133,14 +133,12 @@ class QubesTestCase(unittest.TestCase):
|
|||||||
self.__class__.__name__,
|
self.__class__.__name__,
|
||||||
self._testMethodName))
|
self._testMethodName))
|
||||||
|
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return '{}/{}/{}'.format(
|
return '{}/{}/{}'.format(
|
||||||
'.'.join(self.__class__.__module__.split('.')[2:]),
|
'.'.join(self.__class__.__module__.split('.')[2:]),
|
||||||
self.__class__.__name__,
|
self.__class__.__name__,
|
||||||
self._testMethodName)
|
self._testMethodName)
|
||||||
|
|
||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
super(QubesTestCase, self).tearDown()
|
super(QubesTestCase, self).tearDown()
|
||||||
|
|
||||||
@ -153,7 +151,6 @@ class QubesTestCase(unittest.TestCase):
|
|||||||
and filter((lambda (tc, exc): tc is self), l):
|
and filter((lambda (tc, exc): tc is self), l):
|
||||||
raise BeforeCleanExit()
|
raise BeforeCleanExit()
|
||||||
|
|
||||||
|
|
||||||
def assertNotRaises(self, excClass, callableObj=None, *args, **kwargs):
|
def assertNotRaises(self, excClass, callableObj=None, *args, **kwargs):
|
||||||
"""Fail if an exception of class excClass is raised
|
"""Fail if an exception of class excClass is raised
|
||||||
by callableObj when invoked with arguments args and keyword
|
by callableObj when invoked with arguments args and keyword
|
||||||
@ -183,15 +180,14 @@ class QubesTestCase(unittest.TestCase):
|
|||||||
with context:
|
with context:
|
||||||
callableObj(*args, **kwargs)
|
callableObj(*args, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
def assertXMLEqual(self, xml1, xml2):
|
def assertXMLEqual(self, xml1, xml2):
|
||||||
'''Check for equality of two XML objects.
|
"""Check for equality of two XML objects.
|
||||||
|
|
||||||
:param xml1: first element
|
:param xml1: first element
|
||||||
:param xml2: second element
|
:param xml2: second element
|
||||||
:type xml1: :py:class:`lxml.etree._Element`
|
:type xml1: :py:class:`lxml.etree._Element`
|
||||||
:type xml2: :py:class:`lxml.etree._Element`
|
:type xml2: :py:class:`lxml.etree._Element`
|
||||||
''' # pylint: disable=invalid-name
|
""" # pylint: disable=invalid-name
|
||||||
|
|
||||||
self.assertEqual(xml1.tag, xml2.tag)
|
self.assertEqual(xml1.tag, xml2.tag)
|
||||||
self.assertEqual(xml1.text, xml2.text)
|
self.assertEqual(xml1.text, xml2.text)
|
||||||
@ -202,13 +198,13 @@ class QubesTestCase(unittest.TestCase):
|
|||||||
|
|
||||||
class SystemTestsMixin(object):
|
class SystemTestsMixin(object):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
'''Set up the test.
|
"""Set up the test.
|
||||||
|
|
||||||
.. warning::
|
.. warning::
|
||||||
This method instantiates QubesVmCollection acquires write lock for
|
This method instantiates QubesVmCollection acquires write lock for
|
||||||
it. You can use is as :py:attr:`qc`. You can (and probably
|
it. You can use is as :py:attr:`qc`. You can (and probably
|
||||||
should) release the lock at the end of setUp in subclass
|
should) release the lock at the end of setUp in subclass
|
||||||
'''
|
"""
|
||||||
|
|
||||||
super(SystemTestsMixin, self).setUp()
|
super(SystemTestsMixin, self).setUp()
|
||||||
|
|
||||||
@ -220,12 +216,13 @@ class SystemTestsMixin(object):
|
|||||||
|
|
||||||
self.remove_test_vms()
|
self.remove_test_vms()
|
||||||
|
|
||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
super(SystemTestsMixin, self).tearDown()
|
super(SystemTestsMixin, self).tearDown()
|
||||||
|
|
||||||
try: self.qc.lock_db_for_writing()
|
try:
|
||||||
except qubes.qubes.QubesException: pass
|
self.qc.lock_db_for_writing()
|
||||||
|
except qubes.qubes.QubesException:
|
||||||
|
pass
|
||||||
self.qc.load()
|
self.qc.load()
|
||||||
|
|
||||||
self.remove_test_vms()
|
self.remove_test_vms()
|
||||||
@ -236,7 +233,6 @@ class SystemTestsMixin(object):
|
|||||||
|
|
||||||
self.conn.close()
|
self.conn.close()
|
||||||
|
|
||||||
|
|
||||||
def make_vm_name(self, name):
|
def make_vm_name(self, name):
|
||||||
return VMPREFIX + name
|
return VMPREFIX + name
|
||||||
|
|
||||||
@ -253,13 +249,18 @@ class SystemTestsMixin(object):
|
|||||||
# XXX .is_running() may throw libvirtError if undefined
|
# XXX .is_running() may throw libvirtError if undefined
|
||||||
if vm.is_running():
|
if vm.is_running():
|
||||||
vm.force_shutdown()
|
vm.force_shutdown()
|
||||||
except: pass
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
try: vm.remove_from_disk()
|
try:
|
||||||
except: pass
|
vm.remove_from_disk()
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
try: vm.libvirt_domain.undefine()
|
try:
|
||||||
except libvirt.libvirtError: pass
|
vm.libvirt_domain.undefine()
|
||||||
|
except libvirt.libvirtError:
|
||||||
|
pass
|
||||||
|
|
||||||
self.qc.pop(vm.qid)
|
self.qc.pop(vm.qid)
|
||||||
del vm
|
del vm
|
||||||
@ -268,13 +269,13 @@ class SystemTestsMixin(object):
|
|||||||
# for example if vm.libvirtDomain malfunctioned.
|
# for example if vm.libvirtDomain malfunctioned.
|
||||||
try:
|
try:
|
||||||
dom = self.conn.lookupByName(vmname)
|
dom = self.conn.lookupByName(vmname)
|
||||||
except: pass
|
except:
|
||||||
|
pass
|
||||||
else:
|
else:
|
||||||
self._remove_vm_libvirt(dom)
|
self._remove_vm_libvirt(dom)
|
||||||
|
|
||||||
self._remove_vm_disk(vmname)
|
self._remove_vm_disk(vmname)
|
||||||
|
|
||||||
|
|
||||||
def _remove_vm_libvirt(self, dom):
|
def _remove_vm_libvirt(self, dom):
|
||||||
try:
|
try:
|
||||||
dom.destroy()
|
dom.destroy()
|
||||||
@ -282,7 +283,6 @@ class SystemTestsMixin(object):
|
|||||||
pass
|
pass
|
||||||
dom.undefine()
|
dom.undefine()
|
||||||
|
|
||||||
|
|
||||||
def _remove_vm_disk(self, vmname):
|
def _remove_vm_disk(self, vmname):
|
||||||
for dirspec in (
|
for dirspec in (
|
||||||
'qubes_appvms_dir',
|
'qubes_appvms_dir',
|
||||||
@ -296,21 +296,19 @@ class SystemTestsMixin(object):
|
|||||||
else:
|
else:
|
||||||
os.unlink(dirpath)
|
os.unlink(dirpath)
|
||||||
|
|
||||||
|
|
||||||
def remove_vms(self, vms):
|
def remove_vms(self, vms):
|
||||||
for vm in vms: self._remove_vm_qubes(vm)
|
for vm in vms: self._remove_vm_qubes(vm)
|
||||||
self.save_and_reload_db()
|
self.save_and_reload_db()
|
||||||
|
|
||||||
|
|
||||||
def remove_test_vms(self):
|
def remove_test_vms(self):
|
||||||
'''Aggresively remove any domain that has name in testing namespace.
|
"""Aggresively remove any domain that has name in testing namespace.
|
||||||
|
|
||||||
.. warning::
|
.. warning::
|
||||||
The test suite hereby claims any domain whose name starts with
|
The test suite hereby claims any domain whose name starts with
|
||||||
:py:data:`VMPREFIX` as fair game. This is needed to enforce sane
|
:py:data:`VMPREFIX` as fair game. This is needed to enforce sane
|
||||||
test executing environment. If you have domains named ``test-*``,
|
test executing environment. If you have domains named ``test-*``,
|
||||||
don't run the tests.
|
don't run the tests.
|
||||||
'''
|
"""
|
||||||
|
|
||||||
# first, remove them Qubes-way
|
# first, remove them Qubes-way
|
||||||
something_removed = False
|
something_removed = False
|
||||||
@ -392,28 +390,23 @@ class BackupTestsMixin(SystemTestsMixin):
|
|||||||
shutil.rmtree(self.backupdir)
|
shutil.rmtree(self.backupdir)
|
||||||
os.mkdir(self.backupdir)
|
os.mkdir(self.backupdir)
|
||||||
|
|
||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
super(BackupTestsMixin, self).tearDown()
|
super(BackupTestsMixin, self).tearDown()
|
||||||
shutil.rmtree(self.backupdir)
|
shutil.rmtree(self.backupdir)
|
||||||
|
|
||||||
|
|
||||||
def print_progress(self, progress):
|
def print_progress(self, progress):
|
||||||
if self.verbose:
|
if self.verbose:
|
||||||
print >> sys.stderr, "\r-> Backing up files: {0}%...".format(progress)
|
print >> sys.stderr, "\r-> Backing up files: {0}%...".format(progress)
|
||||||
|
|
||||||
|
|
||||||
def error_callback(self, message):
|
def error_callback(self, message):
|
||||||
self.error_detected.put(message)
|
self.error_detected.put(message)
|
||||||
if self.verbose:
|
if self.verbose:
|
||||||
print >> sys.stderr, "ERROR: {0}".format(message)
|
print >> sys.stderr, "ERROR: {0}".format(message)
|
||||||
|
|
||||||
|
|
||||||
def print_callback(self, msg):
|
def print_callback(self, msg):
|
||||||
if self.verbose:
|
if self.verbose:
|
||||||
print msg
|
print msg
|
||||||
|
|
||||||
|
|
||||||
def fill_image(self, path, size=None, sparse=False):
|
def fill_image(self, path, size=None, sparse=False):
|
||||||
block_size = 4096
|
block_size = 4096
|
||||||
|
|
||||||
@ -432,7 +425,6 @@ class BackupTestsMixin(SystemTestsMixin):
|
|||||||
|
|
||||||
f.close()
|
f.close()
|
||||||
|
|
||||||
|
|
||||||
# NOTE: this was create_basic_vms
|
# NOTE: this was create_basic_vms
|
||||||
def create_backup_vms(self):
|
def create_backup_vms(self):
|
||||||
template=self.qc.get_default_template()
|
template=self.qc.get_default_template()
|
||||||
@ -459,7 +451,6 @@ class BackupTestsMixin(SystemTestsMixin):
|
|||||||
|
|
||||||
return vms
|
return vms
|
||||||
|
|
||||||
|
|
||||||
def make_backup(self, vms, prepare_kwargs=dict(), do_kwargs=dict(),
|
def make_backup(self, vms, prepare_kwargs=dict(), do_kwargs=dict(),
|
||||||
target=None):
|
target=None):
|
||||||
# XXX: bakup_prepare and backup_do don't support host_collection
|
# XXX: bakup_prepare and backup_do don't support host_collection
|
||||||
@ -472,19 +463,24 @@ class BackupTestsMixin(SystemTestsMixin):
|
|||||||
print_callback=self.print_callback,
|
print_callback=self.print_callback,
|
||||||
**prepare_kwargs)
|
**prepare_kwargs)
|
||||||
except qubes.qubes.QubesException as e:
|
except qubes.qubes.QubesException as e:
|
||||||
|
if not expect_failure:
|
||||||
self.fail("QubesException during backup_prepare: %s" % str(e))
|
self.fail("QubesException during backup_prepare: %s" % str(e))
|
||||||
|
else:
|
||||||
|
raise
|
||||||
|
|
||||||
try:
|
try:
|
||||||
qubes.backup.backup_do(target, files_to_backup, "qubes",
|
qubes.backup.backup_do(target, files_to_backup, "qubes",
|
||||||
progress_callback=self.print_progress,
|
progress_callback=self.print_progress,
|
||||||
**do_kwargs)
|
**do_kwargs)
|
||||||
except qubes.qubes.QubesException as e:
|
except qubes.qubes.QubesException as e:
|
||||||
|
if not expect_failure:
|
||||||
self.fail("QubesException during backup_do: %s" % str(e))
|
self.fail("QubesException during backup_do: %s" % str(e))
|
||||||
|
else:
|
||||||
|
raise
|
||||||
|
|
||||||
self.qc.lock_db_for_writing()
|
self.qc.lock_db_for_writing()
|
||||||
self.qc.load()
|
self.qc.load()
|
||||||
|
|
||||||
|
|
||||||
def restore_backup(self, source=None, appvm=None, options=None,
|
def restore_backup(self, source=None, appvm=None, options=None,
|
||||||
expect_errors=None):
|
expect_errors=None):
|
||||||
if source is None:
|
if source is None:
|
||||||
@ -528,7 +524,6 @@ class BackupTestsMixin(SystemTestsMixin):
|
|||||||
if not appvm and not os.path.isdir(backupfile):
|
if not appvm and not os.path.isdir(backupfile):
|
||||||
os.unlink(backupfile)
|
os.unlink(backupfile)
|
||||||
|
|
||||||
|
|
||||||
def create_sparse(self, path, size):
|
def create_sparse(self, path, size):
|
||||||
f = open(path, "w")
|
f = open(path, "w")
|
||||||
f.truncate(size)
|
f.truncate(size)
|
||||||
|
Loading…
Reference in New Issue
Block a user