Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
libvirt
提交
b1d29516
L
libvirt
项目概览
openeuler
/
libvirt
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
L
libvirt
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
b1d29516
编写于
12月 11, 2013
作者:
C
Cédric Bosdonnat
提交者:
Daniel P. Berrange
12月 11, 2013
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add network events unit tests
上级
2ef412bd
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
167 addition
and
0 deletion
+167
-0
tests/objecteventtest.c
tests/objecteventtest.c
+167
-0
未找到文件。
tests/objecteventtest.c
浏览文件 @
b1d29516
...
...
@@ -40,6 +40,18 @@ static const char domainDef[] =
" </os>"
"</domain>"
;
static
const
char
networkDef
[]
=
"<network>
\n
"
" <name>test</name>
\n
"
" <bridge name=
\"
virbr0
\"
/>
\n
"
" <forward/>
\n
"
" <ip address=
\"
192.168.122.1
\"
netmask=
\"
255.255.255.0
\"
>
\n
"
" <dhcp>
\n
"
" <range start=
\"
192.168.122.2
\"
end=
\"
192.168.122.254
\"
/>
\n
"
" </dhcp>
\n
"
" </ip>
\n
"
"</network>
\n
"
;
typedef
struct
{
int
startEvents
;
int
stopEvents
;
...
...
@@ -60,6 +72,7 @@ lifecycleEventCounter_reset(lifecycleEventCounter *counter)
typedef
struct
{
virConnectPtr
conn
;
virNetworkPtr
net
;
}
objecteventTest
;
...
...
@@ -92,6 +105,26 @@ domainLifecycleCb(virConnectPtr conn ATTRIBUTE_UNUSED,
return
0
;
}
static
void
networkLifecycleCb
(
virConnectPtr
conn
ATTRIBUTE_UNUSED
,
virNetworkPtr
net
ATTRIBUTE_UNUSED
,
int
event
,
int
detail
ATTRIBUTE_UNUSED
,
void
*
opaque
)
{
lifecycleEventCounter
*
counter
=
opaque
;
if
(
event
==
VIR_NETWORK_EVENT_STARTED
)
counter
->
startEvents
++
;
else
if
(
event
==
VIR_NETWORK_EVENT_STOPPED
)
counter
->
stopEvents
++
;
else
if
(
event
==
VIR_NETWORK_EVENT_DEFINED
)
counter
->
defineEvents
++
;
else
if
(
event
==
VIR_NETWORK_EVENT_UNDEFINED
)
counter
->
undefineEvents
++
;
}
static
int
testDomainCreateXML
(
const
void
*
data
)
{
...
...
@@ -222,6 +255,125 @@ cleanup:
return
ret
;
}
static
int
testNetworkCreateXML
(
const
void
*
data
)
{
const
objecteventTest
*
test
=
data
;
lifecycleEventCounter
counter
;
virNetworkPtr
net
;
int
id
;
int
ret
=
0
;
lifecycleEventCounter_reset
(
&
counter
);
id
=
virConnectNetworkEventRegisterAny
(
test
->
conn
,
NULL
,
VIR_NETWORK_EVENT_ID_LIFECYCLE
,
VIR_NETWORK_EVENT_CALLBACK
(
&
networkLifecycleCb
),
&
counter
,
NULL
);
net
=
virNetworkCreateXML
(
test
->
conn
,
networkDef
);
if
(
virEventRunDefaultImpl
()
<
0
)
{
ret
=
-
1
;
goto
cleanup
;
}
if
(
counter
.
startEvents
!=
1
||
counter
.
unexpectedEvents
>
0
)
{
ret
=
-
1
;
goto
cleanup
;
}
cleanup:
virConnectNetworkEventDeregisterAny
(
test
->
conn
,
id
);
virNetworkDestroy
(
net
);
virNetworkFree
(
net
);
return
ret
;
}
static
int
testNetworkDefine
(
const
void
*
data
)
{
const
objecteventTest
*
test
=
data
;
lifecycleEventCounter
counter
;
virNetworkPtr
net
;
int
id
;
int
ret
=
0
;
lifecycleEventCounter_reset
(
&
counter
);
id
=
virConnectNetworkEventRegisterAny
(
test
->
conn
,
NULL
,
VIR_NETWORK_EVENT_ID_LIFECYCLE
,
VIR_NETWORK_EVENT_CALLBACK
(
&
networkLifecycleCb
),
&
counter
,
NULL
);
/* Make sure the define event is triggered */
net
=
virNetworkDefineXML
(
test
->
conn
,
networkDef
);
if
(
virEventRunDefaultImpl
()
<
0
)
{
ret
=
-
1
;
goto
cleanup
;
}
if
(
counter
.
defineEvents
!=
1
||
counter
.
unexpectedEvents
>
0
)
{
ret
=
-
1
;
goto
cleanup
;
}
/* Make sure the undefine event is triggered */
virNetworkUndefine
(
net
);
if
(
virEventRunDefaultImpl
()
<
0
)
{
ret
=
-
1
;
goto
cleanup
;
}
if
(
counter
.
undefineEvents
!=
1
||
counter
.
unexpectedEvents
>
0
)
{
ret
=
-
1
;
goto
cleanup
;
}
cleanup:
virConnectNetworkEventDeregisterAny
(
test
->
conn
,
id
);
virNetworkFree
(
net
);
return
ret
;
}
static
int
testNetworkStartStopEvent
(
const
void
*
data
)
{
const
objecteventTest
*
test
=
data
;
lifecycleEventCounter
counter
;
int
id
;
int
ret
=
0
;
lifecycleEventCounter_reset
(
&
counter
);
id
=
virConnectNetworkEventRegisterAny
(
test
->
conn
,
test
->
net
,
VIR_NETWORK_EVENT_ID_LIFECYCLE
,
VIR_NETWORK_EVENT_CALLBACK
(
&
networkLifecycleCb
),
&
counter
,
NULL
);
virNetworkCreate
(
test
->
net
);
virNetworkDestroy
(
test
->
net
);
if
(
virEventRunDefaultImpl
()
<
0
)
{
ret
=
-
1
;
goto
cleanup
;
}
if
(
counter
.
startEvents
!=
1
||
counter
.
stopEvents
!=
1
||
counter
.
unexpectedEvents
>
0
)
{
ret
=
-
1
;
goto
cleanup
;
}
cleanup:
virConnectNetworkEventDeregisterAny
(
test
->
conn
,
id
);
return
ret
;
}
static
int
mymain
(
void
)
{
...
...
@@ -243,6 +395,21 @@ mymain(void)
if
(
virtTestRun
(
"Domain start stop events"
,
testDomainStartStopEvent
,
&
test
)
<
0
)
ret
=
EXIT_FAILURE
;
/* Network event tests */
/* Tests requiring the test network not to be set up*/
if
(
virtTestRun
(
"Network createXML start event "
,
testNetworkCreateXML
,
&
test
)
<
0
)
ret
=
EXIT_FAILURE
;
if
(
virtTestRun
(
"Network (un)define events"
,
testNetworkDefine
,
&
test
)
<
0
)
ret
=
EXIT_FAILURE
;
/* Define a test network */
test
.
net
=
virNetworkDefineXML
(
test
.
conn
,
networkDef
);
if
(
virtTestRun
(
"Network start stop events "
,
testNetworkStartStopEvent
,
&
test
)
<
0
)
ret
=
EXIT_FAILURE
;
/* Cleanup */
virNetworkUndefine
(
test
.
net
);
virNetworkFree
(
test
.
net
);
virConnectClose
(
test
.
conn
);
return
ret
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录