summaryrefslogtreecommitdiff
path: root/tests/distro/test_resourceDisk.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/distro/test_resourceDisk.py')
-rw-r--r--tests/distro/test_resourceDisk.py69
1 files changed, 68 insertions, 1 deletions
diff --git a/tests/distro/test_resourceDisk.py b/tests/distro/test_resourceDisk.py
index 198fd49..1bd79fe 100644
--- a/tests/distro/test_resourceDisk.py
+++ b/tests/distro/test_resourceDisk.py
@@ -18,8 +18,10 @@
# http://msdn.microsoft.com/en-us/library/cc227282%28PROT.10%29.aspx
# http://msdn.microsoft.com/en-us/library/cc227259%28PROT.13%29.aspx
-from tests.tools import *
+from azurelinuxagent.common.utils import shellutil
from azurelinuxagent.daemon.resourcedisk import get_resourcedisk_handler
+from tests.tools import *
+
class TestResourceDisk(AgentTestCase):
def test_mkfile(self):
@@ -38,5 +40,70 @@ class TestResourceDisk(AgentTestCase):
# cleanup
os.remove(test_file)
+ def test_mkfile_dd_fallback(self):
+ with patch.object(shellutil, "run") as run_patch:
+ # setup
+ run_patch.return_value = 1
+ test_file = os.path.join(self.tmp_dir, 'test_file')
+ file_size = 1024 * 128
+
+ # execute
+ if sys.version_info >= (3,3):
+ with patch("os.posix_fallocate",
+ side_effect=Exception('failure')):
+ get_resourcedisk_handler().mkfile(test_file, file_size)
+ else:
+ get_resourcedisk_handler().mkfile(test_file, file_size)
+
+ # assert
+ assert run_patch.call_count > 1
+ assert "fallocate" in run_patch.call_args_list[0][0][0]
+ assert "dd if" in run_patch.call_args_list[-1][0][0]
+
+ def test_mkfile_xfs_fs(self):
+ # setup
+ test_file = os.path.join(self.tmp_dir, 'test_file')
+ file_size = 1024 * 128
+ if os.path.exists(test_file):
+ os.remove(test_file)
+
+ # execute
+ resource_disk_handler = get_resourcedisk_handler()
+ resource_disk_handler.fs = 'xfs'
+
+ with patch.object(shellutil, "run") as run_patch:
+ resource_disk_handler.mkfile(test_file, file_size)
+
+ # assert
+ if sys.version_info >= (3,3):
+ with patch("os.posix_fallocate") as posix_fallocate:
+ assert posix_fallocate.assert_not_called()
+
+ assert run_patch.call_count == 1
+ assert "dd if" in run_patch.call_args_list[0][0][0]
+
+
+ def test_change_partition_type(self):
+ resource_handler = get_resourcedisk_handler()
+ # test when sfdisk --part-type does not exist
+ with patch.object(shellutil, "run_get_output",
+ side_effect=[[1, ''], [0, '']]) as run_patch:
+ resource_handler.change_partition_type(suppress_message=True, option_str='')
+
+ # assert
+ assert run_patch.call_count == 2
+ assert "sfdisk --part-type" in run_patch.call_args_list[0][0][0]
+ assert "sfdisk -c" in run_patch.call_args_list[1][0][0]
+
+ # test when sfdisk --part-type exists
+ with patch.object(shellutil, "run_get_output",
+ side_effect=[[0, '']]) as run_patch:
+ resource_handler.change_partition_type(suppress_message=True, option_str='')
+
+ # assert
+ assert run_patch.call_count == 1
+ assert "sfdisk --part-type" in run_patch.call_args_list[0][0][0]
+
+
if __name__ == '__main__':
unittest.main()