Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
tp-qemu
提交
ed89523c
T
tp-qemu
项目概览
openeuler
/
tp-qemu
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
tp-qemu
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
ed89523c
编写于
4月 13, 2020
作者:
Q
qingwangrh
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add new case checking provisioning mode
Signed-off-by:
N
qingwangrh
<
qinwang@redhat.com
>
上级
c2aefbfc
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
123 addition
and
0 deletion
+123
-0
qemu/tests/cfg/thin_provision_check_mode.cfg
qemu/tests/cfg/thin_provision_check_mode.cfg
+24
-0
qemu/tests/thin_provision_check_mode.py
qemu/tests/thin_provision_check_mode.py
+99
-0
未找到文件。
qemu/tests/cfg/thin_provision_check_mode.cfg
0 → 100644
浏览文件 @
ed89523c
- thin_provision_check_mode:
only Linux
only virtio_scsi
type = thin_provision_check_mode
start_vm = no
kill_vm = yes
disk_size = 1024
post_command = "modprobe -r scsi_debug"
target_mode = "unmap"
disk_serial = TARGET_DISK1
data_tag = "stg1"
images += " ${data_tag}"
drv_extra_params_stg1 += "discard=unmap"
blk_extra_params_stg1 += "serial=${disk_serial}"
image_format_stg1 = raw
image_raw_device_stg1 = yes
force_create_image_stg1 = no
remove_image_stg1 = no
not_preprocess = yes
variants:
- unmap:
pre_command = "modprobe -r scsi_debug; modprobe scsi_debug dev_size_mb=${disk_size} lbpu=1 lbpws=1 lbprz=0"
- writesame:
pre_command = "modprobe -r scsi_debug; modprobe scsi_debug dev_size_mb=${disk_size} lbpu=0 lbpws=1 lbprz=0"
qemu/tests/thin_provision_check_mode.py
0 → 100644
浏览文件 @
ed89523c
import
os
import
logging
from
avocado.utils
import
genio
from
avocado.utils
import
path
as
utils_path
from
avocado.utils
import
process
from
virttest
import
env_process
from
virttest
import
error_context
from
virttest.utils_misc
import
get_linux_drive_path
@
error_context
.
context_aware
def
run
(
test
,
params
,
env
):
"""
Qemu provisioning mode checking test:
1) load scsi_debug module with lbpu=1 / lbpu=0
2) boot guest with scsi_debug emulated disk as extra data disk
3) get provisioning mode of data disk in guest
4) check provisioning mode
:param test: kvm test object
:param params: Dictionary with the test parameters
:param env: Dictionary with test environment.
"""
def
get_host_scsi_disk
():
"""
Get scsi disk which emulated by scsi_debug module.
"""
cmd
=
"lsblk -S -n -p|grep scsi_debug"
status
,
output
=
process
.
getstatusoutput
(
cmd
)
if
status
!=
0
:
test
.
fail
(
"Can not get scsi_debug disk on host"
)
scsi_disk_info
=
output
.
strip
().
split
()
return
scsi_disk_info
[
1
],
scsi_disk_info
[
0
]
def
get_provisioning_mode
(
device
,
host_id
):
"""
Get disk provisioning_mode, value usually is 'writesame_16' or 'unmap',
depends on params for scsi_debug module.
"""
device_name
=
os
.
path
.
basename
(
device
)
path
=
"/sys/block/%s/device/scsi_disk"
%
device_name
path
+=
"/%s/provisioning_mode"
%
host_id
return
genio
.
read_one_line
(
path
).
strip
()
def
get_guest_provisioning_mode
(
device
):
"""
Get disk provisioning_mode in guest
"""
cmd
=
"lsblk -S -n %s"
%
device
status
,
output
=
session
.
cmd_status_output
(
cmd
)
if
status
!=
0
:
test
.
fail
(
"Can not find device %s in guest"
%
device
)
host_id
=
output
.
split
()[
1
]
cmd
=
"cat /sys/bus/scsi/devices/{0}/scsi_disk/{0}/provisioning_mode"
.
format
(
host_id
)
status
,
output
=
session
.
cmd_status_output
(
cmd
)
if
status
==
0
:
return
output
.
strip
()
test
.
fail
(
"Can not get provisioning mode %s in guest"
%
host_id
)
utils_path
.
find_command
(
"lsblk"
)
host_scsi_id
,
disk_name
=
get_host_scsi_disk
()
provisioning_mode
=
get_provisioning_mode
(
disk_name
,
host_scsi_id
)
logging
.
info
(
"Current host provisioning_mode = '%s'"
,
provisioning_mode
)
# prepare params to boot vm with scsi_debug disk.
vm_name
=
params
[
"main_vm"
]
data_tag
=
params
[
"data_tag"
]
target_mode
=
params
[
"target_mode"
]
disk_serial
=
params
[
"disk_serial"
]
params
[
"start_vm"
]
=
"yes"
params
[
"image_name_%s"
%
data_tag
]
=
disk_name
error_context
.
context
(
"boot guest with disk '%s'"
%
disk_name
,
logging
.
info
)
# boot guest with scsi_debug disk
env_process
.
preprocess_vm
(
test
,
params
,
env
,
vm_name
)
vm
=
env
.
get_vm
(
vm_name
)
vm
.
verify_alive
()
timeout
=
float
(
params
.
get
(
"login_timeout"
,
240
))
session
=
vm
.
wait_for_login
(
timeout
=
timeout
)
output_path
=
get_linux_drive_path
(
session
,
disk_serial
)
if
not
output_path
:
test
.
fail
(
"Can not get output file path in guest."
)
mode
=
get_guest_provisioning_mode
(
output_path
)
error_context
.
context
(
"Checking provision mode %s"
%
mode
,
logging
.
info
)
if
mode
!=
target_mode
:
test
.
fail
(
"Got unexpected mode:%s"
,
mode
)
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录