提交 7086330f 编写于 作者: L Lucas Meneghel Rodrigues

Merge pull request #61 from FengYang/qemu_disk_img

qemu.tests.qemu_disk_img: Do not use -c parameter in md5sum command.
......@@ -48,7 +48,7 @@
type = qemu_disk_img_rebase
rebase_mode = safe
base_format = qcow2
guest_file_name_image1 = "${tmp_dir}/base"
guest_file_name_image1 = "${tmp_dir}/test.img"
image_chain += " snA snB"
image_name_snA = "images/snA"
image_name_snB = "images/snB"
......@@ -56,7 +56,7 @@
guest_file_name_snB = "${tmp_dir}/snB"
variants:
- snB:
check_files = "${tmp_dir}/base ${tmp_dir}/snA ${tmp_dir}/snB"
check_files = "${tmp_dir}/test.img ${tmp_dir}/snA ${tmp_dir}/snB"
variants:
- to_base:
rebase_list = "snB > image1"
......@@ -64,7 +64,7 @@
image_chain += " snC"
image_name_snC = "images/snC"
guest_file_name_snC = "${tmp_dir}/snC"
check_files = "${tmp_dir}/base ${tmp_dir}/snA ${tmp_dir}/snB ${tmp_dir}/snC"
check_files = "${tmp_dir}/test.img ${tmp_dir}/snA ${tmp_dir}/snB ${tmp_dir}/snC"
variants:
- to_base:
rebase_list = "snC > image1"
......@@ -85,7 +85,7 @@
image_name_snD = "images/snD"
guest_file_name_snC = "${tmp_dir}/snC"
guest_file_name_snD = "${tmp_dir}/snD"
check_files = "${tmp_dir}/base ${tmp_dir}/snA ${tmp_dir}/snB ${tmp_dir}/snC ${tmp_dir}/snD"
check_files = "${tmp_dir}/test.img ${tmp_dir}/snA ${tmp_dir}/snB ${tmp_dir}/snC ${tmp_dir}/snD"
variants:
- to_snB_snA_base:
rebase_list = "snD > snB; snD > snA; snD > image1"
import os
import re
import logging
from autotest.client.shared import error
from autotest.client import utils
......@@ -80,24 +81,31 @@ class QemuImgTest(qemu_storage.QemuImg):
session = self.vm.wait_for_login(timeout=login_timeout)
md5bin = self.params["md5sum_bin"]
cmd = "%s %s" % (md5bin, cmd)
s, o = session.cmd_status_output(cmd)
if s != 0:
logging.info("Execute '%s' with failures('%s') " % (cmd, o))
return False
return True
status, output = session.cmd_status_output(cmd)
if status != 0:
logging.info("Execute '%s' with failures('%s') " % (cmd, output))
return None
md5 = re.findall("\w{32}", output)[0]
return md5
@error.context_aware
def save_file(self, dst):
error.context("save file('%s') md5sum in guest" % dst, logging.info)
self.__create_file(dst)
cmd = "%s > %s.md5 " % (dst, dst)
cmd = dst
return self.__md5sum(cmd)
@error.context_aware
def check_file(self, dst):
def check_file(self, dst, md5):
error.context("check file('%s') md5sum in guest" % dst, logging.info)
cmd = "-c %s.md5 " % dst
return self.__md5sum(cmd)
cmd = " %s" % dst
if md5 == self.__md5sum(cmd):
return True
else:
err = "Md5 value does not match. Expected value: %s" % md5
err += "Actual value: %s" % self.__md5sum(cmd)
logging.error(err)
return False
@error.context_aware
def destroy_vm(self):
......
......@@ -41,15 +41,15 @@ def run(test, params, env):
commit_test.start_vm(n_params)
# save file md5sum before commit
ret = commit_test.save_file(t_file)
if not ret:
md5 = commit_test.save_file(t_file)
if not md5:
raise error.TestError("Fail to save tmp file")
commit_test.destroy_vm()
commit_test.commit()
commit_test.start_vm(params)
# check md5sum after commit
ret = commit_test.check_file(t_file)
ret = commit_test.check_file(t_file, md5)
if not ret:
raise error.TestError("image content changed after commit")
commit_test.clean()
......@@ -49,15 +49,15 @@ def run(test, params, env):
convert_test.start_vm(n_params)
# save file md5sum before conversion
ret = convert_test.save_file(t_file)
if not ret:
md5 = convert_test.save_file(t_file)
if not md5:
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)
ret = convert_test.check_file(t_file, md5)
if not ret:
raise error.TestError("image content changed after convert")
convert_test.clean()
......@@ -60,6 +60,7 @@ def run(test, params, env):
"""
base_image = params.get("images", "image1").split()[0]
params_bak = copy.deepcopy(params)
md5_dict = {}
params.update(
{"image_name_%s" % base_image: params["image_name"],
"image_format_%s" % base_image: params["image_format"]})
......@@ -70,9 +71,10 @@ def run(test, params, env):
n_params = rebase_test.create_snapshot()
rebase_test.start_vm(n_params)
t_file = params["guest_file_name_%s" % tag]
ret = rebase_test.save_file(t_file)
if not ret:
md5 = rebase_test.save_file(t_file)
if not md5:
raise error.TestError("Fail to save tmp file")
md5_dict[t_file] = md5
rebase_test.destroy_vm()
# rebase snapshot image
......@@ -95,7 +97,7 @@ def run(test, params, env):
rebase_test.start_vm(t_params)
check_files = params.get("check_files", "").split()
for _file in check_files:
ret = rebase_test.check_file(_file)
ret = rebase_test.check_file(_file, md5_dict[_file])
if not ret:
raise error.TestError("Check md5sum fail (file:%s)" % _file)
rebase_test.destroy_vm()
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册