Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(155)

Unified Diff: tools/telemetry/telemetry/core/backends/chrome/android_browser_backend_unittest.py

Issue 806843002: Reland of Migrate DeviceUtils.ReadFile to adb_wrapper (try 3) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: added android_browser_backend_unittest Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: tools/telemetry/telemetry/core/backends/chrome/android_browser_backend_unittest.py
diff --git a/tools/telemetry/telemetry/core/backends/chrome/android_browser_backend_unittest.py b/tools/telemetry/telemetry/core/backends/chrome/android_browser_backend_unittest.py
new file mode 100644
index 0000000000000000000000000000000000000000..059b5ca70419f69c1b6764f24bd7606811dc0661
--- /dev/null
+++ b/tools/telemetry/telemetry/core/backends/chrome/android_browser_backend_unittest.py
@@ -0,0 +1,69 @@
+# Copyright 2013 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import unittest
+
+from telemetry.core import browser_options
+from telemetry.core import util
+from telemetry.core.backends.chrome import android_browser_backend
+from telemetry.core.platform import android_device
+from telemetry.core.platform import android_platform_backend
+
+util.AddDirToPythonPath(util.GetChromiumSrcDir(), 'build', 'android')
+from pylib.device import device_errors
+from pylib.device import device_utils
+
+util.AddDirToPythonPath(util.GetChromiumSrcDir(),
+ 'third_party', 'pymock')
+import mock # pylint: disable=import-error
+
+
+class MockBrowserBackend(android_browser_backend.AndroidBrowserBackend):
+ """Mock of an AndroidBrowserBackend with a custom device object"""
+
+ def __init__(self, device):
+ platform_backend = mock.Mock(
+ spec=android_platform_backend.AndroidPlatformBackend)
+ platform_backend.adb.device.return_value = device
+ browser_opts = browser_options.BrowserOptions()
+ browser_opts.browser_type = 'android-chrome-shell'
+ super(MockBrowserBackend, self).__init__(
+ android_platform_backend=platform_backend,
+ browser_options=browser_opts,
+ backend_settings=android_browser_backend.ChromeShellBackendSettings(
+ 'test.package.name'),
+ use_rndis_forwarder=False,
+ output_profile_path=None,
+ extensions_to_load=[],
+ target_arch=None)
+
+class AndroidBrowserBackendTest(unittest.TestCase):
+ """Test Chrome command line set-up/restore."""
+
+ def testRestoreOldCommandLine_restoreExisting(self):
+ old_command_line = 'chrome_shell --with --some --old --options'
+ device = mock.Mock(spec=device_utils.DeviceUtils)
+ device.old_interface = mock.Mock()
+ device.ReadFile.return_value = old_command_line
+ browser_backend = MockBrowserBackend(device)
+ browser_backend._SetUpCommandLine()
+ device.WriteFile.assert_called_once_with(mock.ANY, mock.ANY, as_root=True)
tonyg 2015/01/05 17:28:43 I think these mock-style unittests are just closel
jbudorick 2015/01/05 17:50:42 We've generally been switching to this style of te
+ device.WriteFile.reset_mock()
+ browser_backend._RestoreCommandLine()
+ device.WriteFile.assert_called_once_with(mock.ANY, old_command_line,
+ as_root=True)
+
+ def testRestoreOldCommandLine_didNotExist(self):
+ device = mock.Mock(spec=device_utils.DeviceUtils)
+ device.old_interface = mock.Mock()
+ device.ReadFile.side_effect = device_errors.CommandFailedError(
+ 'File not found', str(device))
+ browser_backend = MockBrowserBackend(device)
+ browser_backend._SetUpCommandLine()
+ device.WriteFile.assert_called_once_with(mock.ANY, mock.ANY, as_root=True)
+ device.WriteFile.reset_mock()
+ browser_backend._RestoreCommandLine()
+ self.assertFalse(device.WriteFile.called)
+ device.RunShellCommand.assert_called_once_with(['rm', mock.ANY],
+ as_root=True)

Powered by Google App Engine
This is Rietveld 408576698