Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
tp-qemu
提交
2062ad34
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,发现更多精彩内容 >>
提交
2062ad34
编写于
4月 12, 2017
作者:
C
Cong
提交者:
GitHub
4月 12, 2017
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #919 from aliang123/1372564
balloon_check: get guest memory after system up
上级
a8d2bc0f
a7e10c9d
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
41 addition
and
19 deletion
+41
-19
qemu/tests/balloon_check.py
qemu/tests/balloon_check.py
+41
-19
未找到文件。
qemu/tests/balloon_check.py
浏览文件 @
2062ad34
...
...
@@ -22,6 +22,8 @@ class BallooningTest(MemoryBaseTest):
self
.
vm
=
env
.
get_vm
(
params
[
"main_vm"
])
self
.
session
=
self
.
get_session
(
self
.
vm
)
logging
.
info
(
"Waiting 90s for guest's applications up"
)
time
.
sleep
(
90
)
self
.
ori_mem
=
self
.
get_vm_mem
(
self
.
vm
)
self
.
current_mmem
=
self
.
get_ballooned_memory
()
if
self
.
current_mmem
!=
self
.
ori_mem
:
...
...
@@ -62,11 +64,21 @@ class BallooningTest(MemoryBaseTest):
error
.
context
(
"Check memory status %s"
%
step
,
logging
.
info
)
mmem
=
self
.
get_ballooned_memory
()
gmem
=
self
.
get_memory_status
()
guest_ballooned_mem
=
abs
(
gmem
-
self
.
ori_gmem
)
if
(
abs
(
mmem
-
self
.
ori_mem
)
!=
ballooned_mem
or
(
abs
(
guest_ballooned_mem
-
ballooned_mem
)
>
100
)):
self
.
error_report
(
step
,
self
.
ori_mem
-
ballooned_mem
,
mmem
,
gmem
)
raise
error
.
TestFail
(
"Balloon test failed %s"
%
step
)
# for windows illegal test:set windows guest balloon in (1,100),free memory will less than 50M
if
ballooned_mem
>=
self
.
ori_mem
-
100
:
timeout
=
float
(
self
.
params
.
get
(
"login_timeout"
,
600
))
session
=
self
.
vm
.
wait_for_login
(
timeout
=
timeout
)
try
:
if
self
.
get_win_mon_free_mem
(
session
)
>
50
:
error
.
TestFail
(
"Balloon_min test failed %s"
%
step
)
finally
:
session
.
close
()
else
:
guest_ballooned_mem
=
abs
(
gmem
-
self
.
ori_gmem
)
if
(
abs
(
mmem
-
self
.
ori_mem
)
!=
ballooned_mem
or
(
abs
(
guest_ballooned_mem
-
ballooned_mem
)
>
100
)):
self
.
error_report
(
step
,
self
.
ori_mem
-
ballooned_mem
,
mmem
,
gmem
)
raise
error
.
TestFail
(
"Balloon test failed %s"
%
step
)
return
(
mmem
,
gmem
)
@
error
.
context_aware
...
...
@@ -86,12 +98,12 @@ class BallooningTest(MemoryBaseTest):
except
Exception
,
e
:
if
self
.
params
.
get
(
'illegal_value_check'
,
'no'
)
==
'no'
and
new_mem
!=
self
.
get_ballooned_memory
():
raise
error
.
TestFail
(
"Balloon memory fail with error message: %s"
%
e
)
time
.
sleep
(
60
)
if
new_mem
>
self
.
ori_mem
:
compare_mem
=
self
.
ori_mem
elif
new_mem
==
0
:
compare_mem
=
self
.
current_mmem
elif
new_mem
<=
100
:
time
.
sleep
(
60
)
self
.
current_mmem
=
self
.
get_ballooned_memory
()
compare_mem
=
self
.
current_mmem
else
:
...
...
@@ -195,8 +207,6 @@ class BallooningTest(MemoryBaseTest):
ballooned_memory
=
self
.
ori_mem
-
expect_mem
if
ballooned_memory
<
0
or
ballooned_memory
==
self
.
ori_mem
:
ballooned_memory
=
0
elif
ballooned_memory
>=
self
.
ori_mem
-
100
:
ballooned_memory
=
self
.
ori_mem
-
self
.
current_mmem
mmem
,
gmem
=
self
.
memory_check
(
"after %s memory"
%
tag
,
ballooned_memory
)
self
.
current_mmem
=
mmem
self
.
current_gmem
=
gmem
...
...
@@ -304,6 +314,22 @@ class BallooningTestWin(BallooningTest):
"""
return
int
(
self
.
get_used_mem
())
def
get_win_mon_free_mem
(
self
,
session
):
"""
Get Performance Monitored Free memory.
:param session: shell Object
:return string: freespace M-bytes
"""
cmd
=
'typeperf "\Memory\Free & Zero Page List Bytes" -sc 1'
status
,
output
=
session
.
cmd_status_output
(
cmd
)
if
status
==
0
:
free
=
"%s"
%
re
.
findall
(
"\d+\.\d+"
,
output
)[
2
]
free
=
float
(
utils_misc
.
normalize_data_size
(
free
,
order_magnitude
=
"M"
))
return
int
(
free
)
else
:
error
.
TestFail
(
"Failed to get windows guest free memory"
)
class
BallooningTestLinux
(
BallooningTest
):
...
...
@@ -354,8 +380,6 @@ def run(test, params, env):
balloon_test
=
BallooningTestWin
(
test
,
params
,
env
)
else
:
balloon_test
=
BallooningTestLinux
(
test
,
params
,
env
)
logging
.
info
(
"Waiting 90s for guest's applications up"
)
time
.
sleep
(
90
)
for
tag
in
params
.
objects
(
'test_tags'
):
error
.
context
(
"Running %s test"
%
tag
,
logging
.
info
)
...
...
@@ -365,18 +389,16 @@ def run(test, params, env):
elif
params_tag
.
get
(
'expect_memory_ratio'
):
expect_mem
=
int
(
balloon_test
.
ori_mem
*
float
(
params_tag
.
get
(
'expect_memory_ratio'
)))
elif
tag
==
'evict'
and
params_tag
.
get
(
'illegal_value_check'
,
'no'
)
==
'yes'
and
params
[
'os_type'
]
==
'windows'
:
expect_mem
=
int
(
random
.
uniform
(
0
,
100
))
elif
params_tag
.
get
(
'illegal_value_check'
,
'no'
)
==
'yes'
:
if
tag
==
'evict'
:
Wmem
=
int
(
random
.
uniform
(
1
,
100
))
expect_mem
=
Wmem
if
params
[
'os_type'
]
==
'windows'
else
0
else
:
expect_mem
=
int
(
balloon_test
.
ori_mem
+
random
.
uniform
(
1
,
1000
))
else
:
balloon_type
=
params_tag
[
'balloon_type'
]
min_sz
,
max_sz
=
balloon_test
.
get_memory_boundary
(
balloon_type
)
if
params_tag
.
get
(
'illegal_value_check'
,
'no'
)
==
'yes'
:
if
tag
==
'enlarge'
:
expect_mem
=
int
((
max_sz
)
+
random
.
uniform
(
1
,
1000
))
else
:
expect_mem
=
0
else
:
expect_mem
=
int
(
random
.
uniform
(
min_sz
,
max_sz
))
expect_mem
=
int
(
random
.
uniform
(
min_sz
,
max_sz
))
quit_after_test
=
balloon_test
.
run_ballooning_test
(
expect_mem
,
tag
)
if
quit_after_test
:
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录