|
@@ -16,16 +16,16 @@
|
|
|
# with this program; if not, write to the Free Software Foundation, Inc.,
|
|
|
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
|
|
|
|
-
|
|
|
-import qubes.storage
|
|
|
import qubes.log
|
|
|
-from qubes.config import defaults
|
|
|
-from qubes.storage.xen import XenPool, XenStorage
|
|
|
-from qubes.tests import QubesTestCase, SystemTestsMixin
|
|
|
+from qubes.storage import StoragePoolException, pool_drivers
|
|
|
+from qubes.storage.xen import XenPool
|
|
|
+from qubes.tests import QubesTestCase
|
|
|
+
|
|
|
|
|
|
class TestApp(qubes.tests.TestEmitter):
|
|
|
pass
|
|
|
|
|
|
+
|
|
|
class TestVM(object):
|
|
|
def __init__(self, app, qid, name, pool_name, template=None):
|
|
|
super(TestVM, self).__init__()
|
|
@@ -35,8 +35,8 @@ class TestVM(object):
|
|
|
self.pool_name = pool_name
|
|
|
self.template = template
|
|
|
self.hvm = False
|
|
|
- self.storage = qubes.storage.get_pool(
|
|
|
- self.pool_name, self).get_storage()
|
|
|
+ self.storage = qubes.storage.get_pool(self.pool_name,
|
|
|
+ self).get_storage()
|
|
|
self.log = qubes.log.get_vm_logger(self.name)
|
|
|
|
|
|
def is_template(self):
|
|
@@ -54,56 +54,44 @@ class TestTemplateVM(TestVM):
|
|
|
def is_template(self):
|
|
|
return True
|
|
|
|
|
|
+
|
|
|
class TestDisposableVM(TestVM):
|
|
|
def is_disposablevm(self):
|
|
|
return True
|
|
|
|
|
|
-class TC_00_Storage(QubesTestCase):
|
|
|
|
|
|
+class TC_00_Pool(QubesTestCase):
|
|
|
""" This class tests the utility methods from :mod:``qubes.storage`` """
|
|
|
|
|
|
def setUp(self):
|
|
|
- super(TC_00_Storage, self).setUp()
|
|
|
- self.app = TestApp()
|
|
|
-
|
|
|
- def test_000_dump(self):
|
|
|
- """ Dumps storage instance to a storage string """
|
|
|
- vmname = self.make_vm_name('appvm')
|
|
|
- template = TestTemplateVM(self.app, 1,
|
|
|
- qubes.tests.VMPREFIX + 'template', pool_name='default')
|
|
|
- vm = TestVM(self.app, qid=2, name=vmname, pool_name='default',
|
|
|
- template=template)
|
|
|
- storage = vm.storage
|
|
|
- result = qubes.storage.dump(storage)
|
|
|
- expected = 'qubes.storage.xen.XenStorage'
|
|
|
- self.assertEquals(result, expected)
|
|
|
-
|
|
|
- def test_001_load(self):
|
|
|
- """ Loads storage driver from a storage string """
|
|
|
- result = qubes.storage.load('qubes.storage.xen.XenStorage')
|
|
|
- self.assertTrue(result is XenStorage)
|
|
|
-
|
|
|
- def test_002_default_pool_drivers(self):
|
|
|
- """ The only predifined pool driver is xen """
|
|
|
- result = defaults['pool_drivers'].keys()
|
|
|
- expected = ["xen"]
|
|
|
- self.assertEquals(result, expected)
|
|
|
-
|
|
|
- def test_003_get_pool_klass(self):
|
|
|
+ super(TC_00_Pool, self).setUp()
|
|
|
+
|
|
|
+ def test_000_unknown_pool_driver(self):
|
|
|
+ # :pylint: disable=protected-access
|
|
|
+ """ Expect an exception when unknown pool is requested"""
|
|
|
+ with self.assertRaises(StoragePoolException):
|
|
|
+ qubes.storage._get_pool_klass('foo-bar')
|
|
|
+
|
|
|
+ def test_001_all_pool_drivers(self):
|
|
|
+ """ The only predefined pool driver is file """
|
|
|
+ self.assertEquals(["xen"], pool_drivers())
|
|
|
+
|
|
|
+ def test_002_get_pool_klass(self):
|
|
|
""" Expect the default pool to be `XenPool` """
|
|
|
+ # :pylint: disable=protected-access
|
|
|
result = qubes.storage._get_pool_klass('default')
|
|
|
self.assertTrue(result is XenPool)
|
|
|
|
|
|
- def test_004_pool_exists_default(self):
|
|
|
+ def test_003_pool_exists_default(self):
|
|
|
""" Expect the default pool to exists """
|
|
|
self.assertTrue(qubes.storage.pool_exists('default'))
|
|
|
|
|
|
- def test_005_pool_exists_random(self):
|
|
|
+ def test_004_pool_exists_random(self):
|
|
|
""" Expect this pool to not a exist """
|
|
|
- self.assertFalse(
|
|
|
- qubes.storage.pool_exists('asdh312096r832598213iudhas'))
|
|
|
+ self.assertFalse(qubes.storage.pool_exists(
|
|
|
+ 'asdh312096r832598213iudhas'))
|
|
|
|
|
|
- def test_006_add_remove_pool(self):
|
|
|
+ def test_005_add_remove_pool(self):
|
|
|
""" Tries to adding and removing a pool. """
|
|
|
pool_name = 'asdjhrp89132'
|
|
|
|