Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
tp-qemu
提交
12dff0f6
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,发现更多精彩内容 >>
提交
12dff0f6
编写于
3月 11, 2020
作者:
X
XuTian
提交者:
Xu Tian
3月 11, 2020
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add test case to test bitmap mode option
Signed-off-by:
N
XuTian
<
xutian@redhat.com
>
上级
f52f9642
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
156 addition
and
0 deletion
+156
-0
qemu/tests/blockdev_inc_backup_bitmap_mode_test.py
qemu/tests/blockdev_inc_backup_bitmap_mode_test.py
+119
-0
qemu/tests/cfg/blockdev_inc_backup_bitmap_mode_test.cfg
qemu/tests/cfg/blockdev_inc_backup_bitmap_mode_test.cfg
+37
-0
未找到文件。
qemu/tests/blockdev_inc_backup_bitmap_mode_test.py
0 → 100644
浏览文件 @
12dff0f6
import
logging
from
provider
import
backup_utils
from
provider
import
blockdev_base
from
provider
import
block_dirty_bitmap
class
BlockdevIncreamentalBackupBitmapTest
(
blockdev_base
.
BlockdevBaseTest
):
def
__init__
(
self
,
test
,
params
,
env
):
super
(
BlockdevIncreamentalBackupBitmapTest
,
self
).
__init__
(
test
,
params
,
env
)
self
.
source_images
=
[]
self
.
full_backups
=
[]
self
.
inc_backups
=
[]
self
.
bitmaps
=
[]
for
tag
in
params
.
objects
(
'source_images'
):
image_params
=
params
.
object_params
(
tag
)
image_chain
=
image_params
.
objects
(
"image_chain"
)
self
.
source_images
.
append
(
"drive_%s"
%
tag
)
self
.
full_backups
.
append
(
"drive_%s"
%
image_chain
[
0
])
self
.
inc_backups
.
append
(
"drive_%s"
%
image_chain
[
1
])
self
.
bitmaps
.
append
(
"bitmap_%s"
%
tag
)
inc_img_tag
=
image_chain
[
-
1
]
inc_img_params
=
params
.
object_params
(
inc_img_tag
)
inc_img_params
[
'image_chain'
]
=
image_params
[
'image_chain'
]
def
do_full_backup
(
self
):
extra_options
=
{
"sync"
:
"full"
,
"auto_disable_bitmap"
:
False
}
backup_utils
.
blockdev_batch_backup
(
self
.
main_vm
,
self
.
source_images
,
self
.
full_backups
,
self
.
bitmaps
,
**
extra_options
)
def
generate_inc_files
(
self
):
for
tag
in
self
.
params
.
objects
(
"source_images"
):
self
.
generate_data_file
(
tag
)
def
do_incremental_backup
(
self
):
sync_mode
=
self
.
params
.
get
(
"sync_mode"
,
"bitmap"
)
bitmap_mode
=
self
.
params
.
get
(
"bitmap_mode"
,
"always"
)
extra_options
=
{
'sync'
:
sync_mode
,
'bitmap-mode'
:
bitmap_mode
,
'auto_disable_bitmap'
:
False
}
logging
.
info
(
"bitmap sync mode: %s"
%
bitmap_mode
)
backup_utils
.
blockdev_batch_backup
(
self
.
main_vm
,
self
.
source_images
,
self
.
inc_backups
,
self
.
bitmaps
,
**
extra_options
)
def
get_bitmaps_info
(
self
):
out
=
[]
for
idx
,
bitmap
in
enumerate
(
self
.
bitmaps
):
node
=
self
.
source_images
[
idx
]
info
=
block_dirty_bitmap
.
get_bitmap_by_name
(
self
.
main_vm
,
node
,
bitmap
)
out
.
append
(
info
)
return
out
def
do_test
(
self
):
self
.
do_full_backup
()
self
.
generate_inc_files
()
self
.
main_vm
.
pause
()
self
.
do_incremental_backup
()
self
.
check_bitmaps
()
self
.
compare_image
()
def
check_bitmaps
(
self
):
bitmap_mode
=
self
.
params
.
get
(
"bitmap_mode"
,
"always"
)
for
info
in
self
.
get_bitmaps_info
():
if
bitmap_mode
==
"never"
:
keyword
=
"is"
condiction
=
info
[
"count"
]
>
0
else
:
keyword
=
"is not"
condiction
=
info
[
"count"
]
==
0
assert
condiction
,
"bitmap '%s' %s clear in '%s' mode:
\n
%s"
%
(
info
[
"name"
],
keyword
,
bitmap_mode
,
info
)
def
compare_image
(
self
):
self
.
main_vm
.
destroy
()
for
src_tag
in
self
.
params
.
objects
(
"source_images"
):
src_params
=
self
.
params
.
object_params
(
src_tag
)
overlay_tag
=
src_params
.
objects
(
"image_chain"
)[
-
1
]
src_img
=
self
.
disk_define_by_params
(
self
.
params
,
src_tag
)
dst_img
=
self
.
disk_define_by_params
(
self
.
params
,
overlay_tag
)
result
=
src_img
.
compare_to
(
dst_img
)
assert
result
.
exit_status
==
0
,
result
.
stdout
def
run
(
test
,
params
,
env
):
"""
Blockdev incremental backup test
test steps:
1. boot VM with one or two data disks
2. make filesystem in data disks
3. create file and save it md5sum in data disks
4. add target disks for backup to VM via qmp commands
5. do full backup
6. create new files and save it md5sum in data disks
7. do incremental backup with bitmap-mode option
8. check bitmap count
9. compare overlay image and source image(optional)
:param test: test object
:param params: test configuration dict
:param env: env object
"""
inc_test
=
BlockdevIncreamentalBackupBitmapTest
(
test
,
params
,
env
)
inc_test
.
run_test
()
qemu/tests/cfg/blockdev_inc_backup_bitmap_mode_test.cfg
0 → 100644
浏览文件 @
12dff0f6
- blockdev_inc_backup_bitmap_mode:
type = blockdev_inc_backup_bitmap_mode_test
virt_test_type = qemu
images += " data"
image_chain_data = "base inc"
backing_inc = base
force_remove_image_image1 = no
force_create_image_image1 = no
force_create_image_data = yes
force_remove_image_data = yes
start_vm = no
storage_pools = default
storage_pool = default
storage_type_default = "directory"
image_size_data = 2G
image_size_base = 2G
image_size_inc = 2G
image_format_data = qcow2
image_format_base = qcow2
image_format_inc = qcow2
image_name_data = data
image_name_base = base
image_name_inc = inc
source_images = "data"
rebase_mode = unsafe
only Linux
qemu_force_use_drive_expression = no
variants:
- bitmap_always:
bitmap_mode = always
- bitmap_never:
bitmap_mode = never
- bitmap_success:
bitmap_mode = on-success
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录