Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 15e86dbf authored by Myles Watson's avatar Myles Watson Committed by Automerger Merge Worker
Browse files

Merge "Add timeout for teardown_test" am: b8c57fa2

Original change: https://android-review.googlesource.com/c/platform/packages/modules/Bluetooth/+/1955266

Change-Id: I973b7e39a00b1bde91f0c738e90b5e6f58dca124
parents d79d6f39 b8c57fa2
Loading
Loading
Loading
Loading
+25 −4
Original line number Diff line number Diff line
@@ -39,8 +39,26 @@ from mobly import asserts, signals
from mobly import base_test


class Timeout:

    def __init__(self, seconds=1, error_message='Timeout'):
        self.seconds = seconds
        self.error_message = error_message

    def handle_timeout(self, signum, frame):
        raise TimeoutError(self.error_message)

    def __enter__(self):
        signal.signal(signal.SIGALRM, self.handle_timeout)
        signal.alarm(self.seconds)

    def __exit__(self, type, value, traceback):
        signal.alarm(0)


class GdBaseTestClass(base_test.BaseTestClass):

    FUNCTION_CALL_TIMEOUT_SECONDS = 5
    SUBPROCESS_WAIT_TIMEOUT_SECONDS = 10

    def setup_class(self, dut_module, cert_module):
@@ -117,12 +135,15 @@ class GdBaseTestClass(base_test.BaseTestClass):
    def teardown_test(self):
        stack = ""
        try:
            with Timeout(seconds=self.FUNCTION_CALL_TIMEOUT_SECONDS):
                stack = "CERT"
                self.cert.rootservice.StopStack(facade_rootservice.StopStackRequest())
                stack = "DUT"
                self.dut.rootservice.StopStack(facade_rootservice.StopStackRequest())
        except RpcError as rpc_error:
            asserts.fail("Failed to stop {} stack, RpcError={!r}".format(stack, rpc_error))
        except TimeoutError:
            logging.error("Failed to stop {} stack in {} s".format(stack, self.FUNCTION_CALL_TIMEOUT_SECONDS))
        finally:
            # Destroy GD device objects
            self._controller_manager.unregister_controllers()