| Index: build/android/pylib/device/decorators_test.py
|
| diff --git a/build/android/pylib/device/decorators_test.py b/build/android/pylib/device/decorators_test.py
|
| index ec167ae014a6759e4e539f4f223911c0bc1a48f4..b75618b09e60d3160869dfd4130fd70f5e795a95 100644
|
| --- a/build/android/pylib/device/decorators_test.py
|
| +++ b/build/android/pylib/device/decorators_test.py
|
| @@ -18,6 +18,12 @@
|
| from pylib.device import decorators
|
| from pylib.device import device_errors
|
| from pylib.utils import reraiser_thread
|
| +
|
| +# TODO(jbudorick) Remove once the DeviceUtils implementations are no longer
|
| +# backed by AndroidCommands / android_testrunner.
|
| +sys.path.append(os.path.join(constants.DIR_SOURCE_ROOT, 'third_party',
|
| + 'android_testrunner'))
|
| +import errors as old_errors
|
|
|
| _DEFAULT_TIMEOUT = 30
|
| _DEFAULT_RETRIES = 3
|
| @@ -72,6 +78,26 @@
|
| self.assertEquals(expected_timeout, actual_timeout)
|
| self.assertEquals(expected_retries, actual_retries)
|
|
|
| + def testFunctionDecoratorTranslatesOldExceptions(self):
|
| + """Tests that the explicit decorator translates old exceptions."""
|
| + @decorators.WithTimeoutAndRetries
|
| + def alwaysRaisesProvidedException(exception, timeout=None, retries=None):
|
| + raise exception
|
| +
|
| + exception_desc = 'Old response timeout error'
|
| + with self.assertRaises(device_errors.CommandTimeoutError) as e:
|
| + alwaysRaisesProvidedException(
|
| + old_errors.WaitForResponseTimedOutError(exception_desc),
|
| + timeout=10, retries=1)
|
| + self.assertEquals(exception_desc, str(e.exception))
|
| +
|
| + exception_desc = 'Old device error'
|
| + with self.assertRaises(device_errors.DeviceUnreachableError) as e:
|
| + alwaysRaisesProvidedException(
|
| + old_errors.DeviceUnresponsiveError(exception_desc),
|
| + timeout=10, retries=1)
|
| + self.assertEquals(exception_desc, str(e.exception))
|
| +
|
| def testFunctionDecoratorTranslatesReraiserExceptions(self):
|
| """Tests that the explicit decorator translates reraiser exceptions."""
|
| @decorators.WithTimeoutAndRetries
|
| @@ -140,6 +166,24 @@
|
| self.assertEquals(10, alwaysReturnsRetries())
|
| self.assertEquals(1, alwaysReturnsRetries(retries=1))
|
|
|
| + def testDefaultsFunctionDecoratorTranslatesOldExceptions(self):
|
| + """Tests that the explicit decorator translates old exceptions."""
|
| + @decorators.WithTimeoutAndRetriesDefaults(30, 10)
|
| + def alwaysRaisesProvidedException(exception, timeout=None, retries=None):
|
| + raise exception
|
| +
|
| + exception_desc = 'Old response timeout error'
|
| + with self.assertRaises(device_errors.CommandTimeoutError) as e:
|
| + alwaysRaisesProvidedException(
|
| + old_errors.WaitForResponseTimedOutError(exception_desc))
|
| + self.assertEquals(exception_desc, str(e.exception))
|
| +
|
| + exception_desc = 'Old device error'
|
| + with self.assertRaises(device_errors.DeviceUnreachableError) as e:
|
| + alwaysRaisesProvidedException(
|
| + old_errors.DeviceUnresponsiveError(exception_desc))
|
| + self.assertEquals(exception_desc, str(e.exception))
|
| +
|
| def testDefaultsFunctionDecoratorTranslatesReraiserExceptions(self):
|
| """Tests that the explicit decorator translates reraiser exceptions."""
|
| @decorators.WithTimeoutAndRetriesDefaults(30, 10)
|
| @@ -178,6 +222,24 @@
|
| with self.assertRaises(device_errors.CommandFailedError):
|
| alwaysRaisesCommandFailedError()
|
| self.assertEquals(11, DecoratorsTest._decorated_function_called_count)
|
| +
|
| + def testExplicitDecoratorTranslatesOldExceptions(self):
|
| + """Tests that the explicit decorator translates old exceptions."""
|
| + @decorators.WithExplicitTimeoutAndRetries(30, 10)
|
| + def alwaysRaisesProvidedException(exception):
|
| + raise exception
|
| +
|
| + exception_desc = 'Old response timeout error'
|
| + with self.assertRaises(device_errors.CommandTimeoutError) as e:
|
| + alwaysRaisesProvidedException(
|
| + old_errors.WaitForResponseTimedOutError(exception_desc))
|
| + self.assertEquals(exception_desc, str(e.exception))
|
| +
|
| + exception_desc = 'Old device error'
|
| + with self.assertRaises(device_errors.DeviceUnreachableError) as e:
|
| + alwaysRaisesProvidedException(
|
| + old_errors.DeviceUnresponsiveError(exception_desc))
|
| + self.assertEquals(exception_desc, str(e.exception))
|
|
|
| def testExplicitDecoratorTranslatesReraiserExceptions(self):
|
| """Tests that the explicit decorator translates reraiser exceptions."""
|
| @@ -274,6 +336,21 @@
|
| self.assertEquals(31, test_obj.alwaysReturnsRetries())
|
| self.assertEquals(32, test_obj.alwaysReturnsRetries(retries=32))
|
|
|
| + def testMethodDecoratorTranslatesOldExceptions(self):
|
| + test_obj = self._MethodDecoratorTestObject(self)
|
| +
|
| + exception_desc = 'Old response timeout error'
|
| + with self.assertRaises(device_errors.CommandTimeoutError) as e:
|
| + test_obj.alwaysRaisesProvidedException(
|
| + old_errors.WaitForResponseTimedOutError(exception_desc))
|
| + self.assertEquals(exception_desc, str(e.exception))
|
| +
|
| + exception_desc = 'Old device error'
|
| + with self.assertRaises(device_errors.DeviceUnreachableError) as e:
|
| + test_obj.alwaysRaisesProvidedException(
|
| + old_errors.DeviceUnresponsiveError(exception_desc))
|
| + self.assertEquals(exception_desc, str(e.exception))
|
| +
|
| def testMethodDecoratorTranslatesReraiserExceptions(self):
|
| test_obj = self._MethodDecoratorTestObject(self)
|
|
|
|
|