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

Unified Diff: tools/telemetry/telemetry/core/platform/network_controller_backend_unittest.py

Issue 656303003: Telemetry: Move Web Page Replay to the platform. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Update --use-live-sites tests to not use private browser property. Created 6 years, 2 months 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/platform/network_controller_backend_unittest.py
diff --git a/tools/telemetry/telemetry/core/platform/network_controller_backend_unittest.py b/tools/telemetry/telemetry/core/platform/network_controller_backend_unittest.py
new file mode 100644
index 0000000000000000000000000000000000000000..148d9ecfdcbd707aba38f8becad995d643396089
--- /dev/null
+++ b/tools/telemetry/telemetry/core/platform/network_controller_backend_unittest.py
@@ -0,0 +1,129 @@
+# Copyright 2014 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 tempfile
+import unittest
+
+from telemetry.core import wpr_modes
+from telemetry.core.platform import network_controller_backend
+
+
+class FakePlatformBackend(object):
+ pass
+
+
+class FakeBrowserBackend(object):
+ pass
+
+
+class FakeReplayServer(object):
+ def __init__(self, browser_backend, **replay_args):
+ self.browser_backend = browser_backend
+ self.replay_args = replay_args
+ self.is_closed = False
+
+ def Close(self):
+ assert not self.is_closed
+ self.is_closed = True
+
+
+class TestNetworkControllerBackend(
+ network_controller_backend.NetworkControllerBackend):
+ """NetworkControllerBackend with a fake ReplayServer."""
+
+ def __init__(self, platform_backend):
+ super(TestNetworkControllerBackend, self).__init__(platform_backend)
+ self.fake_replay_server = None
+
+ def _ReplayServer(self, browser_backend, replay_args):
+ self.fake_replay_server = FakeReplayServer(browser_backend, **replay_args)
+ return self.fake_replay_server
+
+
+class NetworkControllerBackendTest(unittest.TestCase):
+
+ def testSameArgsReusesServer(self):
+ b = TestNetworkControllerBackend(FakePlatformBackend())
+ 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()
+ b.UpdateReplay(browser_backend)
+ self.assertIs(browser_backend, b.fake_replay_server.browser_backend)
+ expected_replay_args = dict(
+ archive_path=archive_file,
+ wpr_mode=wpr_modes.WPR_REPLAY,
+ netsim='3g',
+ extra_wpr_args=['--some-arg'],
+ make_javascript_deterministic=False)
+ self.assertEqual(expected_replay_args, b.fake_replay_server.replay_args)
+
+ # Reuse Replay server.
+ fake_replay_server = b.fake_replay_server
+ b.SetReplayArgs(archive_file, wpr_modes.WPR_REPLAY, '3g', ['--some-arg'])
+ b.UpdateReplay(browser_backend)
+
+ self.assertIs(fake_replay_server, b.fake_replay_server)
+ b.StopReplay()
+ self.assertTrue(b.fake_replay_server.is_closed)
+
+ def testDifferentArgsUsesDifferentServer(self):
+ b = TestNetworkControllerBackend(FakePlatformBackend())
+ 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()
+ b.UpdateReplay(browser_backend)
+ self.assertIs(browser_backend, b.fake_replay_server.browser_backend)
+ expected_replay_args = dict(
+ archive_path=archive_file,
+ wpr_mode=wpr_modes.WPR_REPLAY,
+ netsim='3g',
+ extra_wpr_args=['--some-arg'],
+ make_javascript_deterministic=False)
+ self.assertEqual(expected_replay_args, b.fake_replay_server.replay_args)
+ fake_replay_server = b.fake_replay_server
+
+ # Create different Replay server.
+ # Set netsim to None instead of '3g'.
+ b.SetReplayArgs(archive_file, wpr_modes.WPR_REPLAY, None, ['--some-arg'])
+ b.UpdateReplay(browser_backend)
+
+ self.assertIsNot(fake_replay_server, b.fake_replay_server)
+ self.assertTrue(fake_replay_server.is_closed)
+ self.assertFalse(b.fake_replay_server.is_closed)
+ different_replay_args = dict(
+ archive_path=archive_file,
+ wpr_mode=wpr_modes.WPR_REPLAY,
+ netsim=None, # first call used '3g'
+ extra_wpr_args=['--some-arg'],
+ make_javascript_deterministic=False)
+
+ self.assertEqual(different_replay_args, b.fake_replay_server.replay_args)
+ b.StopReplay()
+ self.assertTrue(b.fake_replay_server.is_closed)
+
+ def testUpdateReplayWithoutArgsIsOkay(self):
+ b = TestNetworkControllerBackend(FakePlatformBackend())
+ b.UpdateReplay(FakeBrowserBackend()) # does not raise
+
+ def testBadArchivePathRaises(self):
+ b = TestNetworkControllerBackend(FakePlatformBackend())
+ b.SetReplayArgs('/tmp/nonexistant', wpr_modes.WPR_REPLAY, '3g', [])
+ with self.assertRaises(network_controller_backend.ArchiveDoesNotExistError):
+ b.UpdateReplay(FakeBrowserBackend())
+
+ def testBadArchivePathOnRecordIsOkay(self):
+ """No ArchiveDoesNotExistError for record mode."""
+ b = TestNetworkControllerBackend(FakePlatformBackend())
+ b.SetReplayArgs('/tmp/nonexistant', wpr_modes.WPR_RECORD, '3g', [])
+ b.UpdateReplay(FakeBrowserBackend()) # does not raise
+
+ def testModeOffDoesNotCreateReplayServer(self):
+ b = TestNetworkControllerBackend(FakePlatformBackend())
+ b.SetReplayArgs('/tmp/nonexistant', wpr_modes.WPR_OFF, '3g', [])
+ b.UpdateReplay(FakeBrowserBackend())
+ self.assertIsNone(b.fake_replay_server)

Powered by Google App Engine
This is Rietveld 408576698