提交 ab653459 编写于 作者: X Xu Tian

qemu.tests: add negative test for drive_mirror feature

Mirror block drive to readonly target.
Signed-off-by: NXu Tian <xutian@redhat.com>
上级 a8e74a24
......@@ -87,6 +87,13 @@
dd_cmd = "dd if=/dev/zero bs=1024 count=1024 of=tmp%s.file"
Windows:
clean_cmd = "del /F tmp*.file"
- negative_test:
negative_test = yes
variants:
- readonly_target:
create_mode = existing
before_start = readonly_target
before_cleanup = clear_readonly_bit
- with_stress:
type = drive_mirror_stress
reopen_timeout = 600
......
import re
import logging
import time
import random
from autotest.client.shared import error
from autotest.client.shared import utils
from qemu.tests import drive_mirror
......@@ -19,6 +21,18 @@ class DriveMirrorSimple(drive_mirror.DriveMirror):
if not self.get_status():
raise error.TestFail("No active job")
@error.context_aware
def readonly_target(self):
error.context("Set readonly bit on target image", logging.info)
cmd = "chattr +i %s" % self.target_image
return utils.system(cmd)
@error.context_aware
def clear_readonly_bit(self):
error.context("Clear readonly bit on target image", logging.info)
cmd = "chattr -i %s" % self.target_image
return utils.system(cmd)
def run(test, params, env):
"""
......@@ -39,9 +53,19 @@ def run(test, params, env):
for i in range(repeats):
v_max, v_min = int(params.get("login_timeout", 360)) / 4, 0
time.sleep(random.randint(v_min, v_max))
simple_test.start()
simple_test.action_before_start()
try:
simple_test.start()
except error.TestFail, detail:
if params.get("negative_test") == "yes":
if not re.search(r"No active.*job", str(detail), re.I):
raise error.TestFail("Block job not cancelled in"
"negative testing")
break
raise
simple_test.action_before_steady()
if simple_test.get_status():
simple_test.cancel()
finally:
simple_test.action_before_cleanup()
simple_test.clean()
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册