yandex-tank/Tank/stepper/util.py
Alexey Lavrenuke (load testing) e805717e64 remove obsolete code
2013-07-30 18:27:51 +04:00

44 lines
1.0 KiB
Python

'''
Utilities: parsers, converters, etc.
'''
import re
from itertools import islice
from module_exceptions import StepperConfigurationError
def take(number, iter):
return list(islice(iter, 0, number))
def parse_duration(duration):
'''
Parse duration string, such as '3h2m3s' into milliseconds
>>> parse_duration('3h2m3s')
10923000
>>> parse_duration('0.3s')
300
>>> parse_duration('5')
5000
'''
_re_token = re.compile("([0-9.]+)([dhms]?)")
def parse_token(time, multiplier):
multipliers = {
'h': 3600,
'm': 60,
's': 1,
}
if multiplier:
if multiplier in multipliers:
return int(float(time) * multipliers[multiplier] * 1000)
else:
raise StepperConfigurationError(
'Failed to parse duration: %s' % duration)
else:
return int(float(time) * 1000)
return sum(parse_token(*token) for token in _re_token.findall(duration))