diff options
| author | Jenkins <jenkins@review.openstack.org> | 2012-11-01 17:27:28 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2012-11-01 17:27:28 +0000 |
| commit | 6ee9883b8cb1ef8e503a03229a100e50813abe5a (patch) | |
| tree | fd155c8bda8c3e9a8f9f7baefa1f3fbf78e1cb2a /nova/tests | |
| parent | c49d96e08121c89d42a3bcbcece63fd671f1a63d (diff) | |
| parent | b04213f5dc75b507ee5bc7fe16af7f7b8a3b0c3a (diff) | |
Merge "Move to a more canonicalized output from qemu-img info."
Diffstat (limited to 'nova/tests')
| -rw-r--r-- | nova/tests/test_image_utils.py | 100 | ||||
| -rw-r--r-- | nova/tests/test_utils.py | 35 |
2 files changed, 118 insertions, 17 deletions
diff --git a/nova/tests/test_image_utils.py b/nova/tests/test_image_utils.py index 711f1c202..fac0422bf 100644 --- a/nova/tests/test_image_utils.py +++ b/nova/tests/test_image_utils.py @@ -21,7 +21,7 @@ from nova.virt import images class ImageUtilsTestCase(test.TestCase): - def test_qemu_info(self): + def test_qemu_info_canon(self): path = "disk.config" example_output = """image: disk.config file format: raw @@ -35,14 +35,35 @@ blah BLAH: bb 'qemu-img', 'info', path).AndReturn((example_output, '')) self.mox.ReplayAll() image_info = images.qemu_img_info(path) - self.assertEquals('disk.config', image_info['image']) - self.assertEquals('raw', image_info['file format']) - self.assertEquals('64M (67108864 bytes)', image_info['virtual size']) - self.assertEquals('96K', image_info['disk size']) - self.assertEquals('bb', image_info['blah blah']) - self.assertEquals("65536", image_info['cluster_size']) + self.assertEquals('disk.config', image_info.image) + self.assertEquals('raw', image_info.file_format) + self.assertEquals(67108864, image_info.virtual_size) + self.assertEquals(98304, image_info.disk_size) + self.assertEquals(65536, image_info.cluster_size) - def test_qemu_info_snap(self): + def test_qemu_info_canon2(self): + path = "disk.config" + example_output = """image: disk.config +file format: QCOW2 +virtual size: 67108844 +cluster_size: 65536 +disk size: 963434 +backing file: /var/lib/nova/a328c7998805951a_2 +""" + self.mox.StubOutWithMock(utils, 'execute') + utils.execute('env', 'LC_ALL=C', 'LANG=C', + 'qemu-img', 'info', path).AndReturn((example_output, '')) + self.mox.ReplayAll() + image_info = images.qemu_img_info(path) + self.assertEquals('disk.config', image_info.image) + self.assertEquals('qcow2', image_info.file_format) + self.assertEquals(67108844, image_info.virtual_size) + self.assertEquals(963434, image_info.disk_size) + self.assertEquals(65536, image_info.cluster_size) + self.assertEquals('/var/lib/nova/a328c7998805951a_2', + image_info.backing_file) + + def test_qemu_backing_file_actual(self): path = "disk.config" example_output = """image: disk.config file format: raw @@ -52,18 +73,63 @@ disk size: 96K Snapshot list: ID TAG VM SIZE DATE VM CLOCK 1 d9a9784a500742a7bb95627bb3aace38 0 2012-08-20 10:52:46 00:00:00.000 +backing file: /var/lib/nova/a328c7998805951a_2 (actual path: /b/3a988059e51a_2) +""" + self.mox.StubOutWithMock(utils, 'execute') + utils.execute('env', 'LC_ALL=C', 'LANG=C', + 'qemu-img', 'info', path).AndReturn((example_output, '')) + self.mox.ReplayAll() + image_info = images.qemu_img_info(path) + self.assertEquals('disk.config', image_info.image) + self.assertEquals('raw', image_info.file_format) + self.assertEquals(67108864, image_info.virtual_size) + self.assertEquals(98304, image_info.disk_size) + self.assertEquals(1, len(image_info.snapshots)) + self.assertEquals('/b/3a988059e51a_2', + image_info.backing_file) + + def test_qemu_info_convert(self): + path = "disk.config" + example_output = """image: disk.config +file format: raw +virtual size: 64M +disk size: 96K +Snapshot list: +ID TAG VM SIZE DATE VM CLOCK +1 d9a9784a500742a7bb95627bb3aace38 0 2012-08-20 10:52:46 00:00:00.000 +3 d9a9784a500742a7bb95627bb3aace38 0 2012-08-20 10:52:46 00:00:00.000 +4 d9a9784a500742a7bb95627bb3aace38 0 2012-08-20 10:52:46 00:00:00.000 +junk stuff: bbb +""" + self.mox.StubOutWithMock(utils, 'execute') + utils.execute('env', 'LC_ALL=C', 'LANG=C', + 'qemu-img', 'info', path).AndReturn((example_output, '')) + self.mox.ReplayAll() + image_info = images.qemu_img_info(path) + self.assertEquals('disk.config', image_info.image) + self.assertEquals('raw', image_info.file_format) + self.assertEquals(67108864, image_info.virtual_size) + self.assertEquals(98304, image_info.disk_size) + + def test_qemu_info_snaps(self): + path = "disk.config" + example_output = """image: disk.config +file format: raw +virtual size: 64M (67108864 bytes) +disk size: 96K +Snapshot list: +ID TAG VM SIZE DATE VM CLOCK +1 d9a9784a500742a7bb95627bb3aace38 0 2012-08-20 10:52:46 00:00:00.000 +3 d9a9784a500742a7bb95627bb3aace38 0 2012-08-20 10:52:46 00:00:00.000 +4 d9a9784a500742a7bb95627bb3aace38 0 2012-08-20 10:52:46 00:00:00.000 """ self.mox.StubOutWithMock(utils, 'execute') utils.execute('env', 'LC_ALL=C', 'LANG=C', 'qemu-img', 'info', path).AndReturn((example_output, '')) self.mox.ReplayAll() image_info = images.qemu_img_info(path) - self.assertEquals('disk.config', image_info['image']) - self.assertEquals('raw', image_info['file format']) - self.assertEquals('64M (67108864 bytes)', image_info['virtual size']) - self.assertEquals('96K', image_info['disk size']) - self.assertEquals("65536", image_info['cluster_size']) - # This would be triggered if the split encountered this section - self.assertNotIn('snapshot list', image_info) - bad_cap = '1 d9a9784a500742a7bb95627bb3aace38 0 2012-08-20 10' - self.assertNotIn(bad_cap, image_info) + self.assertEquals('disk.config', image_info.image) + self.assertEquals('raw', image_info.file_format) + self.assertEquals(67108864, image_info.virtual_size) + self.assertEquals(98304, image_info.disk_size) + self.assertEquals(3, len(image_info.snapshots)) diff --git a/nova/tests/test_utils.py b/nova/tests/test_utils.py index f97d6eeb7..1b84b858d 100644 --- a/nova/tests/test_utils.py +++ b/nova/tests/test_utils.py @@ -37,6 +37,41 @@ from nova import utils FLAGS = flags.FLAGS +class ByteConversionTest(test.TestCase): + def test_string_conversions(self): + working_examples = { + '1024KB': 1048576, + '1024TB': 1125899906842624, + '1024K': 1048576, + '1024T': 1125899906842624, + '1TB': 1099511627776, + '1T': 1099511627776, + '1KB': 1024, + '1K': 1024, + '1B': 1, + '1B': 1, + '1': 1, + '1MB': 1048576, + '7MB': 7340032, + '0MB': 0, + '0KB': 0, + '0TB': 0, + '': 0, + } + for (in_value, expected_value) in working_examples.items(): + b_value = utils.to_bytes(in_value) + self.assertEquals(expected_value, b_value) + if len(in_value): + in_value = "-" + in_value + b_value = utils.to_bytes(in_value) + self.assertEquals(expected_value * -1, b_value) + breaking_examples = [ + 'junk1KB', '1023BBBB', + ] + for v in breaking_examples: + self.assertRaises(TypeError, utils.to_bytes, v) + + class ExecuteTestCase(test.TestCase): def test_retry_on_failure(self): fd, tmpfilename = tempfile.mkstemp() |
