Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test_timeout():
duration = 0.005
below_duration = duration - old_div(duration, 2)
above_duration = duration + old_div(duration, 2)
def func():
time.sleep(duration)
return 42
def errfunc():
raise ValueError('Something went wrong')
assert timeout(func, timeout_secs=below_duration) is False
assert timeout(func, timeout_secs=above_duration) == 42
# FIXME: Better catch and report the exception?
# FIXME: Derive "timeout_secs" from "duration"
with pytest.raises(ValueError) as excinfo:
timeout(errfunc, timeout_secs=0.10, default='foobar')
excinfo.message == 'Something went wrong'
above_duration = duration + old_div(duration, 2)
def func():
time.sleep(duration)
return 42
def errfunc():
raise ValueError('Something went wrong')
assert timeout(func, timeout_secs=below_duration) is False
assert timeout(func, timeout_secs=above_duration) == 42
# FIXME: Better catch and report the exception?
# FIXME: Derive "timeout_secs" from "duration"
with pytest.raises(ValueError) as excinfo:
timeout(errfunc, timeout_secs=0.10, default='foobar')
excinfo.message == 'Something went wrong'
text = render_template(template, transform_data)
if text is not None:
item['message'] = text
except Exception as e:
logger.warning("Cannot render `%s' template: %s" % (template, e))
if item.get('message') is not None and len(item.get('message')) > 0:
st = Struct(**item)
notified = False
logger.info("Invoking service plugin for `%s'" % service)
try:
# Fire the plugin in a separate thread and kill it if it doesn't return in 10s
module = service_plugins[service]['module']
service_logger_name = 'mqttwarn.services.{}'.format(service)
srv = make_service(mqttc=mqttc, name=service_logger_name)
notified = timeout(module.plugin, (srv, st))
except Exception as e:
logger.exception("Cannot invoke service for `%s'" % service)
if not notified:
logger.warning("Notification of %s for `%s' FAILED or TIMED OUT" % (service, item.get('topic')))
else:
logger.warning("Notification of %s for `%s' suppressed: text is empty" % (service, item.get('topic')))
q_in.task_done()
logger.debug("Thread exiting...")