未验证 提交 41228f83 编写于 作者: X Xu Han 提交者: GitHub

Merge pull request #1146 from huangyum/balloon_check

balloon_check: Fix bug when utils_misc.wait_for() timeout
......@@ -2,10 +2,13 @@ import time
import re
import logging
import random
from autotest.client.shared import error
from avocado.core import exceptions
from virttest import qemu_monitor
from virttest import utils_test
from virttest import utils_misc
from virttest import error_context
from virttest.utils_test.qemu import MemoryBaseTest
......@@ -49,7 +52,7 @@ class BallooningTest(MemoryBaseTest):
return 0
return ballooned_mem
@error.context_aware
@error_context.context_aware
def memory_check(self, step, ballooned_mem):
"""
Check memory status according expect values
......@@ -61,7 +64,7 @@ class BallooningTest(MemoryBaseTest):
:return: memory size get from monitor and guest
:rtype: tuple
"""
error.context("Check memory status %s" % step, logging.info)
error_context.context("Check memory status %s" % step, logging.info)
mmem = self.get_ballooned_memory()
gmem = self.get_memory_status()
# for windows illegal test:set windows guest balloon in (1,100),free memory will less than 50M
......@@ -70,7 +73,7 @@ class BallooningTest(MemoryBaseTest):
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)
self.test.fail("Balloon_min test failed %s" % step)
finally:
session.close()
else:
......@@ -78,10 +81,10 @@ class BallooningTest(MemoryBaseTest):
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)
raise exceptions.TestFail("Balloon test failed %s" % step)
return (mmem, gmem)
@error.context_aware
@error_context.context_aware
def balloon_memory(self, new_mem):
"""
Baloon memory to new_mem and verifies on both qemu monitor and
......@@ -91,13 +94,14 @@ class BallooningTest(MemoryBaseTest):
:type new_mem: int
"""
self.env["balloon_test"] = 0
error.context("Change VM memory to %s" % new_mem, logging.info)
error_context.context("Change VM memory to %s" % new_mem, logging.info)
try:
self.vm.balloon(new_mem)
self.env["balloon_test"] = 1
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)
raise exceptions.TestFail("Balloon memory fail with error"
" message: %s" % e)
if new_mem > self.ori_mem:
compare_mem = self.ori_mem
elif new_mem == 0:
......@@ -113,7 +117,7 @@ class BallooningTest(MemoryBaseTest):
self.get_ballooned_memory()),
balloon_timeout)
if status is None:
raise error.TestFail("Failed to balloon memory to expect"
raise exceptions.TestFail("Failed to balloon memory to expect"
" value during %ss" % balloon_timeout)
def run_balloon_sub_test(self, test, params, env, test_tag):
......@@ -199,7 +203,7 @@ class BallooningTest(MemoryBaseTest):
min_size = max(used_size, min_size)
return min_size, max_size
@error.context_aware
@error_context.context_aware
def run_ballooning_test(self, expect_mem, tag):
"""
Run a loop of ballooning test
......@@ -214,7 +218,7 @@ class BallooningTest(MemoryBaseTest):
def _memory_check_after_sub_test():
try:
output = self.memory_check("after subtest", ballooned_mem)
except error.TestFail:
except exceptions.TestFail:
return None
return output
......@@ -246,11 +250,12 @@ class BallooningTest(MemoryBaseTest):
ballooned_mem = abs(self.ori_mem - expect_mem)
msg = "Wait memory balloon back after "
msg += params_tag['sub_test_after_balloon']
mmem, gmem = utils_misc.wait_for(_memory_check_after_sub_test,
ret = utils_misc.wait_for(_memory_check_after_sub_test,
timeout, sleep_before_check, 5, msg)
self.current_mmem = mmem
self.current_gmem = gmem
if not ret:
self.test.fail("After sub test, memory check failed")
self.current_mmem = ret[0]
self.current_gmem = ret[1]
return False
def reset_memory(self):
......@@ -348,7 +353,7 @@ class BallooningTestWin(BallooningTest):
free = float(utils_misc.normalize_data_size(free, order_magnitude="M"))
return int(free)
else:
error.TestFail("Failed to get windows guest free memory")
self.test.fail("Failed to get windows guest free memory")
class BallooningTestLinux(BallooningTest):
......@@ -383,7 +388,7 @@ class BallooningTestLinux(BallooningTest):
return int(self.get_total_mem())
@error.context_aware
@error_context.context_aware
def run(test, params, env):
"""
Check Memory ballooning, use M when compare memory in this script:
......@@ -402,7 +407,7 @@ def run(test, params, env):
balloon_test = BallooningTestLinux(test, params, env)
for tag in params.objects('test_tags'):
error.context("Running %s test" % tag, logging.info)
error_context.context("Running %s test" % tag, logging.info)
params_tag = params.object_params(tag)
if params_tag.get('expect_memory'):
expect_mem = int(params_tag.get('expect_memory'))
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册