Index: tools/telemetry/telemetry/core/platform/android_device_unittest.py |
diff --git a/tools/telemetry/telemetry/core/platform/android_device_unittest.py b/tools/telemetry/telemetry/core/platform/android_device_unittest.py |
index efeda96751a1b41fc6e6bd0d61fb80cb0e8cfd63..50e088a9734f310b84ae6ef30d72783d90302799 100644 |
--- a/tools/telemetry/telemetry/core/platform/android_device_unittest.py |
+++ b/tools/telemetry/telemetry/core/platform/android_device_unittest.py |
@@ -4,136 +4,122 @@ |
import unittest |
+from telemetry.core import util |
from telemetry.core.platform import android_device |
-from telemetry.core.platform import android_platform_backend |
from telemetry.internal.browser import browser_options |
from telemetry.unittest_util import system_stub |
+util.AddDirToPythonPath(util.GetChromiumSrcDir(), 'build', 'android') |
+from pylib.device import adb_wrapper # pylint: disable=import-error |
-class AndroidDeviceTest(unittest.TestCase): |
- def setUp(self): |
- self._android_device_stub = system_stub.Override( |
- android_device, ['adb_commands']) |
+util.AddDirToPythonPath(util.GetTelemetryDir(), 'third_party', 'mock') |
+import mock # pylint: disable=import-error |
- def testGetAllAttachedAndroidDevices(self): |
- self._android_device_stub.adb_commands.attached_devices = [ |
- '01', '02'] |
- self.assertEquals( |
- set(['01', '02']), |
- set(device.device_id for device in |
- android_device.AndroidDevice.GetAllConnectedDevices() |
- )) |
- def tearDown(self): |
- self._android_device_stub.Restore() |
- |
- |
-class GetDeviceTest(unittest.TestCase): |
+class _BaseAndroidDeviceTest(unittest.TestCase): |
def setUp(self): |
+ self._devices_patcher = mock.patch( |
+ 'pylib.device.adb_wrapper.AdbWrapper.Devices') |
+ self._healthy_device_mock = self._devices_patcher.start() |
self._android_device_stub = system_stub.Override( |
- android_device, ['adb_commands', 'os', 'subprocess', 'logging']) |
- self._apb_stub = system_stub.Override( |
- android_platform_backend, ['adb_commands']) |
+ android_device, ['subprocess', 'logging']) |
def tearDown(self): |
+ self._devices_patcher.stop() |
self._android_device_stub.Restore() |
- self._apb_stub.Restore() |
- |
- def testNoAdbReturnsNone(self): |
- finder_options = browser_options.BrowserFinderOptions() |
- def NoAdb(*_1, **_2): |
- raise OSError('not found') |
- self._android_device_stub.subprocess.Popen = NoAdb |
- self.assertEquals([], self._android_device_stub.logging.warnings) |
- self.assertIsNone(android_device.GetDevice(finder_options)) |
+class AndroidDeviceTest(_BaseAndroidDeviceTest): |
+ def testGetAllAttachedAndroidDevices(self): |
+ self._healthy_device_mock.return_value = [ |
+ adb_wrapper.AdbWrapper('01'), adb_wrapper.AdbWrapper('02')] |
+ self.assertEquals( |
+ set(['01', '02']), |
+ set(device.device_id for device in |
+ android_device.AndroidDevice.GetAllConnectedDevices())) |
- def testAdbNoDevicesReturnsNone(self): |
+ def testNoAdbReturnsNone(self): |
finder_options = browser_options.BrowserFinderOptions() |
- self.assertEquals([], self._android_device_stub.logging.warnings) |
- self.assertIsNone(android_device.GetDevice(finder_options)) |
+ with ( |
+ mock.patch('os.path.isabs', return_value=True)), ( |
+ mock.patch('os.path.exists', return_value=False)): |
+ self.assertEquals([], self._android_device_stub.logging.warnings) |
+ self.assertIsNone(android_device.GetDevice(finder_options)) |
- def testAdbPermissionsErrorReturnsNone(self): |
+ def testAdbNoDevicesReturnsNone(self): |
finder_options = browser_options.BrowserFinderOptions() |
- self._android_device_stub.subprocess.Popen.communicate_result = ( |
- 'List of devices attached\n????????????\tno permissions\n', |
- '* daemon not running. starting it now on port 5037 *\n' |
- '* daemon started successfully *\n') |
- device = android_device.GetDevice(finder_options) |
- self.assertEquals([ |
- 'adb devices gave a permissions error. Consider running adb as root:', |
- ' adb kill-server', |
- ' sudo `which adb` devices\n\n'], |
- self._android_device_stub.logging.warnings) |
- self.assertIsNone(device) |
+ with mock.patch('os.path.isabs', return_value=False): |
+ self._healthy_device_mock.return_value = [] |
+ self.assertEquals([], self._android_device_stub.logging.warnings) |
+ self.assertIsNone(android_device.GetDevice(finder_options)) |
def testAdbTwoDevicesReturnsNone(self): |
finder_options = browser_options.BrowserFinderOptions() |
- self._android_device_stub.adb_commands.attached_devices = [ |
- '015d14fec128220c', '015d14fec128220d'] |
- device = android_device.GetDevice(finder_options) |
- self.assertEquals([ |
- 'Multiple devices attached. Please specify one of the following:\n' |
- ' --device=015d14fec128220c\n' |
- ' --device=015d14fec128220d'], |
- self._android_device_stub.logging.warnings) |
- self.assertIsNone(device) |
+ with mock.patch('os.path.isabs', return_value=False): |
+ self._healthy_device_mock.return_value = [ |
+ adb_wrapper.AdbWrapper('015d14fec128220c'), |
+ adb_wrapper.AdbWrapper('015d14fec128220d')] |
+ device = android_device.GetDevice(finder_options) |
+ self.assertEquals([ |
+ 'Multiple devices attached. Please specify one of the following:\n' |
+ ' --device=015d14fec128220c\n' |
+ ' --device=015d14fec128220d'], |
+ self._android_device_stub.logging.warnings) |
+ self.assertIsNone(device) |
def testAdbPickOneDeviceReturnsDeviceInstance(self): |
finder_options = browser_options.BrowserFinderOptions() |
finder_options.device = '555d14fecddddddd' # pick one |
- self._android_device_stub.adb_commands.attached_devices = [ |
- '015d14fec128220c', '555d14fecddddddd'] |
- device = android_device.GetDevice(finder_options) |
- self.assertEquals([], self._android_device_stub.logging.warnings) |
- self.assertEquals('555d14fecddddddd', device.device_id) |
+ with mock.patch('os.path.isabs', return_value=False): |
+ self._healthy_device_mock.return_value = [ |
+ adb_wrapper.AdbWrapper('015d14fec128220c'), |
+ adb_wrapper.AdbWrapper('555d14fecddddddd')] |
+ device = android_device.GetDevice(finder_options) |
+ self.assertEquals([], self._android_device_stub.logging.warnings) |
+ self.assertEquals('555d14fecddddddd', device.device_id) |
def testAdbOneDeviceReturnsDeviceInstance(self): |
finder_options = browser_options.BrowserFinderOptions() |
- self._android_device_stub.adb_commands.attached_devices = ( |
- ['015d14fec128220c']) |
- device = android_device.GetDevice(finder_options) |
- self.assertEquals([], self._android_device_stub.logging.warnings) |
- self.assertEquals('015d14fec128220c', device.device_id) |
+ with mock.patch('os.path.isabs', return_value=False): |
+ self._healthy_device_mock.return_value = [ |
+ adb_wrapper.AdbWrapper('015d14fec128220c')] |
+ device = android_device.GetDevice(finder_options) |
+ self.assertEquals([], self._android_device_stub.logging.warnings) |
+ self.assertEquals('015d14fec128220c', device.device_id) |
-class FindAllAvailableDevicesTest(unittest.TestCase): |
- def setUp(self): |
- self._android_device_stub = system_stub.Override( |
- android_device, ['adb_commands', 'os', 'subprocess', 'logging']) |
- self._apb_stub = system_stub.Override( |
- android_platform_backend, ['adb_commands']) |
- |
- def tearDown(self): |
- self._android_device_stub.Restore() |
- self._apb_stub.Restore() |
- |
+class FindAllAvailableDevicesTest(_BaseAndroidDeviceTest): |
def testAdbNoDeviceReturnsEmptyList(self): |
finder_options = browser_options.BrowserFinderOptions() |
- devices = android_device.FindAllAvailableDevices(finder_options) |
- self.assertEquals([], self._android_device_stub.logging.warnings) |
- self.assertIsNotNone(devices) |
- self.assertEquals(len(devices), 0) |
+ with mock.patch('os.path.isabs', return_value=False): |
+ self._healthy_device_mock.return_value = [] |
+ devices = android_device.FindAllAvailableDevices(finder_options) |
+ self.assertEquals([], self._android_device_stub.logging.warnings) |
+ self.assertIsNotNone(devices) |
+ self.assertEquals(len(devices), 0) |
def testAdbOneDeviceReturnsListWithOneDeviceInstance(self): |
finder_options = browser_options.BrowserFinderOptions() |
- self._android_device_stub.adb_commands.attached_devices = ( |
- ['015d14fec128220c']) |
- devices = android_device.FindAllAvailableDevices(finder_options) |
- self.assertEquals([], self._android_device_stub.logging.warnings) |
- self.assertIsNotNone(devices) |
- self.assertEquals(len(devices), 1) |
- self.assertEquals('015d14fec128220c', devices[0].device_id) |
+ with mock.patch('os.path.isabs', return_value=False): |
+ self._healthy_device_mock.return_value = [ |
+ adb_wrapper.AdbWrapper('015d14fec128220c')] |
+ devices = android_device.FindAllAvailableDevices(finder_options) |
+ self.assertEquals([], self._android_device_stub.logging.warnings) |
+ self.assertIsNotNone(devices) |
+ self.assertEquals(len(devices), 1) |
+ self.assertEquals('015d14fec128220c', devices[0].device_id) |
def testAdbMultipleDevicesReturnsListWithAllDeviceInstances(self): |
finder_options = browser_options.BrowserFinderOptions() |
- self._android_device_stub.adb_commands.attached_devices = [ |
- '015d14fec128220c', '015d14fec128220d', '015d14fec128220e'] |
- devices = android_device.FindAllAvailableDevices(finder_options) |
- self.assertEquals([], self._android_device_stub.logging.warnings) |
- self.assertIsNotNone(devices) |
- self.assertEquals(len(devices), 3) |
- self.assertEquals(devices[0].guid, '015d14fec128220c') |
- self.assertEquals(devices[1].guid, '015d14fec128220d') |
- self.assertEquals(devices[2].guid, '015d14fec128220e') |
+ with mock.patch('os.path.isabs', return_value=False): |
+ self._healthy_device_mock.return_value = [ |
+ adb_wrapper.AdbWrapper('015d14fec128220c'), |
+ adb_wrapper.AdbWrapper('015d14fec128220d'), |
+ adb_wrapper.AdbWrapper('015d14fec128220e')] |
+ devices = android_device.FindAllAvailableDevices(finder_options) |
+ self.assertEquals([], self._android_device_stub.logging.warnings) |
+ self.assertIsNotNone(devices) |
+ self.assertEquals(len(devices), 3) |
+ self.assertEquals(devices[0].guid, '015d14fec128220c') |
+ self.assertEquals(devices[1].guid, '015d14fec128220d') |
+ self.assertEquals(devices[2].guid, '015d14fec128220e') |