89 lines
2.3 KiB
Python
89 lines
2.3 KiB
Python
# Copyright 2015 The Chromium OS Authors. All rights reserved.
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
|
|
from autotest_lib.client.bin import utils
|
|
from telemetry.internal.util import webpagereplay
|
|
|
|
|
|
class WebPageReplayWrapper(object):
|
|
"""
|
|
Wraps around WPR Server to be conveniently used in autotest.
|
|
|
|
"""
|
|
|
|
_REPLAY_HOST = "127.0.0.1"
|
|
|
|
|
|
def __init__(self, archive_path):
|
|
"""
|
|
Creates a WPR server using archive_path and pre-set arguments.
|
|
|
|
@param archive_path: path to the .wpr archive to be used.
|
|
|
|
"""
|
|
|
|
port = utils.get_unused_port()
|
|
self._http_port = port if port else 8080
|
|
|
|
port = utils.get_unused_port()
|
|
self._https_port = port if port else 8713
|
|
|
|
self._server = webpagereplay.ReplayServer(
|
|
archive_path=archive_path,
|
|
replay_host=WebPageReplayWrapper._REPLAY_HOST,
|
|
http_port=self._http_port,
|
|
https_port=self._https_port,
|
|
dns_port=None,
|
|
replay_options=[])
|
|
|
|
|
|
@property
|
|
def chrome_flags_for_wpr(self):
|
|
"""
|
|
@return: list of Chrome flags needed to direct traffic to WPR server.
|
|
|
|
"""
|
|
return ['--host-resolver-rules=MAP * %s, EXCLUDE localhost' %
|
|
WebPageReplayWrapper._REPLAY_HOST,
|
|
'--testing-fixed-http-port=%s' % self._http_port,
|
|
'--testing-fixed-https-port=%s' % self._https_port,
|
|
'--ignore-certificate-errors']
|
|
|
|
|
|
def __enter__(self):
|
|
return self._server.__enter__()
|
|
|
|
|
|
def __exit__(self, exc_type, exc_val, exc_tb):
|
|
return self._server.__exit__(exc_type, exc_val, exc_tb)
|
|
|
|
|
|
class NullWebPageReplayWrapper(object):
|
|
"""
|
|
Empty class. Created to simply clients code, no other purpose.
|
|
|
|
Client will do:
|
|
with chrome.Chrome() as cr, wpr_server:
|
|
....
|
|
|
|
When we are not using WPR we will return this empty class, leaving client's
|
|
code uniform and unchanged.
|
|
|
|
"""
|
|
|
|
@property
|
|
def chrome_flags_for_wpr(self):
|
|
"""
|
|
@return: an empty list. This is an empty class.
|
|
|
|
"""
|
|
return []
|
|
|
|
|
|
def __enter__(self):
|
|
return self
|
|
|
|
|
|
def __exit__(self, exc_type, exc_val, exc_tb):
|
|
pass
|