Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
qemu
提交
8962e44f
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看板
提交
8962e44f
编写于
11月 21, 2012
作者:
S
Stefan Hajnoczi
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
test-iov: add iov_discard_front/back() testcases
Signed-off-by:
N
Stefan Hajnoczi
<
stefanha@redhat.com
>
上级
d0277635
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
150 addition
and
0 deletion
+150
-0
tests/test-iov.c
tests/test-iov.c
+150
-0
未找到文件。
tests/test-iov.c
浏览文件 @
8962e44f
...
...
@@ -250,11 +250,161 @@ static void test_io(void)
#endif
}
static
void
test_discard_front
(
void
)
{
struct
iovec
*
iov
;
struct
iovec
*
iov_tmp
;
unsigned
int
iov_cnt
;
unsigned
int
iov_cnt_tmp
;
void
*
old_base
;
size_t
size
;
size_t
ret
;
/* Discard zero bytes */
iov_random
(
&
iov
,
&
iov_cnt
);
iov_tmp
=
iov
;
iov_cnt_tmp
=
iov_cnt
;
ret
=
iov_discard_front
(
&
iov_tmp
,
&
iov_cnt_tmp
,
0
);
g_assert
(
ret
==
0
);
g_assert
(
iov_tmp
==
iov
);
g_assert
(
iov_cnt_tmp
==
iov_cnt
);
iov_free
(
iov
,
iov_cnt
);
/* Discard more bytes than vector size */
iov_random
(
&
iov
,
&
iov_cnt
);
iov_tmp
=
iov
;
iov_cnt_tmp
=
iov_cnt
;
size
=
iov_size
(
iov
,
iov_cnt
);
ret
=
iov_discard_front
(
&
iov_tmp
,
&
iov_cnt_tmp
,
size
+
1
);
g_assert
(
ret
==
size
);
g_assert
(
iov_cnt_tmp
==
0
);
iov_free
(
iov
,
iov_cnt
);
/* Discard entire vector */
iov_random
(
&
iov
,
&
iov_cnt
);
iov_tmp
=
iov
;
iov_cnt_tmp
=
iov_cnt
;
size
=
iov_size
(
iov
,
iov_cnt
);
ret
=
iov_discard_front
(
&
iov_tmp
,
&
iov_cnt_tmp
,
size
);
g_assert
(
ret
==
size
);
g_assert
(
iov_cnt_tmp
==
0
);
iov_free
(
iov
,
iov_cnt
);
/* Discard within first element */
iov_random
(
&
iov
,
&
iov_cnt
);
iov_tmp
=
iov
;
iov_cnt_tmp
=
iov_cnt
;
old_base
=
iov
->
iov_base
;
size
=
g_test_rand_int_range
(
1
,
iov
->
iov_len
);
ret
=
iov_discard_front
(
&
iov_tmp
,
&
iov_cnt_tmp
,
size
);
g_assert
(
ret
==
size
);
g_assert
(
iov_tmp
==
iov
);
g_assert
(
iov_cnt_tmp
==
iov_cnt
);
g_assert
(
iov_tmp
->
iov_base
==
old_base
+
size
);
iov_tmp
->
iov_base
=
old_base
;
/* undo before g_free() */
iov_free
(
iov
,
iov_cnt
);
/* Discard entire first element */
iov_random
(
&
iov
,
&
iov_cnt
);
iov_tmp
=
iov
;
iov_cnt_tmp
=
iov_cnt
;
ret
=
iov_discard_front
(
&
iov_tmp
,
&
iov_cnt_tmp
,
iov
->
iov_len
);
g_assert
(
ret
==
iov
->
iov_len
);
g_assert
(
iov_tmp
==
iov
+
1
);
g_assert
(
iov_cnt_tmp
==
iov_cnt
-
1
);
iov_free
(
iov
,
iov_cnt
);
/* Discard within second element */
iov_random
(
&
iov
,
&
iov_cnt
);
iov_tmp
=
iov
;
iov_cnt_tmp
=
iov_cnt
;
old_base
=
iov
[
1
].
iov_base
;
size
=
iov
->
iov_len
+
g_test_rand_int_range
(
1
,
iov
[
1
].
iov_len
);
ret
=
iov_discard_front
(
&
iov_tmp
,
&
iov_cnt_tmp
,
size
);
g_assert
(
ret
==
size
);
g_assert
(
iov_tmp
==
iov
+
1
);
g_assert
(
iov_cnt_tmp
==
iov_cnt
-
1
);
g_assert
(
iov_tmp
->
iov_base
==
old_base
+
(
size
-
iov
->
iov_len
));
iov_tmp
->
iov_base
=
old_base
;
/* undo before g_free() */
iov_free
(
iov
,
iov_cnt
);
}
static
void
test_discard_back
(
void
)
{
struct
iovec
*
iov
;
unsigned
int
iov_cnt
;
unsigned
int
iov_cnt_tmp
;
void
*
old_base
;
size_t
size
;
size_t
ret
;
/* Discard zero bytes */
iov_random
(
&
iov
,
&
iov_cnt
);
iov_cnt_tmp
=
iov_cnt
;
ret
=
iov_discard_back
(
iov
,
&
iov_cnt_tmp
,
0
);
g_assert
(
ret
==
0
);
g_assert
(
iov_cnt_tmp
==
iov_cnt
);
iov_free
(
iov
,
iov_cnt
);
/* Discard more bytes than vector size */
iov_random
(
&
iov
,
&
iov_cnt
);
iov_cnt_tmp
=
iov_cnt
;
size
=
iov_size
(
iov
,
iov_cnt
);
ret
=
iov_discard_back
(
iov
,
&
iov_cnt_tmp
,
size
+
1
);
g_assert
(
ret
==
size
);
g_assert
(
iov_cnt_tmp
==
0
);
iov_free
(
iov
,
iov_cnt
);
/* Discard entire vector */
iov_random
(
&
iov
,
&
iov_cnt
);
iov_cnt_tmp
=
iov_cnt
;
size
=
iov_size
(
iov
,
iov_cnt
);
ret
=
iov_discard_back
(
iov
,
&
iov_cnt_tmp
,
size
);
g_assert
(
ret
==
size
);
g_assert
(
iov_cnt_tmp
==
0
);
iov_free
(
iov
,
iov_cnt
);
/* Discard within last element */
iov_random
(
&
iov
,
&
iov_cnt
);
iov_cnt_tmp
=
iov_cnt
;
old_base
=
iov
[
iov_cnt
-
1
].
iov_base
;
size
=
g_test_rand_int_range
(
1
,
iov
[
iov_cnt
-
1
].
iov_len
);
ret
=
iov_discard_back
(
iov
,
&
iov_cnt_tmp
,
size
);
g_assert
(
ret
==
size
);
g_assert
(
iov_cnt_tmp
==
iov_cnt
);
g_assert
(
iov
[
iov_cnt
-
1
].
iov_base
==
old_base
);
iov_free
(
iov
,
iov_cnt
);
/* Discard entire last element */
iov_random
(
&
iov
,
&
iov_cnt
);
iov_cnt_tmp
=
iov_cnt
;
old_base
=
iov
[
iov_cnt
-
1
].
iov_base
;
size
=
iov
[
iov_cnt
-
1
].
iov_len
;
ret
=
iov_discard_back
(
iov
,
&
iov_cnt_tmp
,
size
);
g_assert
(
ret
==
size
);
g_assert
(
iov_cnt_tmp
==
iov_cnt
-
1
);
iov_free
(
iov
,
iov_cnt
);
/* Discard within second-to-last element */
iov_random
(
&
iov
,
&
iov_cnt
);
iov_cnt_tmp
=
iov_cnt
;
old_base
=
iov
[
iov_cnt
-
2
].
iov_base
;
size
=
iov
[
iov_cnt
-
1
].
iov_len
+
g_test_rand_int_range
(
1
,
iov
[
iov_cnt
-
2
].
iov_len
);
ret
=
iov_discard_back
(
iov
,
&
iov_cnt_tmp
,
size
);
g_assert
(
ret
==
size
);
g_assert
(
iov_cnt_tmp
==
iov_cnt
-
1
);
g_assert
(
iov
[
iov_cnt
-
2
].
iov_base
==
old_base
);
iov_free
(
iov
,
iov_cnt
);
}
int
main
(
int
argc
,
char
**
argv
)
{
g_test_init
(
&
argc
,
&
argv
,
NULL
);
g_test_rand_int
();
g_test_add_func
(
"/basic/iov/from-to-buf"
,
test_to_from_buf
);
g_test_add_func
(
"/basic/iov/io"
,
test_io
);
g_test_add_func
(
"/basic/iov/discard-front"
,
test_discard_front
);
g_test_add_func
(
"/basic/iov/discard-back"
,
test_discard_back
);
return
g_test_run
();
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录