OLD | NEW |
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # Copyright 2014 The Chromium Authors. All rights reserved. | 2 # Copyright 2014 The Chromium Authors. All rights reserved. |
3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
5 | 5 |
6 """ | 6 """ |
7 Unit tests for the contents of device_utils.py (mostly DeviceUtils). | 7 Unit tests for the contents of device_utils.py (mostly DeviceUtils). |
8 """ | 8 """ |
9 | 9 |
10 # pylint: disable=C0321 | 10 # pylint: disable=C0321 |
11 # pylint: disable=W0212 | 11 # pylint: disable=W0212 |
12 # pylint: disable=W0613 | 12 # pylint: disable=W0613 |
13 | 13 |
14 import collections | 14 import collections |
15 import datetime | 15 import datetime |
16 import logging | 16 import logging |
17 import os | 17 import os |
18 import re | 18 import re |
19 import sys | 19 import sys |
20 import unittest | 20 import unittest |
21 | 21 |
22 from pylib import cmd_helper | 22 from pylib import cmd_helper |
23 from pylib import constants | 23 from pylib import constants |
24 from pylib import device_signal | 24 from pylib import device_signal |
25 from pylib.device import adb_wrapper | 25 from pylib.device import adb_wrapper |
26 from pylib.device import device_blacklist | |
27 from pylib.device import device_errors | 26 from pylib.device import device_errors |
28 from pylib.device import device_utils | 27 from pylib.device import device_utils |
29 from pylib.device import intent | 28 from pylib.device import intent |
30 from pylib.sdk import split_select | 29 from pylib.sdk import split_select |
31 from pylib.utils import mock_calls | 30 from pylib.utils import mock_calls |
32 | 31 |
33 sys.path.append(os.path.join( | 32 sys.path.append(os.path.join( |
34 constants.DIR_SOURCE_ROOT, 'third_party', 'pymock')) | 33 constants.DIR_SOURCE_ROOT, 'third_party', 'pymock')) |
35 import mock # pylint: disable=F0401 | 34 import mock # pylint: disable=F0401 |
36 | 35 |
(...skipping 1826 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1863 client_cache_one = self.device.GetClientCache('ClientOne') | 1862 client_cache_one = self.device.GetClientCache('ClientOne') |
1864 client_cache_one['test'] = 1 | 1863 client_cache_one['test'] = 1 |
1865 client_cache_two = self.device.GetClientCache('ClientOne') | 1864 client_cache_two = self.device.GetClientCache('ClientOne') |
1866 self.assertEqual(client_cache_one, {'test': 1}) | 1865 self.assertEqual(client_cache_one, {'test': 1}) |
1867 self.assertEqual(client_cache_two, {'test': 1}) | 1866 self.assertEqual(client_cache_two, {'test': 1}) |
1868 self.device._ClearCache() | 1867 self.device._ClearCache() |
1869 self.assertEqual(client_cache_one, {}) | 1868 self.assertEqual(client_cache_one, {}) |
1870 self.assertEqual(client_cache_two, {}) | 1869 self.assertEqual(client_cache_two, {}) |
1871 | 1870 |
1872 | 1871 |
| 1872 class DeviceUtilsParallelTest(mock_calls.TestCase): |
| 1873 |
| 1874 def testParallel_default(self): |
| 1875 test_serials = ['0123456789abcdef', 'fedcba9876543210'] |
| 1876 with self.assertCall( |
| 1877 mock.call.pylib.device.device_utils.DeviceUtils.HealthyDevices(), |
| 1878 [device_utils.DeviceUtils(s) for s in test_serials]): |
| 1879 parallel_devices = device_utils.DeviceUtils.parallel() |
| 1880 for serial, device in zip(test_serials, parallel_devices.pGet(None)): |
| 1881 self.assertTrue(isinstance(device, device_utils.DeviceUtils)) |
| 1882 self.assertEquals(serial, device.adb.GetDeviceSerial()) |
| 1883 |
| 1884 def testParallel_noDevices(self): |
| 1885 with self.assertCall( |
| 1886 mock.call.pylib.device.device_utils.DeviceUtils.HealthyDevices(), []): |
| 1887 with self.assertRaises(device_errors.NoDevicesError): |
| 1888 device_utils.DeviceUtils.parallel() |
| 1889 |
| 1890 |
1873 class DeviceUtilsHealthyDevicesTest(mock_calls.TestCase): | 1891 class DeviceUtilsHealthyDevicesTest(mock_calls.TestCase): |
1874 | 1892 |
1875 def _createAdbWrapperMock(self, serial, is_ready=True): | 1893 def _createAdbWrapperMock(self, serial, is_ready=True): |
1876 adb = _AdbWrapperMock(serial) | 1894 adb = _AdbWrapperMock(serial) |
1877 adb.is_ready = is_ready | 1895 adb.is_ready = is_ready |
1878 return adb | 1896 return adb |
1879 | 1897 |
1880 def testHealthyDevices_emptyBlacklist(self): | 1898 def testHealthyDevices_default(self): |
1881 test_serials = ['0123456789abcdef', 'fedcba9876543210'] | 1899 test_serials = ['0123456789abcdef', 'fedcba9876543210'] |
1882 with self.assertCalls( | 1900 with self.assertCalls( |
| 1901 (mock.call.pylib.device.device_blacklist.ReadBlacklist(), []), |
1883 (mock.call.pylib.device.adb_wrapper.AdbWrapper.Devices(), | 1902 (mock.call.pylib.device.adb_wrapper.AdbWrapper.Devices(), |
1884 [self._createAdbWrapperMock(s) for s in test_serials])): | 1903 [self._createAdbWrapperMock(s) for s in test_serials])): |
1885 blacklist = mock.NonCallableMock(**{'Read.return_value': []}) | 1904 devices = device_utils.DeviceUtils.HealthyDevices() |
1886 devices = device_utils.DeviceUtils.HealthyDevices(blacklist) | |
1887 for serial, device in zip(test_serials, devices): | 1905 for serial, device in zip(test_serials, devices): |
1888 self.assertTrue(isinstance(device, device_utils.DeviceUtils)) | 1906 self.assertTrue(isinstance(device, device_utils.DeviceUtils)) |
1889 self.assertEquals(serial, device.adb.GetDeviceSerial()) | 1907 self.assertEquals(serial, device.adb.GetDeviceSerial()) |
1890 | 1908 |
1891 def testHealthyDevices_blacklist(self): | 1909 def testHealthyDevices_blacklisted(self): |
1892 test_serials = ['0123456789abcdef', 'fedcba9876543210'] | 1910 test_serials = ['0123456789abcdef', 'fedcba9876543210'] |
1893 with self.assertCalls( | 1911 with self.assertCalls( |
| 1912 (mock.call.pylib.device.device_blacklist.ReadBlacklist(), |
| 1913 ['fedcba9876543210']), |
1894 (mock.call.pylib.device.adb_wrapper.AdbWrapper.Devices(), | 1914 (mock.call.pylib.device.adb_wrapper.AdbWrapper.Devices(), |
1895 [self._createAdbWrapperMock(s) for s in test_serials])): | 1915 [self._createAdbWrapperMock(s) for s in test_serials])): |
1896 blacklist = mock.NonCallableMock( | 1916 devices = device_utils.DeviceUtils.HealthyDevices() |
1897 **{'Read.return_value': ['fedcba9876543210']}) | |
1898 devices = device_utils.DeviceUtils.HealthyDevices(blacklist) | |
1899 self.assertEquals(1, len(devices)) | 1917 self.assertEquals(1, len(devices)) |
1900 self.assertTrue(isinstance(devices[0], device_utils.DeviceUtils)) | 1918 self.assertTrue(isinstance(devices[0], device_utils.DeviceUtils)) |
1901 self.assertEquals('0123456789abcdef', devices[0].adb.GetDeviceSerial()) | 1919 self.assertEquals('0123456789abcdef', devices[0].adb.GetDeviceSerial()) |
1902 | 1920 |
1903 | 1921 |
1904 class DeviceUtilsRestartAdbdTest(DeviceUtilsTest): | 1922 class DeviceUtilsRestartAdbdTest(DeviceUtilsTest): |
1905 | 1923 |
1906 def testAdbdRestart(self): | 1924 def testAdbdRestart(self): |
1907 mock_temp_file = '/sdcard/temp-123.sh' | 1925 mock_temp_file = '/sdcard/temp-123.sh' |
1908 with self.assertCalls( | 1926 with self.assertCalls( |
1909 (mock.call.pylib.utils.device_temp_file.DeviceTempFile( | 1927 (mock.call.pylib.utils.device_temp_file.DeviceTempFile( |
1910 self.adb, suffix='.sh'), MockTempFile(mock_temp_file)), | 1928 self.adb, suffix='.sh'), MockTempFile(mock_temp_file)), |
1911 self.call.device.WriteFile(mock.ANY, mock.ANY), | 1929 self.call.device.WriteFile(mock.ANY, mock.ANY), |
1912 (self.call.device.RunShellCommand( | 1930 (self.call.device.RunShellCommand( |
1913 ['source', mock_temp_file ], as_root=True)), | 1931 ['source', mock_temp_file ], as_root=True)), |
1914 self.call.adb.WaitForDevice()): | 1932 self.call.adb.WaitForDevice()): |
1915 self.device.RestartAdbd() | 1933 self.device.RestartAdbd() |
1916 | 1934 |
1917 | 1935 |
1918 if __name__ == '__main__': | 1936 if __name__ == '__main__': |
1919 logging.getLogger().setLevel(logging.DEBUG) | 1937 logging.getLogger().setLevel(logging.DEBUG) |
1920 unittest.main(verbosity=2) | 1938 unittest.main(verbosity=2) |
OLD | NEW |