| Index: telemetry/telemetry/internal/platform/network_controller_backend_unittest.py
|
| diff --git a/telemetry/telemetry/internal/platform/network_controller_backend_unittest.py b/telemetry/telemetry/internal/platform/network_controller_backend_unittest.py
|
| index ac43dc05e66b2c06622a0cfe151c42aa2e0866ee..448bfef2732ee865dfe5c2ab03f74edf75ad2b84 100644
|
| --- a/telemetry/telemetry/internal/platform/network_controller_backend_unittest.py
|
| +++ b/telemetry/telemetry/internal/platform/network_controller_backend_unittest.py
|
| @@ -2,262 +2,324 @@
|
| # Use of this source code is governed by a BSD-style license that can be
|
| # found in the LICENSE file.
|
|
|
| -import tempfile
|
| +import mock
|
| import unittest
|
|
|
| -from telemetry.internal.platform import network_controller_backend
|
| from telemetry.internal import forwarders
|
| +from telemetry.internal.platform import network_controller_backend
|
| from telemetry.util import wpr_modes
|
|
|
|
|
| -class FakePlatformBackend(object):
|
| - @property
|
| - def wpr_ca_cert_path(self):
|
| - return None
|
| +DEFAULT_PORTS = forwarders.PortSet(http=1111, https=2222, dns=3333)
|
| +FORWARDER_HOST_IP = '123.321.123.321'
|
|
|
| - @property
|
| - def forwarder_factory(self):
|
| - return FakeForwarderFactory()
|
| +
|
| +class FakePlatformBackend(object):
|
| + def __init__(self):
|
| + self.wpr_ca_cert_path = None
|
| + self.forwarder_factory = FakeForwarderFactory()
|
|
|
|
|
| class FakeForwarderFactory(object):
|
| def __init__(self):
|
| - self.host_ip = '123.321.123.321'
|
| - self.port_pairs = None
|
| + self.host_ip = FORWARDER_HOST_IP
|
|
|
| def Create(self, port_pairs):
|
| return forwarders.Forwarder(port_pairs)
|
|
|
|
|
| -class FakeBrowserBackend(object):
|
| - def __init__(self, http_ports, https_ports, dns_ports):
|
| - self.wpr_port_pairs = forwarders.PortPairs(
|
| - http=forwarders.PortPair(*http_ports),
|
| - https=forwarders.PortPair(*https_ports),
|
| - dns=forwarders.PortPair(*dns_ports) if dns_ports else None)
|
| -
|
| -
|
| class FakeReplayServer(object):
|
| + DEFAULT_PORTS = NotImplemented # Will be assigned during test setUp.
|
| +
|
| def __init__(self, archive_path, host_ip, http_port, https_port, dns_port,
|
| replay_args):
|
| self.archive_path = archive_path
|
| self.host_ip = host_ip
|
| - self.http_port = http_port
|
| - self.https_port = https_port
|
| - self.dns_port = dns_port
|
| + self.ports = forwarders.PortSet(
|
| + http_port or self.DEFAULT_PORTS.http,
|
| + https_port or self.DEFAULT_PORTS.https,
|
| + dns_port or self.DEFAULT_PORTS.dns if dns_port is not None else None)
|
| self.replay_args = replay_args
|
| - self.is_stopped = False
|
| + self.is_running = False
|
|
|
| def StartServer(self):
|
| - return self.http_port, self.https_port, self.dns_port
|
| + assert not self.is_running
|
| + self.is_running = True
|
| + return self.ports
|
|
|
| def StopServer(self):
|
| - assert not self.is_stopped
|
| - self.is_stopped = True
|
| + assert self.is_running
|
| + self.is_running = False
|
|
|
|
|
| class TestNetworkControllerBackend(
|
| network_controller_backend.NetworkControllerBackend):
|
| - """NetworkControllerBackend with a fake ReplayServer."""
|
| -
|
| - def __init__(self, platform_backend, fake_started_http_port,
|
| - fake_started_https_port, fake_started_dns_port):
|
| - super(TestNetworkControllerBackend, self).__init__(platform_backend)
|
| - self.fake_started_http_port = fake_started_http_port
|
| - self.fake_started_https_port = fake_started_https_port
|
| - self.fake_started_dns_port = fake_started_dns_port
|
| - self.fake_replay_server = None
|
| -
|
| - def _ReplayServer(self, archive_path, host_ip, http_port, https_port,
|
| - dns_port, replay_args):
|
| - http_port = http_port or self.fake_started_http_port
|
| - https_port = https_port or self.fake_started_https_port
|
| - dns_port = (None if dns_port is None else
|
| - (dns_port or self.fake_started_dns_port))
|
| - self.fake_replay_server = FakeReplayServer(
|
| - archive_path, host_ip, http_port, https_port, dns_port, replay_args)
|
| - return self.fake_replay_server
|
| + """Expose some private properties for testing purposes."""
|
| +
|
| + def SetWprPortPairs(self, http, https, dns):
|
| + self._wpr_port_pairs = forwarders.PortPairs(
|
| + forwarders.PortPair(*http),
|
| + forwarders.PortPair(*https),
|
| + forwarders.PortPair(*dns) if dns is not None else None)
|
| +
|
| + @property
|
| + def replay_server(self):
|
| + return self._wpr_server
|
| +
|
| + @property
|
| + def forwarder(self):
|
| + return self._forwarder
|
| +
|
| + @property
|
| + def platform_backend(self):
|
| + return self._platform_backend
|
| +
|
| +
|
| +# TODO(perezju): Remove once network_controller_backend is no longer tied to
|
| +# the browser_backend.
|
| +class FakeBrowserBackend(object):
|
| + def __init__(self):
|
| + # Config to use default ports and no DNS traffic.
|
| + self.wpr_port_pairs = forwarders.PortPairs(
|
| + http=forwarders.PortPair(0, 0),
|
| + https=forwarders.PortPair(0, 0),
|
| + dns=None)
|
|
|
|
|
| class NetworkControllerBackendTest(unittest.TestCase):
|
|
|
| def setUp(self):
|
| - self.browser_backend = FakeBrowserBackend(
|
| - http_ports=(0, 0),
|
| - https_ports=(0, 0),
|
| - dns_ports=None)
|
| + # Always use our FakeReplayServer.
|
| + FakeReplayServer.DEFAULT_PORTS = DEFAULT_PORTS # Use global defaults.
|
| + patcher = mock.patch(
|
| + 'telemetry.internal.util.webpagereplay.ReplayServer', FakeReplayServer)
|
| + patcher.start()
|
| + self.addCleanup(patcher.stop)
|
| +
|
| + # Pretend that only some predefined set of files exist.
|
| + def fake_path_exists(filename):
|
| + return filename in ['some-archive.wpr', 'another-archive.wpr']
|
| +
|
| + patcher = mock.patch('os.path.exists', side_effect=fake_path_exists)
|
| + self.mock_path_exists = patcher.start()
|
| + self.addCleanup(patcher.stop)
|
| +
|
| self.network_controller_backend = TestNetworkControllerBackend(
|
| - FakePlatformBackend(),
|
| - fake_started_http_port=222,
|
| - fake_started_https_port=444,
|
| - fake_started_dns_port=None)
|
| + FakePlatformBackend())
|
|
|
| - def testSameArgsReuseServer(self):
|
| + def testOpenCloseController(self):
|
| + # TODO(perezju): Add checks for installing/uninstalling test certificates
|
| + # where appropriate.
|
| b = self.network_controller_backend
|
| - with tempfile.NamedTemporaryFile() as temp_file:
|
| - archive_path = temp_file.name
|
| -
|
| - # Create Replay server.
|
| - b.SetReplayArgs(archive_path, wpr_modes.WPR_REPLAY, '3g', ['--some-arg'])
|
| - b.UpdateReplay(self.browser_backend)
|
| -
|
| - self.assertEqual(archive_path, b.fake_replay_server.archive_path)
|
| - self.assertEqual('123.321.123.321', b.fake_replay_server.host_ip)
|
| - self.assertEqual(
|
| - ['--some-arg', '--net=3g', '--inject_scripts='],
|
| - b.fake_replay_server.replay_args)
|
| - self.assertEqual(222, b.wpr_http_device_port)
|
| - self.assertEqual(444, b.wpr_https_device_port)
|
| -
|
| - # Reuse Replay server.
|
| - fake_replay_server = b.fake_replay_server
|
| - b.SetReplayArgs(archive_path, wpr_modes.WPR_REPLAY, '3g', ['--some-arg'])
|
| - b.UpdateReplay(self.browser_backend)
|
| -
|
| - self.assertIs(fake_replay_server, b.fake_replay_server)
|
| - b.StopReplay()
|
| - self.assertTrue(b.fake_replay_server.is_stopped)
|
| + self.assertFalse(b.is_open)
|
| + b.Open(wpr_modes.WPR_REPLAY, '3g', ['--some-arg'])
|
| + self.assertTrue(b.is_open)
|
| + b.Close()
|
| + self.assertFalse(b.is_open)
|
| + b.Close() # It's fine to close a closed controller.
|
| + self.assertFalse(b.is_open)
|
| +
|
| + def testOpeningOpenControllerRaises(self):
|
| + b = self.network_controller_backend
|
| + b.Open(wpr_modes.WPR_REPLAY, '3g', ['--some-arg'])
|
| + with self.assertRaises(AssertionError):
|
| + b.Open(wpr_modes.WPR_REPLAY, '3g', ['--some-arg'])
|
|
|
| - def testDifferentArgsUseDifferentServer(self):
|
| + def testStartStopReplay(self):
|
| b = self.network_controller_backend
|
| - with tempfile.NamedTemporaryFile() as temp_file:
|
| - archive_file = temp_file.name
|
| -
|
| - # Create Replay server.
|
| - b.SetReplayArgs(archive_file, wpr_modes.WPR_REPLAY, '3g', ['--some-arg'])
|
| - b.UpdateReplay(self.browser_backend)
|
| -
|
| - self.assertEqual(
|
| - ['--some-arg', '--net=3g', '--inject_scripts='],
|
| - b.fake_replay_server.replay_args)
|
| - self.assertEqual(222, b.wpr_http_device_port)
|
| - self.assertEqual(444, b.wpr_https_device_port)
|
| -
|
| - # If Replay restarts, it uses these ports when passed "0" for ports.
|
| - b.fake_started_http_port = 212
|
| - b.fake_started_https_port = 323
|
| - b.fake_started_dns_port = None
|
| -
|
| - # Create different Replay server (set netsim to None instead of 3g).
|
| - fake_replay_server = b.fake_replay_server
|
| - b.SetReplayArgs(archive_file, wpr_modes.WPR_REPLAY, None, ['--some-arg'])
|
| - b.UpdateReplay(self.browser_backend)
|
| -
|
| - self.assertIsNot(fake_replay_server, b.fake_replay_server)
|
| - self.assertTrue(fake_replay_server.is_stopped)
|
| - self.assertFalse(b.fake_replay_server.is_stopped)
|
| -
|
| - self.assertEqual(
|
| - ['--some-arg', '--inject_scripts='],
|
| - b.fake_replay_server.replay_args)
|
| - self.assertEqual(212, b.wpr_http_device_port)
|
| - self.assertEqual(323, b.wpr_https_device_port)
|
| + b.Open(wpr_modes.WPR_REPLAY, '3g', ['--some-arg'])
|
| + b.StartReplay('some-archive.wpr')
|
| + self.assertTrue(b.replay_server.is_running)
|
| + self.assertIsNotNone(b.forwarder.port_pairs)
|
| +
|
| + old_replay_server = b.replay_server
|
| + old_forwarder = b.forwarder
|
| b.StopReplay()
|
| - self.assertTrue(b.fake_replay_server.is_stopped)
|
| -
|
| - def testUpdateReplayWithoutArchivePathDoesNotStopReplay(self):
|
| - b = TestNetworkControllerBackend(
|
| - FakePlatformBackend(),
|
| - fake_started_http_port=222,
|
| - fake_started_https_port=444,
|
| - fake_started_dns_port=None)
|
| - with tempfile.NamedTemporaryFile() as temp_file:
|
| - archive_file = temp_file.name
|
| - # Create Replay server.
|
| - b.SetReplayArgs(archive_file, wpr_modes.WPR_REPLAY, '3g', ['--some-arg'])
|
| - browser_backend = FakeBrowserBackend(
|
| - http_ports=(0, 0), https_ports=(0, 0), dns_ports=None)
|
| - b.UpdateReplay(browser_backend)
|
| - self.assertFalse(b.fake_replay_server.is_stopped)
|
| - b.SetReplayArgs(None, wpr_modes.WPR_REPLAY, '3g', ['--some-arg'])
|
| - b.UpdateReplay()
|
| - self.assertFalse(b.fake_replay_server.is_stopped)
|
| + self.assertFalse(old_replay_server.is_running)
|
| + self.assertIsNone(old_forwarder.port_pairs)
|
| + self.assertTrue(b.is_open) # Controller is still open.
|
|
|
| - def testUpdateReplayWithoutArgsIsOkay(self):
|
| + b.Close()
|
| + self.assertFalse(b.is_open)
|
| +
|
| + def testClosingControllerAlsoStopsReplay(self):
|
| + b = self.network_controller_backend
|
| + b.Open(wpr_modes.WPR_REPLAY, '3g', ['--some-arg'])
|
| + b.StartReplay('some-archive.wpr')
|
| + self.assertTrue(b.replay_server.is_running)
|
| + self.assertIsNotNone(b.forwarder.port_pairs)
|
| +
|
| + old_replay_server = b.replay_server
|
| + old_forwarder = b.forwarder
|
| + b.Close()
|
| + self.assertFalse(old_replay_server.is_running)
|
| + self.assertIsNone(old_forwarder.port_pairs)
|
| + self.assertFalse(b.is_open)
|
| +
|
| + def testReplayOnClosedControllerRaises(self):
|
| + b = self.network_controller_backend
|
| + self.assertFalse(b.is_open)
|
| + with self.assertRaises(AssertionError):
|
| + b.StartReplay('some-archive.wpr')
|
| +
|
| + def testReplayWithSameArgsReuseServer(self):
|
| + b = self.network_controller_backend
|
| + b.Open(wpr_modes.WPR_REPLAY, '3g', ['--some-arg'])
|
| +
|
| + b.StartReplay('some-archive.wpr')
|
| + self.assertTrue(b.replay_server.is_running)
|
| +
|
| + old_replay_server = b.replay_server
|
| + b.StartReplay('some-archive.wpr')
|
| + self.assertIs(b.replay_server, old_replay_server)
|
| + self.assertTrue(b.replay_server.is_running)
|
| +
|
| + def testReplayWithDifferentArgsUseDifferentServer(self):
|
| b = self.network_controller_backend
|
| - b.UpdateReplay(self.browser_backend) # does not raise
|
| + b.Open(wpr_modes.WPR_REPLAY, '3g', ['--some-arg'])
|
| +
|
| + b.StartReplay('some-archive.wpr')
|
| + self.assertTrue(b.replay_server.is_running)
|
| +
|
| + old_replay_server = b.replay_server
|
| + b.StartReplay('another-archive.wpr')
|
| + self.assertIsNot(b.replay_server, old_replay_server)
|
| + self.assertTrue(b.replay_server.is_running)
|
| + self.assertFalse(old_replay_server.is_running)
|
| +
|
| + def testReplayWithoutArchivePathDoesNotStopReplay(self):
|
| + b = self.network_controller_backend
|
| + b.Open(wpr_modes.WPR_REPLAY, '3g', ['--some-arg'])
|
| +
|
| + b.StartReplay('some-archive.wpr')
|
| + self.assertTrue(b.replay_server.is_running)
|
| + old_replay_server = b.replay_server
|
| +
|
| + b.StartReplay(None)
|
| + self.assertIs(b.replay_server, old_replay_server)
|
| + self.assertTrue(b.replay_server.is_running)
|
| + self.assertEqual(b.replay_server.archive_path, 'some-archive.wpr')
|
| +
|
| + def testModeOffDoesNotCreateReplayServer(self):
|
| + b = self.network_controller_backend
|
| + b.Open(wpr_modes.WPR_OFF, '3g', ['--some-arg'])
|
| + b.StartReplay('may-or-may-not-exist.wpr')
|
| + self.assertIsNone(b.replay_server)
|
| + self.assertIsNone(b.forwarder)
|
|
|
| def testBadArchivePathRaises(self):
|
| b = self.network_controller_backend
|
| - b.SetReplayArgs('/tmp/nonexistant', wpr_modes.WPR_REPLAY, '3g', [])
|
| + b.Open(wpr_modes.WPR_REPLAY, '3g', ['--some-arg'])
|
| with self.assertRaises(network_controller_backend.ArchiveDoesNotExistError):
|
| - b.UpdateReplay(self.browser_backend)
|
| + b.StartReplay('does-not-exist.wpr')
|
|
|
| def testBadArchivePathOnRecordIsOkay(self):
|
| - """No ArchiveDoesNotExistError for record mode."""
|
| b = self.network_controller_backend
|
| - b.SetReplayArgs('/tmp/nonexistant', wpr_modes.WPR_RECORD, '3g', [])
|
| - b.UpdateReplay(self.browser_backend) # does not raise
|
| + b.Open(wpr_modes.WPR_RECORD, '3g', ['--some-arg'])
|
| + b.StartReplay('does-not-exist-yet.wpr') # Does not raise.
|
|
|
| - def testModeOffDoesNotCreateReplayServer(self):
|
| + def testReplayServerSettings(self):
|
| + b = self.network_controller_backend
|
| + b.platform_backend.wpr_ca_cert_path = 'CERT_FILE'
|
| + b.Open(wpr_modes.WPR_RECORD, '3g', ['--some-arg'])
|
| + b.StartReplay('some-archive.wpr')
|
| +
|
| + # Externally visible properties
|
| + self.assertEqual(b.host_ip, FORWARDER_HOST_IP)
|
| + self.assertEqual(b.wpr_mode, wpr_modes.WPR_RECORD)
|
| + self.assertEqual(b.wpr_device_ports, DEFAULT_PORTS)
|
| +
|
| + # Private replay server settings.
|
| + self.assertTrue(b.replay_server.is_running)
|
| + self.assertEqual(b.replay_server.archive_path, 'some-archive.wpr')
|
| + self.assertEqual(b.replay_server.host_ip, FORWARDER_HOST_IP)
|
| + self.assertEqual(b.replay_server.replay_args, [
|
| + '--some-arg', '--net=3g', '--record', '--inject_scripts=',
|
| + '--should_generate_certs', '--https_root_ca_cert_path=CERT_FILE'])
|
| +
|
| + def testReplayServerOffSettings(self):
|
| + b = self.network_controller_backend
|
| + b.platform_backend.wpr_ca_cert_path = 'CERT_FILE'
|
| + b.Open(wpr_modes.WPR_OFF, '3g', ['--some-arg'])
|
| + b.StartReplay('some-archive.wpr')
|
| +
|
| + self.assertEqual(b.host_ip, FORWARDER_HOST_IP)
|
| + self.assertEqual(b.wpr_mode, wpr_modes.WPR_OFF)
|
| + self.assertEqual(b.wpr_device_ports, None)
|
| + self.assertIsNone(b.replay_server)
|
| +
|
| + def testUseDefaultPorts(self):
|
| b = self.network_controller_backend
|
| - b.SetReplayArgs('/tmp/nonexistant', wpr_modes.WPR_OFF, '3g', [])
|
| - b.UpdateReplay(self.browser_backend)
|
| - self.assertIsNone(b.fake_replay_server)
|
| + b.Open(wpr_modes.WPR_REPLAY, '3g', ['--some-arg'])
|
| + b.SetWprPortPairs(http=(0, 0), https=(0, 0), dns=(0, 0))
|
| + b.StartReplay('some-archive.wpr')
|
| + self.assertEqual(b.replay_server.ports, DEFAULT_PORTS)
|
| + self.assertEqual(b.wpr_device_ports, DEFAULT_PORTS)
|
|
|
| + # Invariant
|
| + self.assertEqual(b.forwarder.port_pairs.local_ports, b.replay_server.ports)
|
| + self.assertEqual(b.forwarder.port_pairs.remote_ports, b.wpr_device_ports)
|
| +
|
| + def testUseDefaultLocalPorts(self):
|
| + b = self.network_controller_backend
|
| + b.Open(wpr_modes.WPR_REPLAY, '3g', ['--some-arg'])
|
| + b.SetWprPortPairs(http=(0, 8888), https=(0, 4444), dns=(0, 2222))
|
| + b.StartReplay('some-archive.wpr')
|
| + self.assertEqual(b.replay_server.ports, DEFAULT_PORTS)
|
| + self.assertEqual(b.wpr_device_ports, forwarders.PortSet(8888, 4444, 2222))
|
| +
|
| + # Invariant
|
| + self.assertEqual(b.forwarder.port_pairs.local_ports, b.replay_server.ports)
|
| + self.assertEqual(b.forwarder.port_pairs.remote_ports, b.wpr_device_ports)
|
| +
|
| + def testUseSpecificPorts(self):
|
| + b = self.network_controller_backend
|
| + b.Open(wpr_modes.WPR_REPLAY, '3g', ['--some-arg'])
|
| + b.SetWprPortPairs(http=(88, 8888), https=(44, 4444), dns=None)
|
| + b.StartReplay('some-archive.wpr')
|
| + self.assertEqual(b.replay_server.ports, forwarders.PortSet(88, 44, None))
|
| + self.assertEqual(b.wpr_device_ports, forwarders.PortSet(8888, 4444, None))
|
| +
|
| + # Invariant
|
| + self.assertEqual(b.forwarder.port_pairs.local_ports, b.replay_server.ports)
|
| + self.assertEqual(b.forwarder.port_pairs.remote_ports, b.wpr_device_ports)
|
| +
|
| + def testDefaultPortsMayChange(self):
|
| + FakeReplayServer.DEFAULT_PORTS = forwarders.PortSet(123, 456, 789)
|
| + b = self.network_controller_backend
|
| + b.Open(wpr_modes.WPR_REPLAY, '3g', ['--some-arg'])
|
| + b.SetWprPortPairs(http=(0, 0), https=(0, 0), dns=(0, 0))
|
| + b.StartReplay('some-archive.wpr')
|
| + self.assertEqual(b.wpr_device_ports, forwarders.PortSet(123, 456, 789))
|
| +
|
| + # If replay restarts, use a different set of default ports.
|
| + FakeReplayServer.DEFAULT_PORTS = forwarders.PortSet(987, 654, 321)
|
| + b.StartReplay('another-archive.wpr')
|
| + self.assertEqual(b.wpr_device_ports, forwarders.PortSet(987, 654, 321))
|
| +
|
| + # TODO(perezju): Remove when old API is gone.
|
| + def testUpdateReplayWithoutArgsIsOkay(self):
|
| + b = self.network_controller_backend
|
| + b.UpdateReplay(FakeBrowserBackend()) # Does not raise.
|
| +
|
| + # TODO(perezju): Remove when old API is gone.
|
| def testSameBrowserUsesSamePorts(self):
|
| + FakeReplayServer.DEFAULT_PORTS = forwarders.PortSet(222, 444, 555)
|
| b = self.network_controller_backend
|
| - with tempfile.NamedTemporaryFile() as temp_file:
|
| - archive_path = temp_file.name
|
| -
|
| - # Create Replay server.
|
| - b.SetReplayArgs(archive_path, wpr_modes.WPR_REPLAY, '3g', ['--some-arg'])
|
| - b.UpdateReplay(self.browser_backend)
|
| -
|
| - self.assertEqual(archive_path, b.fake_replay_server.archive_path)
|
| - self.assertEqual('123.321.123.321', b.fake_replay_server.host_ip)
|
| - self.assertEqual(
|
| - ['--some-arg', '--net=3g', '--inject_scripts='],
|
| - b.fake_replay_server.replay_args)
|
| - self.assertEqual(222, b.wpr_http_device_port)
|
| - self.assertEqual(444, b.wpr_https_device_port)
|
| -
|
| - # If Replay restarts, it uses these ports when passed "0" for ports.
|
| - b.fake_started_http_port = 212
|
| - b.fake_started_https_port = 434
|
| - b.fake_started_dns_port = None
|
| -
|
| - # Reuse Replay server.
|
| - fake_replay_server = b.fake_replay_server
|
| - b.SetReplayArgs(archive_path, wpr_modes.WPR_REPLAY, None, ['--NEW-ARG'])
|
| - b.UpdateReplay() # no browser backend means use the previous one
|
| + b.SetReplayArgs('some-archive.wpr', wpr_modes.WPR_REPLAY, '3g', [])
|
| + b.UpdateReplay(FakeBrowserBackend())
|
| + self.assertEqual(b.wpr_device_ports, forwarders.PortSet(222, 444, None))
|
| +
|
| + # If replay restarts, use a different set of default ports.
|
| + FakeReplayServer.DEFAULT_PORTS = forwarders.PortSet(987, 654, 321)
|
| +
|
| + old_replay_server = b.replay_server
|
| + b.SetReplayArgs('another-archive.wpr', wpr_modes.WPR_REPLAY, None, [])
|
| + b.UpdateReplay() # No browser backend means use the previous one.
|
|
|
| # Even though WPR is restarted, it uses the same ports because
|
| # the browser was configured to a particular port set.
|
| - self.assertIsNot(fake_replay_server, b.fake_replay_server)
|
| - self.assertEqual(222, b.wpr_http_device_port)
|
| - self.assertEqual(444, b.wpr_https_device_port)
|
| - b.StopReplay()
|
| - self.assertTrue(b.fake_replay_server.is_stopped)
|
| -
|
| -# pylint: disable=protected-access
|
| -class ForwarderPortPairsTest(unittest.TestCase):
|
| - def testZeroIsOkayForRemotePorts(self):
|
| - started_ports = (8080, 8443, None)
|
| - wpr_port_pairs = forwarders.PortPairs(
|
| - http=forwarders.PortPair(0, 0),
|
| - https=forwarders.PortPair(0, 0),
|
| - dns=None)
|
| - expected_port_pairs = forwarders.PortPairs(
|
| - http=forwarders.PortPair(8080, 0),
|
| - https=forwarders.PortPair(8443, 0),
|
| - dns=None)
|
| - self.assertEqual(
|
| - expected_port_pairs,
|
| - network_controller_backend._ForwarderPortPairs(started_ports,
|
| - wpr_port_pairs))
|
| -
|
| - def testCombineStartedAndRemotePorts(self):
|
| - started_ports = (8888, 4343, 5353)
|
| - wpr_port_pairs = forwarders.PortPairs(
|
| - http=forwarders.PortPair(0, 80),
|
| - https=forwarders.PortPair(0, 443),
|
| - dns=forwarders.PortPair(0, 53))
|
| - expected_port_pairs = forwarders.PortPairs(
|
| - http=forwarders.PortPair(8888, 80),
|
| - https=forwarders.PortPair(4343, 443),
|
| - dns=forwarders.PortPair(5353, 53))
|
| - self.assertEqual(
|
| - expected_port_pairs,
|
| - network_controller_backend._ForwarderPortPairs(started_ports,
|
| - wpr_port_pairs))
|
| + self.assertIsNot(b.replay_server, old_replay_server)
|
| + self.assertTrue(b.replay_server.is_running)
|
| + self.assertFalse(old_replay_server.is_running)
|
| + self.assertEqual(b.wpr_device_ports, forwarders.PortSet(222, 444, None))
|
|
|