Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
qemu
提交
acebcf8d
Q
qemu
项目概览
openeuler
/
qemu
通知
10
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Q
qemu
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
acebcf8d
编写于
12月 18, 2017
作者:
K
Kevin Wolf
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
test-bdrv-drain: Test graph changes in drained section
Signed-off-by:
N
Kevin Wolf
<
kwolf@redhat.com
>
上级
d736f119
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
80 addition
and
0 deletion
+80
-0
tests/test-bdrv-drain.c
tests/test-bdrv-drain.c
+80
-0
未找到文件。
tests/test-bdrv-drain.c
浏览文件 @
acebcf8d
...
...
@@ -411,6 +411,85 @@ static void test_multiparent(void)
blk_unref
(
blk_b
);
}
static
void
test_graph_change
(
void
)
{
BlockBackend
*
blk_a
,
*
blk_b
;
BlockDriverState
*
bs_a
,
*
bs_b
,
*
backing
;
BDRVTestState
*
a_s
,
*
b_s
,
*
backing_s
;
blk_a
=
blk_new
(
BLK_PERM_ALL
,
BLK_PERM_ALL
);
bs_a
=
bdrv_new_open_driver
(
&
bdrv_test
,
"test-node-a"
,
BDRV_O_RDWR
,
&
error_abort
);
a_s
=
bs_a
->
opaque
;
blk_insert_bs
(
blk_a
,
bs_a
,
&
error_abort
);
blk_b
=
blk_new
(
BLK_PERM_ALL
,
BLK_PERM_ALL
);
bs_b
=
bdrv_new_open_driver
(
&
bdrv_test
,
"test-node-b"
,
BDRV_O_RDWR
,
&
error_abort
);
b_s
=
bs_b
->
opaque
;
blk_insert_bs
(
blk_b
,
bs_b
,
&
error_abort
);
backing
=
bdrv_new_open_driver
(
&
bdrv_test
,
"backing"
,
0
,
&
error_abort
);
backing_s
=
backing
->
opaque
;
bdrv_set_backing_hd
(
bs_a
,
backing
,
&
error_abort
);
g_assert_cmpint
(
bs_a
->
quiesce_counter
,
==
,
0
);
g_assert_cmpint
(
bs_b
->
quiesce_counter
,
==
,
0
);
g_assert_cmpint
(
backing
->
quiesce_counter
,
==
,
0
);
g_assert_cmpint
(
a_s
->
drain_count
,
==
,
0
);
g_assert_cmpint
(
b_s
->
drain_count
,
==
,
0
);
g_assert_cmpint
(
backing_s
->
drain_count
,
==
,
0
);
do_drain_begin
(
BDRV_SUBTREE_DRAIN
,
bs_a
);
do_drain_begin
(
BDRV_SUBTREE_DRAIN
,
bs_a
);
do_drain_begin
(
BDRV_SUBTREE_DRAIN
,
bs_a
);
do_drain_begin
(
BDRV_SUBTREE_DRAIN
,
bs_b
);
do_drain_begin
(
BDRV_SUBTREE_DRAIN
,
bs_b
);
bdrv_set_backing_hd
(
bs_b
,
backing
,
&
error_abort
);
g_assert_cmpint
(
bs_a
->
quiesce_counter
,
==
,
5
);
g_assert_cmpint
(
bs_b
->
quiesce_counter
,
==
,
5
);
g_assert_cmpint
(
backing
->
quiesce_counter
,
==
,
5
);
g_assert_cmpint
(
a_s
->
drain_count
,
==
,
5
);
g_assert_cmpint
(
b_s
->
drain_count
,
==
,
5
);
g_assert_cmpint
(
backing_s
->
drain_count
,
==
,
5
);
bdrv_set_backing_hd
(
bs_b
,
NULL
,
&
error_abort
);
g_assert_cmpint
(
bs_a
->
quiesce_counter
,
==
,
3
);
g_assert_cmpint
(
bs_b
->
quiesce_counter
,
==
,
2
);
g_assert_cmpint
(
backing
->
quiesce_counter
,
==
,
3
);
g_assert_cmpint
(
a_s
->
drain_count
,
==
,
3
);
g_assert_cmpint
(
b_s
->
drain_count
,
==
,
2
);
g_assert_cmpint
(
backing_s
->
drain_count
,
==
,
3
);
bdrv_set_backing_hd
(
bs_b
,
backing
,
&
error_abort
);
g_assert_cmpint
(
bs_a
->
quiesce_counter
,
==
,
5
);
g_assert_cmpint
(
bs_b
->
quiesce_counter
,
==
,
5
);
g_assert_cmpint
(
backing
->
quiesce_counter
,
==
,
5
);
g_assert_cmpint
(
a_s
->
drain_count
,
==
,
5
);
g_assert_cmpint
(
b_s
->
drain_count
,
==
,
5
);
g_assert_cmpint
(
backing_s
->
drain_count
,
==
,
5
);
do_drain_end
(
BDRV_SUBTREE_DRAIN
,
bs_b
);
do_drain_end
(
BDRV_SUBTREE_DRAIN
,
bs_b
);
do_drain_end
(
BDRV_SUBTREE_DRAIN
,
bs_a
);
do_drain_end
(
BDRV_SUBTREE_DRAIN
,
bs_a
);
do_drain_end
(
BDRV_SUBTREE_DRAIN
,
bs_a
);
g_assert_cmpint
(
bs_a
->
quiesce_counter
,
==
,
0
);
g_assert_cmpint
(
bs_b
->
quiesce_counter
,
==
,
0
);
g_assert_cmpint
(
backing
->
quiesce_counter
,
==
,
0
);
g_assert_cmpint
(
a_s
->
drain_count
,
==
,
0
);
g_assert_cmpint
(
b_s
->
drain_count
,
==
,
0
);
g_assert_cmpint
(
backing_s
->
drain_count
,
==
,
0
);
bdrv_unref
(
backing
);
bdrv_unref
(
bs_a
);
bdrv_unref
(
bs_b
);
blk_unref
(
blk_a
);
blk_unref
(
blk_b
);
}
typedef
struct
TestBlockJob
{
BlockJob
common
;
...
...
@@ -561,6 +640,7 @@ int main(int argc, char **argv)
g_test_add_func
(
"/bdrv-drain/nested"
,
test_nested
);
g_test_add_func
(
"/bdrv-drain/multiparent"
,
test_multiparent
);
g_test_add_func
(
"/bdrv-drain/graph-change"
,
test_graph_change
);
g_test_add_func
(
"/bdrv-drain/blockjob/drain_all"
,
test_blockjob_drain_all
);
g_test_add_func
(
"/bdrv-drain/blockjob/drain"
,
test_blockjob_drain
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录