Update time tools

Change-Id: I52b8e5f8fc0dbbfb2c10a80929e52ec1e043427f
This commit is contained in:
Federico Ressi 2020-08-10 17:40:11 +02:00
parent 0b7446dc64
commit 8915ded3da
3 changed files with 49 additions and 1 deletions

View File

@ -84,10 +84,10 @@ get_operation_name = _operation.get_operation_name
operation_config = _operation.operation_config
retry = _retry.retry
Retry = _retry.Retry
retry_attempt = _retry.retry_attempt
retry_on_exception = _retry.retry_on_exception
retry_test_case = _retry.retry_test_case
Retry = _retry.Retry
RetryAttempt = _retry.RetryAttempt
RetryCountLimitError = _retry.RetryCountLimitError
RetryLimitError = _retry.RetryLimitError
@ -110,12 +110,15 @@ pop_test_case = _testcase.pop_test_case
push_test_case = _testcase.push_test_case
TestCasesManager = _testcase.TestCasesManager
min_seconds = _time.min_seconds
max_seconds = _time.max_seconds
Seconds = _time.Seconds
SecondsValueError = _time.SecondsValueError
sleep = _time.sleep
time = _time.time
to_seconds = _time.to_seconds
to_seconds_float = _time.to_seconds_float
true_seconds = _time.true_seconds
get_short_hostname = _utils.get_short_hostname

View File

@ -46,3 +46,28 @@ def time() -> float:
def sleep(seconds: Seconds):
_time.sleep(to_seconds_float(seconds))
def true_seconds(*seconds: Seconds) -> typing.List[float]:
result = []
for value in seconds:
value = to_seconds(value)
if value is not None:
result.append(value)
return result
def min_seconds(*seconds: Seconds) -> Seconds:
values = true_seconds(*seconds)
if values:
return min(values)
else:
return None
def max_seconds(*seconds: Seconds) -> Seconds:
values = true_seconds(*seconds)
if values:
return max(values)
else:
return None

View File

@ -128,3 +128,23 @@ class TimeTest(unit.TobikoUnitTest):
result = tobiko.to_seconds_float(seconds)
expected = seconds and max(0., float(seconds)) or 0.
self.assertEqual(expected, result)
def test_true_seconds(self):
self.assertEqual([], tobiko.true_seconds())
self.assertEqual([], tobiko.true_seconds(None))
self.assertEqual([], tobiko.true_seconds(None, None))
self.assertEqual([1., 2., 3., 4.],
tobiko.true_seconds(None, 1, None, 2., '3', None, 4,
None))
def test_min_seconds(self):
self.assertIsNone(tobiko.min_seconds())
self.assertIsNone(tobiko.min_seconds(None))
self.assertIsNone(tobiko.min_seconds(None, None))
self.assertEqual(1.5, tobiko.min_seconds(3, 2., '1.5'))
def test_max_seconds(self):
self.assertIsNone(tobiko.max_seconds())
self.assertIsNone(tobiko.max_seconds(None))
self.assertIsNone(tobiko.max_seconds(None, None))
self.assertEqual(3., tobiko.max_seconds(2., 3, '1.5'))