kiwi-el8/test/unit/storage_subformat_gce_test.py
Marcus Schäfer 18ba277113
Change bundling of image formats
By default none of the image formats were stored as compressed
file. The reason behind this was the assumption that some
formats automatically makes use of compression, which is true
but only in their processing and not in their data blocks at
creation time. Storage and handling of the image file itself
becomes cumbersome and therefore we change the default bundle
setup for image formats to be compressed. This means the image
as it gets packed by KIWI needs to be uncompressed before use.
The following image formats are affected by the change in a
call of the result bundler:

    kiwi result bundle ...

    * qcow2 (.qcow2.xz)
    * vdi   (.vdi.xz)
    * vhd   (.vhd.xz)
    * vhdx  (.vhdx.xz)
    * vmdk  (.vmdk.xz)

All other image formats already defined a custom bundling
setup including compression and are not affected by this change.
This Fixes #650
2018-11-06 12:16:36 +01:00

83 lines
2.7 KiB
Python

from mock import patch
from mock import call
import mock
from .test_helper import patch_open
from kiwi.storage.subformat.gce import DiskFormatGce
class TestDiskFormatGce(object):
def setup(self):
xml_data = mock.Mock()
xml_data.get_name = mock.Mock(
return_value='some-disk-image'
)
self.xml_state = mock.Mock()
self.xml_state.xml_data = xml_data
self.xml_state.get_image_version = mock.Mock(
return_value='0.8.15'
)
self.disk_format = DiskFormatGce(
self.xml_state, 'root_dir', 'target_dir'
)
def test_post_init(self):
self.disk_format.post_init({'option': 'value', '--tag': 'tag'})
assert self.disk_format.tag == 'tag'
def test_store_to_result(self):
result = mock.Mock()
self.disk_format.store_to_result(result)
result.add.assert_called_once_with(
compress=False,
filename='target_dir/some-disk-image.x86_64-0.8.15.tar.gz',
key='disk_format_image',
shasum=True,
use_for_bundle=True
)
@patch('kiwi.storage.subformat.gce.Command.run')
@patch('kiwi.storage.subformat.gce.ArchiveTar')
@patch_open
@patch('kiwi.storage.subformat.gce.mkdtemp')
def test_create_image_format(
self, mock_mkdtemp, mock_open, mock_archive, mock_command
):
mock_mkdtemp.return_value = 'tmpdir'
archive = mock.Mock()
mock_archive.return_value = archive
self.disk_format.tag = 'gce-license'
context_manager_mock = mock.Mock()
mock_open.return_value = context_manager_mock
file_mock = mock.Mock()
enter_mock = mock.Mock()
exit_mock = mock.Mock()
enter_mock.return_value = file_mock
setattr(context_manager_mock, '__enter__', enter_mock)
setattr(context_manager_mock, '__exit__', exit_mock)
self.disk_format.create_image_format()
mock_command.assert_called_once_with(
[
'cp', 'target_dir/some-disk-image.x86_64-0.8.15.raw',
'tmpdir/disk.raw'
]
)
assert mock_open.call_args_list == [
call('tmpdir/manifest.json', 'w')
]
assert file_mock.write.call_args_list == [
call('{"licenses": ["gce-license"]}')
]
mock_archive.assert_called_once_with(
filename='target_dir/some-disk-image.x86_64-0.8.15.tar',
file_list=['manifest.json', 'disk.raw']
)
archive.create_gnu_gzip_compressed.assert_called_once_with(
'tmpdir'
)
assert self.disk_format.get_target_file_path_for_format('gce') == \
'target_dir/some-disk-image.x86_64-0.8.15.tar.gz'