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 5bba83d2a207b6d9e6db5a8a699862e8812de3a0..ed7707a9a93d2eb459c06d85459c2db5718ad3cc 100644 |
--- a/tools/telemetry/telemetry/core/platform/android_device_unittest.py |
+++ b/tools/telemetry/telemetry/core/platform/android_device_unittest.py |
@@ -4,7 +4,10 @@ |
import unittest |
+from telemetry import benchmark |
+from telemetry.core import browser_options |
from telemetry.core.platform import android_device |
+from telemetry.core.platform import android_platform_backend |
from telemetry.unittest_util import system_stub |
@@ -24,3 +27,73 @@ class AndroidDeviceTest(unittest.TestCase): |
def tearDown(self): |
self._android_device_stub.Restore() |
+ |
+ |
+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() |
+ |
+ def NoAdb(*_, **__): |
+ 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() |
+ 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() |
+ 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.android_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) |
+ |
+ 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) |