Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
tp-qemu
提交
45fa5fa1
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,发现更多精彩内容 >>
未验证
提交
45fa5fa1
编写于
7月 07, 2020
作者:
Y
YongxueHong
提交者:
GitHub
7月 07, 2020
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #2283 from zhencliu/commit
remote storage server down/up when doing live commit
上级
3b8ad7f9
99412f7e
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
142 addition
and
0 deletion
+142
-0
qemu/tests/blockdev_commit_server_down.py
qemu/tests/blockdev_commit_server_down.py
+102
-0
qemu/tests/cfg/blockdev_commit_server_down.cfg
qemu/tests/cfg/blockdev_commit_server_down.cfg
+40
-0
未找到文件。
qemu/tests/blockdev_commit_server_down.py
0 → 100644
浏览文件 @
45fa5fa1
import
time
import
socket
from
provider
import
job_utils
from
provider
import
backup_utils
from
provider.blockdev_commit_base
import
BlockDevCommitTest
from
provider.nbd_image_export
import
QemuNBDExportImage
from
virttest
import
env_process
class
BlockdevCommitServerDown
(
BlockDevCommitTest
):
def
__init__
(
self
,
test
,
params
,
env
):
params
[
'nbd_export_format'
]
=
params
[
'image_format'
]
self
.
nbd_export
=
QemuNBDExportImage
(
params
,
params
[
"local_image_tag"
])
self
.
nbd_export
.
create_image
()
self
.
nbd_export
.
export_image
()
localhost
=
socket
.
gethostname
()
params
[
'nbd_server'
]
=
localhost
if
localhost
else
'localhost'
params
[
'images'
]
+=
' %s'
%
params
[
'nbd_image_tag'
]
env_process
.
preprocess_vm
(
test
,
params
,
env
,
params
[
"main_vm"
])
super
(
BlockdevCommitServerDown
,
self
).
__init__
(
test
,
params
,
env
)
def
check_commit_running
(
self
):
tmo
=
self
.
params
.
get_numeric
(
'commit_start_timeout'
,
5
)
# make sure commit is running, i.e. offset > 0
for
i
in
range
(
tmo
):
time
.
sleep
(
1
)
job
=
job_utils
.
get_block_job_by_id
(
self
.
main_vm
,
self
.
commit_job
)
if
job
[
'offset'
]
>
0
:
break
else
:
self
.
test
.
fail
(
"offset is 0 after %s seconds"
%
tmo
)
def
check_commit_process
(
self
):
offset
=
None
tmo
=
self
.
params
.
get_numeric
(
'server_down_elapsed_time'
)
# stop nbd server
self
.
nbd_export
.
stop_export
()
# check commit job should hang
for
i
in
range
(
tmo
):
time
.
sleep
(
1
)
job
=
job_utils
.
get_block_job_by_id
(
self
.
main_vm
,
self
.
commit_job
)
if
not
job
:
self
.
test
.
fail
(
"job cancelled in %d seconds"
%
tmo
)
if
offset
is
None
:
offset
=
job
[
'offset'
]
elif
offset
!=
job
[
'offset'
]:
self
.
test
.
fail
(
"offset changed: %s vs. %s"
%
(
offset
,
job
[
'offset'
]))
# resume nbd access
self
.
nbd_export
.
export_image
()
# set max speed
self
.
main_vm
.
monitor
.
set_block_job_speed
(
self
.
commit_job
,
0
)
# commit job should complete
job_utils
.
wait_until_block_job_completed
(
self
.
main_vm
,
self
.
commit_job
)
def
commit_snapshots
(
self
):
device_params
=
self
.
params
.
object_params
(
self
.
params
[
'nbd_image_tag'
])
snapshot_tags
=
device_params
[
"snapshot_tags"
].
split
()
args
=
self
.
params
.
copy_from_keys
([
'speed'
])
device
=
self
.
get_node_name
(
snapshot_tags
[
-
1
])
cmd
,
arguments
=
backup_utils
.
block_commit_qmp_cmd
(
device
,
**
args
)
self
.
main_vm
.
monitor
.
cmd
(
cmd
,
arguments
)
job
=
job_utils
.
query_block_jobs
(
self
.
main_vm
)[
0
]
self
.
commit_job
=
job
[
'device'
]
self
.
check_commit_running
()
self
.
check_commit_process
()
def
post_test
(
self
):
self
.
params
[
'images'
]
+=
' %s'
%
self
.
params
.
get
(
"local_image_tag"
)
self
.
nbd_export
.
stop_export
()
super
(
BlockdevCommitServerDown
,
self
).
post_test
()
def
run
(
test
,
params
,
env
):
"""
Block commit remote storage server down test
1. create a data disk and export it by qemu-nbd
2. boot vm with the exported nbd disk as its data disk
3. do live snapshots for the data disk
4. create a file on data disk and do live commit
5. stop nbd server
6. check the commit process should hang, offset keeps the same
7. start nbd server to export disk again
8. live commit should complete
"""
block_test
=
BlockdevCommitServerDown
(
test
,
params
,
env
)
block_test
.
run_test
()
qemu/tests/cfg/blockdev_commit_server_down.cfg
0 → 100644
浏览文件 @
45fa5fa1
- blockdev_commit_server_down:
only Linux
only filesystem
virt_test_type = qemu
type = blockdev_commit_server_down
qemu_force_use_drive_expression = no
start_vm = no
not_preprocess = yes
kill_vm = yes
storage_pools = default
storage_type_default = "directory"
storage_pool = default
# The following is specified for a local data image 'data',
# which will be exported by qemu-nbd
local_image_tag = data
image_size_data = 2G
image_name_data = data
nbd_port_data = 10810
# The following is specified for nbd image 'nbddata',
# i.e. the exported 'data', used as a data disk in VM
nbd_image_tag = nbddata
enable_nbd_nbddata = yes
storage_type_nbddata = nbd
nbd_reconnect_delay_nbddata = 30
nbd_port_nbddata = ${nbd_port_data}
image_format_nbddata = raw
image_size_nbddata = ${image_size_data}
# snapshot of the nbd image 'nbddata'
snapshot_tags_nbddata = sn1
image_size_sn1 = 2G
image_name_sn1 = sn1
image_format_sn1 = qcow2
device_tag = "${nbd_image_tag}"
rebase_mode = unsafe
server_down_elapsed_time = 5
speed = 81920
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录