summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--meta/lib/oeqa/core/decorator/oetimeout.py25
1 files changed, 25 insertions, 0 deletions
diff --git a/meta/lib/oeqa/core/decorator/oetimeout.py b/meta/lib/oeqa/core/decorator/oetimeout.py
new file mode 100644
index 0000000000..a247583f7f
--- /dev/null
+++ b/meta/lib/oeqa/core/decorator/oetimeout.py
@@ -0,0 +1,25 @@
1# Copyright (C) 2016 Intel Corporation
2# Released under the MIT license (see COPYING.MIT)
3
4import signal
5from . import OETestDecorator, registerDecorator
6from oeqa.core.exception import OEQATimeoutError
7
8@registerDecorator
9class OETimeout(OETestDecorator):
10 attrs = ('oetimeout',)
11
12 def setUpDecorator(self):
13 timeout = self.oetimeout
14 def _timeoutHandler(signum, frame):
15 raise OEQATimeoutError("Timed out after %s "
16 "seconds of execution" % timeout)
17
18 self.logger.debug("Setting up a %d second(s) timeout" % self.oetimeout)
19 self.alarmSignal = signal.signal(signal.SIGALRM, _timeoutHandler)
20 signal.alarm(self.oetimeout)
21
22 def tearDownDecorator(self):
23 signal.alarm(0)
24 signal.signal(signal.SIGALRM, self.alarmSignal)
25 self.logger.debug("Removed SIGALRM handler")