提交 166a69c5 编写于 作者: X Xu Tian 提交者: Lucas Meneghel Rodrigues

qemu.tests: add qemu_disk_img_convert tests

Implement to test qemu-img convert function; convert base image or
snapshot image from one format to another format, then check image content
not changed after image convert;

Changes from V1:
    replace params.get() with params[] to avoid missing param errors.
Signed-off-by: NXu Tian <xutian@redhat.com>
上级 bb18454d
# Notes:
# For windows guest, you can download md5sum.exe from http://www.brothersoft.com/md5sum-81781.html,
# then add parents dir to $PATH or config md5sum in share/cfg/guest-os/Windows.cfg;
- qemu_disk_img:
only qcow2
virt_test_type = qemu
type = qemu_disk_img
image_chain= "image1"
kill_vm = yes
start_vm = no
image_size = 20G
# md5sum binary path
md5sum = "md5sum"
force_create_image = no
backup_image_before_testing = yes
restore_image_before_testing = yes
tmp_file_name = /tmp/test.img
file_create_cmd = "dd if=/dev/urandom of=%s bs=4k count=250"
variants:
- convert:
type = qemu_disk_img_convert
guest_file_name = /tmp/test.img
variants:
- base_to_qcow2:
image_convert = "image1"
convert_name_image1 = "images/image1_to_qcow2"
convert_format_image1 = "qcow2"
- base_to_raw:
image_convert = "image1"
convert_name_image1 = "images/image1_to_raw"
convert_format_image1 = "raw"
- snapshot_to_qcow2:
image_convert = "sn1"
image_chain += " sn1"
image_name_sn1 = "images/sn1"
image_format_sn1 = "qcow2"
convert_name_sn1 = "images/sn1_to_qcow2"
convert_format_sn1 = "qcow2"
import logging
from autotest.client import utils
from autotest.client.shared import error
from virttest import storage
from qemu.tests import qemu_disk_img
class ConvertTest(qemu_disk_img.QemuImgTest):
def __init__(self, test, params, env):
self.tag = params["image_convert"]
t_params = params.object_params(self.tag)
super(ConvertTest, self).__init__(test, t_params, env, self.tag)
@error.context_aware
def convert(self, t_params={}):
"""
create image file from one format to another format
"""
error.context("convert image file", logging.info)
params = self.params.object_params(self.tag)
params.update(t_params)
cache_mode = params.get("cache_mode")
super(ConvertTest, self).convert(params, self.data_dir, cache_mode)
params["image_name"] = params["convert_name"]
params["image_format"] = params["convert_format"]
converted = storage.get_image_filename(params, self.data_dir)
utils.run("sync")
self.trash.append(converted)
return params
def run_qemu_disk_img_convert(test, params, env):
"""
'qemu-img' convert functions test:
@param test: Qemu test object
@param params: Dictionary with the test parameters
@param env: Dictionary with test environment.
"""
base_image = params.get("images", "image1").split()[0]
params.update(
{"image_name_%s" % base_image: params["image_name"],
"image_format_%s" % base_image: params["image_format"]})
t_file = params["guest_file_name"]
convert_test = ConvertTest(test, params, env)
n_params = convert_test.create_snapshot()
convert_test.start_vm(n_params)
# save file md5sum before conversion
ret = convert_test.save_file(t_file)
if not ret:
raise error.TestError("Fail to save tmp file")
convert_test.destroy_vm()
n_params = convert_test.convert()
convert_test.start_vm(n_params)
# check md5sum after conversion
ret = convert_test.check_file(t_file)
if not ret:
raise error.TestError("image content changed after convert")
convert_test.clean()
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册