2014-02-24 21:21:58 +00:00
|
|
|
from pytest import raises
|
|
|
|
from teuthology import contextutil
|
2014-03-08 21:19:31 +00:00
|
|
|
from logging import ERROR
|
2014-02-24 21:21:58 +00:00
|
|
|
|
|
|
|
|
|
|
|
class TestSafeWhile(object):
|
|
|
|
|
|
|
|
def setup(self):
|
2014-03-08 21:19:31 +00:00
|
|
|
contextutil.log.setLevel(ERROR)
|
2014-02-24 21:21:58 +00:00
|
|
|
self.fake_sleep = lambda s: True
|
|
|
|
self.s_while = contextutil.safe_while
|
|
|
|
|
2014-03-07 19:33:27 +00:00
|
|
|
def test_6_5_10_deal(self):
|
2014-02-24 21:21:58 +00:00
|
|
|
with raises(contextutil.MaxWhileTries):
|
2014-03-08 21:19:31 +00:00
|
|
|
with self.s_while(_sleeper=self.fake_sleep) as proceed:
|
|
|
|
while proceed():
|
|
|
|
pass
|
2014-02-24 21:21:58 +00:00
|
|
|
|
2014-03-07 19:33:27 +00:00
|
|
|
def test_6_0_1_deal(self):
|
2014-02-24 21:21:58 +00:00
|
|
|
with raises(contextutil.MaxWhileTries) as error:
|
|
|
|
with self.s_while(
|
|
|
|
tries=1,
|
|
|
|
_sleeper=self.fake_sleep
|
2014-03-08 21:19:31 +00:00
|
|
|
) as proceed:
|
|
|
|
while proceed():
|
|
|
|
pass
|
2014-02-24 21:21:58 +00:00
|
|
|
|
|
|
|
msg = error.value[0]
|
2014-03-07 19:33:27 +00:00
|
|
|
assert 'waiting for 6 seconds' in msg
|
2014-02-24 21:21:58 +00:00
|
|
|
|
2014-03-07 19:33:27 +00:00
|
|
|
def test_1_0_10_deal(self):
|
2014-02-24 21:21:58 +00:00
|
|
|
with raises(contextutil.MaxWhileTries) as error:
|
|
|
|
with self.s_while(
|
|
|
|
sleep=1,
|
|
|
|
_sleeper=self.fake_sleep
|
2014-03-08 21:19:31 +00:00
|
|
|
) as proceed:
|
|
|
|
while proceed():
|
|
|
|
pass
|
2014-02-24 21:21:58 +00:00
|
|
|
|
|
|
|
msg = error.value[0]
|
2014-03-07 19:33:27 +00:00
|
|
|
assert 'waiting for 10 seconds' in msg
|
2014-02-24 21:21:58 +00:00
|
|
|
|
2014-03-07 19:33:27 +00:00
|
|
|
def test_6_1_10_deal(self):
|
2014-02-24 21:21:58 +00:00
|
|
|
with raises(contextutil.MaxWhileTries) as error:
|
|
|
|
with self.s_while(
|
|
|
|
increment=1,
|
|
|
|
_sleeper=self.fake_sleep
|
2014-03-08 21:19:31 +00:00
|
|
|
) as proceed:
|
|
|
|
while proceed():
|
|
|
|
pass
|
2014-02-24 21:21:58 +00:00
|
|
|
|
|
|
|
msg = error.value[0]
|
2014-03-07 19:33:27 +00:00
|
|
|
assert 'waiting for 105 seconds' in msg
|
2014-03-07 20:02:33 +00:00
|
|
|
|
|
|
|
def test_action(self):
|
|
|
|
with raises(contextutil.MaxWhileTries) as error:
|
|
|
|
with self.s_while(
|
|
|
|
action='doing the thing',
|
|
|
|
_sleeper=self.fake_sleep
|
2014-03-08 21:19:31 +00:00
|
|
|
) as proceed:
|
|
|
|
while proceed():
|
|
|
|
pass
|
2014-03-07 20:02:33 +00:00
|
|
|
|
|
|
|
msg = error.value[0]
|
|
|
|
assert "'doing the thing'" in msg
|
2014-03-08 21:19:31 +00:00
|
|
|
|
|
|
|
def test_no_raise(self):
|
|
|
|
with self.s_while(_raise=False, _sleeper=self.fake_sleep) as proceed:
|
|
|
|
while proceed():
|
|
|
|
pass
|
|
|
|
|
|
|
|
assert True
|