# # Copyright (C) 2016 Intel Corporation # # SPDX-License-Identifier: MIT # import signal from . import OETestDecorator, registerDecorator from oeqa.core.exception import OEQATimeoutError @registerDecorator class OETimeout(OETestDecorator): attrs = ('oetimeout',) def setUpDecorator(self): timeout = self.oetimeout def _timeoutHandler(signum, frame): raise OEQATimeoutError("Timed out after %s " "seconds of execution" % timeout) self.logger.debug("Setting up a %d second(s) timeout" % self.oetimeout) self.alarmSignal = signal.signal(signal.SIGALRM, _timeoutHandler) signal.alarm(self.oetimeout) def tearDownDecorator(self): signal.alarm(0) signal.signal(signal.SIGALRM, self.alarmSignal) self.logger.debug("Removed SIGALRM handler")