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 50e088a9734f310b84ae6ef30d72783d90302799..efeda96751a1b41fc6e6bd0d61fb80cb0e8cfd63 100644 |
--- a/tools/telemetry/telemetry/core/platform/android_device_unittest.py |
+++ b/tools/telemetry/telemetry/core/platform/android_device_unittest.py |
@@ -4,122 +4,136 @@ |
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 |
-util.AddDirToPythonPath(util.GetTelemetryDir(), 'third_party', 'mock') |
-import mock # pylint: disable=import-error |
+class AndroidDeviceTest(unittest.TestCase): |
+ def setUp(self): |
+ self._android_device_stub = system_stub.Override( |
+ android_device, ['adb_commands']) |
- |
-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, ['subprocess', 'logging']) |
+ 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._devices_patcher.stop() |
self._android_device_stub.Restore() |
-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())) |
+class GetDeviceTest(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() |
def testNoAdbReturnsNone(self): |
finder_options = browser_options.BrowserFinderOptions() |
- 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 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)) |
def testAdbNoDevicesReturnsNone(self): |
finder_options = browser_options.BrowserFinderOptions() |
- 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)) |
+ self.assertEquals([], self._android_device_stub.logging.warnings) |
+ self.assertIsNone(android_device.GetDevice(finder_options)) |
+ |
+ def testAdbPermissionsErrorReturnsNone(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) |
def testAdbTwoDevicesReturnsNone(self): |
finder_options = browser_options.BrowserFinderOptions() |
- 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) |
+ 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) |
def testAdbPickOneDeviceReturnsDeviceInstance(self): |
finder_options = browser_options.BrowserFinderOptions() |
finder_options.device = '555d14fecddddddd' # pick one |
- 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) |
+ 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) |
def testAdbOneDeviceReturnsDeviceInstance(self): |
finder_options = browser_options.BrowserFinderOptions() |
- 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) |
+ 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) |
-class FindAllAvailableDevicesTest(_BaseAndroidDeviceTest): |
+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() |
+ |
def testAdbNoDeviceReturnsEmptyList(self): |
finder_options = browser_options.BrowserFinderOptions() |
- 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) |
+ 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() |
- 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) |
+ 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) |
def testAdbMultipleDevicesReturnsListWithAllDeviceInstances(self): |
finder_options = browser_options.BrowserFinderOptions() |
- 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') |
+ 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') |