summaryrefslogtreecommitdiff
path: root/tests/unittests/test_handler/test_handler_disk_setup.py
diff options
context:
space:
mode:
authorScott Moser <smoser@brickies.net>2017-01-20 10:06:55 -0500
committerScott Moser <smoser@brickies.net>2017-01-20 10:06:55 -0500
commitd00b7dba8767618ae360f56bf64b7ab7a8c49d2e (patch)
tree349799f76c39669a03a6acbd48502970c0abb994 /tests/unittests/test_handler/test_handler_disk_setup.py
parentfa3009b64949fef3744ddb940f01477dfa2d25e5 (diff)
parent7fb6f78177b5ece10ca7c54ba3958010a9987f06 (diff)
downloadvyos-cloud-init-d00b7dba8767618ae360f56bf64b7ab7a8c49d2e.tar.gz
vyos-cloud-init-d00b7dba8767618ae360f56bf64b7ab7a8c49d2e.zip
merge from 0.7.9 at 0.7.9
Diffstat (limited to 'tests/unittests/test_handler/test_handler_disk_setup.py')
-rw-r--r--tests/unittests/test_handler/test_handler_disk_setup.py76
1 files changed, 76 insertions, 0 deletions
diff --git a/tests/unittests/test_handler/test_handler_disk_setup.py b/tests/unittests/test_handler/test_handler_disk_setup.py
index ddef8d48..227f0497 100644
--- a/tests/unittests/test_handler/test_handler_disk_setup.py
+++ b/tests/unittests/test_handler/test_handler_disk_setup.py
@@ -1,3 +1,7 @@
+# This file is part of cloud-init. See LICENSE file for license information.
+
+import random
+
from cloudinit.config import cc_disk_setup
from ..helpers import ExitStack, mock, TestCase
@@ -28,3 +32,75 @@ class TestIsDiskUsed(TestCase):
self.enumerate_disk.return_value = (mock.MagicMock() for _ in range(1))
self.check_fs.return_value = (mock.MagicMock(), None, mock.MagicMock())
self.assertFalse(cc_disk_setup.is_disk_used(mock.MagicMock()))
+
+
+class TestGetMbrHddSize(TestCase):
+
+ def setUp(self):
+ super(TestGetMbrHddSize, self).setUp()
+ self.patches = ExitStack()
+ self.subp = self.patches.enter_context(
+ mock.patch.object(cc_disk_setup.util, 'subp'))
+
+ def tearDown(self):
+ super(TestGetMbrHddSize, self).tearDown()
+ self.patches.close()
+
+ def _configure_subp_mock(self, hdd_size_in_bytes, sector_size_in_bytes):
+ def _subp(cmd, *args, **kwargs):
+ self.assertEqual(3, len(cmd))
+ if '--getsize64' in cmd:
+ return hdd_size_in_bytes, None
+ elif '--getss' in cmd:
+ return sector_size_in_bytes, None
+ raise Exception('Unexpected blockdev command called')
+
+ self.subp.side_effect = _subp
+
+ def _test_for_sector_size(self, sector_size):
+ size_in_bytes = random.randint(10000, 10000000) * 512
+ size_in_sectors = size_in_bytes / sector_size
+ self._configure_subp_mock(size_in_bytes, sector_size)
+ self.assertEqual(size_in_sectors,
+ cc_disk_setup.get_mbr_hdd_size('/dev/sda1'))
+
+ def test_size_for_512_byte_sectors(self):
+ self._test_for_sector_size(512)
+
+ def test_size_for_1024_byte_sectors(self):
+ self._test_for_sector_size(1024)
+
+ def test_size_for_2048_byte_sectors(self):
+ self._test_for_sector_size(2048)
+
+ def test_size_for_4096_byte_sectors(self):
+ self._test_for_sector_size(4096)
+
+
+class TestGetPartitionMbrLayout(TestCase):
+
+ def test_single_partition_using_boolean(self):
+ self.assertEqual('0,',
+ cc_disk_setup.get_partition_mbr_layout(1000, True))
+
+ def test_single_partition_using_list(self):
+ disk_size = random.randint(1000000, 1000000000000)
+ self.assertEqual(
+ ',,83',
+ cc_disk_setup.get_partition_mbr_layout(disk_size, [100]))
+
+ def test_half_and_half(self):
+ disk_size = random.randint(1000000, 1000000000000)
+ expected_partition_size = int(float(disk_size) / 2)
+ self.assertEqual(
+ ',{0},83\n,,83'.format(expected_partition_size),
+ cc_disk_setup.get_partition_mbr_layout(disk_size, [50, 50]))
+
+ def test_thirds_with_different_partition_type(self):
+ disk_size = random.randint(1000000, 1000000000000)
+ expected_partition_size = int(float(disk_size) * 0.33)
+ self.assertEqual(
+ ',{0},83\n,,82'.format(expected_partition_size),
+ cc_disk_setup.get_partition_mbr_layout(disk_size, [33, [66, 82]]))
+
+# vi: ts=4 expandtab