| Index: tools/telemetry/telemetry/core/backends/chrome/chrome_browser_backend_unittest.py
|
| diff --git a/tools/telemetry/telemetry/core/backends/chrome/chrome_browser_backend_unittest.py b/tools/telemetry/telemetry/core/backends/chrome/chrome_browser_backend_unittest.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..e04f33786b1e20882668cc98ad45f70549a9f4ca
|
| --- /dev/null
|
| +++ b/tools/telemetry/telemetry/core/backends/chrome/chrome_browser_backend_unittest.py
|
| @@ -0,0 +1,102 @@
|
| +# 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 forwarders
|
| +from telemetry.core import wpr_modes
|
| +from telemetry.core.backends.chrome import chrome_browser_backend
|
| +
|
| +
|
| +class FakeBrowserOptions(object):
|
| + def __init__(self, netsim=False, wpr_mode=wpr_modes.WPR_OFF):
|
| + self.netsim = netsim
|
| + self.wpr_mode = wpr_mode
|
| + self.browser_type = 'chrome'
|
| + self.dont_override_profile = False
|
| +
|
| +
|
| +class FakeForwarderFactory(object):
|
| + host_ip = '127.0.0.1'
|
| +
|
| + def __init__(self, does_forwarder_override_dns):
|
| + self.does_forwarder_override_dns = does_forwarder_override_dns
|
| +
|
| +
|
| +class TestChromeBrowserBackend(chrome_browser_backend.ChromeBrowserBackend):
|
| + # The test does not need to define the abstract methods. pylint: disable=W0223
|
| +
|
| + def __init__(self, browser_options, does_forwarder_override_dns=False):
|
| + super(TestChromeBrowserBackend, self).__init__(
|
| + supports_tab_control=False,
|
| + supports_extensions=False,
|
| + browser_options=browser_options,
|
| + output_profile_path=None,
|
| + extensions_to_load=None)
|
| + self._forwarder_factory = FakeForwarderFactory(does_forwarder_override_dns)
|
| +
|
| +
|
| +class ReplayStartupArgsTest(unittest.TestCase):
|
| + """Test expected inputs for GetReplayBrowserStartupArgs."""
|
| +
|
| + def testReplayOffGivesEmptyArgs(self):
|
| + browser_options = FakeBrowserOptions()
|
| + browser_backend = TestChromeBrowserBackend(browser_options)
|
| + self.assertEqual([], browser_backend.GetReplayBrowserStartupArgs())
|
| +
|
| + def testReplayOnGivesBasicArgs(self):
|
| + browser_options = FakeBrowserOptions(
|
| + wpr_mode=wpr_modes.WPR_REPLAY,
|
| + netsim=False)
|
| + browser_backend = TestChromeBrowserBackend(browser_options)
|
| + self.assertEqual((0, 0), tuple(browser_backend.wpr_port_pairs.http))
|
| + self.assertEqual((0, 0), tuple(browser_backend.wpr_port_pairs.https))
|
| + self.assertEqual(None, browser_backend.wpr_port_pairs.dns)
|
| +
|
| + # When Replay is started, it fills in the actual port values.
|
| + # Use different values here to show that the args get the
|
| + # remote port values.
|
| + browser_backend.wpr_port_pairs = forwarders.PortPairs(
|
| + http=forwarders.PortPair(123, 456),
|
| + https=forwarders.PortPair(234, 567),
|
| + dns=None)
|
| + expected_args = [
|
| + '--host-resolver-rules=MAP * 127.0.0.1,EXCLUDE localhost',
|
| + '--ignore-certificate-errors',
|
| + '--testing-fixed-http-port=456',
|
| + '--testing-fixed-https-port=567'
|
| + ]
|
| + self.assertEqual(
|
| + expected_args,
|
| + sorted(browser_backend.GetReplayBrowserStartupArgs()))
|
| +
|
| + def testNetsimGivesNoHostResolver(self):
|
| + browser_options = FakeBrowserOptions(
|
| + wpr_mode=wpr_modes.WPR_REPLAY,
|
| + netsim=True)
|
| + browser_backend = TestChromeBrowserBackend(browser_options)
|
| + self.assertEqual((80, 80), tuple(browser_backend.wpr_port_pairs.http))
|
| + self.assertEqual((443, 443), tuple(browser_backend.wpr_port_pairs.https))
|
| + self.assertEqual((53, 53), tuple(browser_backend.wpr_port_pairs.dns))
|
| + expected_args = ['--ignore-certificate-errors']
|
| + self.assertEqual(
|
| + expected_args,
|
| + sorted(browser_backend.GetReplayBrowserStartupArgs()))
|
| +
|
| + def testForwaderOverridesDnsGivesNoHostResolver(self):
|
| + # Android with --use-rndis uses standard remote ports and
|
| + # relies on the forwarder to override DNS resolution.
|
| + browser_options = FakeBrowserOptions(
|
| + wpr_mode=wpr_modes.WPR_REPLAY,
|
| + netsim=False)
|
| + browser_backend = TestChromeBrowserBackend(
|
| + browser_options, does_forwarder_override_dns=True)
|
| + browser_backend.wpr_port_pairs = forwarders.PortPairs(
|
| + http=forwarders.PortPair(123, 80),
|
| + https=forwarders.PortPair(234, 443),
|
| + dns=forwarders.PortPair(345, 53))
|
| + expected_args = ['--ignore-certificate-errors']
|
| + self.assertEqual(
|
| + expected_args,
|
| + sorted(browser_backend.GetReplayBrowserStartupArgs()))
|
|
|