summaryrefslogtreecommitdiff
path: root/trove/tests/unittests/guestagent/test_volume.py
diff options
context:
space:
mode:
Diffstat (limited to 'trove/tests/unittests/guestagent/test_volume.py')
-rw-r--r--trove/tests/unittests/guestagent/test_volume.py75
1 files changed, 75 insertions, 0 deletions
diff --git a/trove/tests/unittests/guestagent/test_volume.py b/trove/tests/unittests/guestagent/test_volume.py
index e8f47a93..5a7e8cba 100644
--- a/trove/tests/unittests/guestagent/test_volume.py
+++ b/trove/tests/unittests/guestagent/test_volume.py
@@ -14,6 +14,7 @@
from mock import ANY, call, DEFAULT, patch, mock_open
+from trove.common import cfg
from trove.common import exception
from trove.common import utils
from trove.guestagent.common import operating_system
@@ -21,10 +22,15 @@ from trove.guestagent import volume
from trove.tests.unittests import trove_testtools
+CONF = cfg.CONF
+
+
class VolumeDeviceTest(trove_testtools.TestCase):
def setUp(self):
super(VolumeDeviceTest, self).setUp()
+ self.patch_conf_property('volume_fstype', 'ext3')
+ self.patch_conf_property('format_options', '-m 5')
self.volumeDevice = volume.VolumeDevice('/dev/vdb')
self.exec_patcher = patch.object(
@@ -199,10 +205,79 @@ class VolumeDeviceTest(trove_testtools.TestCase):
self.mock_exec.assert_has_calls(calls)
+class VolumeDeviceTestXFS(trove_testtools.TestCase):
+
+ def setUp(self):
+ super(VolumeDeviceTestXFS, self).setUp()
+ self.patch_conf_property('volume_fstype', 'xfs')
+ self.patch_conf_property('format_options', '')
+ self.volumeDevice = volume.VolumeDevice('/dev/vdb')
+
+ self.exec_patcher = patch.object(
+ utils, 'execute', return_value=('', ''))
+ self.mock_exec = self.exec_patcher.start()
+ self.addCleanup(self.exec_patcher.stop)
+ self.ismount_patcher = patch.object(operating_system, 'is_mount')
+ self.mock_ismount = self.ismount_patcher.start()
+ self.addCleanup(self.ismount_patcher.stop)
+
+ def tearDown(self):
+ super(VolumeDeviceTestXFS, self).tearDown()
+ self.volumeDevice = None
+
+ def test__check_format(self):
+ self.volumeDevice._check_format()
+ self.assertEqual(1, self.mock_exec.call_count)
+ calls = [
+ call('xfs_admin', '-l', '/dev/vdb',
+ root_helper='sudo', run_as_root=True)
+ ]
+ self.mock_exec.assert_has_calls(calls)
+
+ @patch('trove.guestagent.volume.LOG')
+ @patch.object(utils, 'execute',
+ return_value=('not a valid XFS filesystem', ''))
+ def test__check_format_2(self, mock_logging, mock_exec):
+ self.assertRaises(exception.GuestError,
+ self.volumeDevice._check_format)
+
+ def test__format(self):
+ self.volumeDevice._format()
+ self.assertEqual(1, self.mock_exec.call_count)
+ calls = [
+ call('mkfs.xfs', '/dev/vdb',
+ root_helper='sudo', run_as_root=True)
+ ]
+ self.mock_exec.assert_has_calls(calls)
+
+ def test_resize_fs(self):
+ with patch.object(operating_system, 'is_mount', return_value=True):
+ mount_point = '/mnt/volume'
+ self.volumeDevice.resize_fs(mount_point)
+ self.assertEqual(6, self.mock_exec.call_count)
+ calls = [
+ call('blockdev', '--getsize64', '/dev/vdb', attempts=3,
+ root_helper='sudo', run_as_root=True),
+ call("umount", mount_point, run_as_root=True,
+ root_helper='sudo'),
+ call('xfs_repair', '/dev/vdb', root_helper='sudo',
+ run_as_root=True),
+ call('mount', '/dev/vdb', root_helper='sudo',
+ run_as_root=True),
+ call('xfs_growfs', '/dev/vdb', root_helper='sudo',
+ run_as_root=True),
+ call('umount', '/dev/vdb', root_helper='sudo',
+ run_as_root=True)
+ ]
+ self.mock_exec.assert_has_calls(calls)
+
+
class VolumeMountPointTest(trove_testtools.TestCase):
def setUp(self):
super(VolumeMountPointTest, self).setUp()
+ self.patch_conf_property('volume_fstype', 'ext3')
+ self.patch_conf_property('format_options', '-m 5')
self.volumeMountPoint = volume.VolumeMountPoint('/mnt/device',
'/dev/vdb')
self.exec_patcher = patch.object(utils, 'execute',