| Index: tools/telemetry/telemetry/core/util.py
|
| diff --git a/tools/telemetry/telemetry/core/util.py b/tools/telemetry/telemetry/core/util.py
|
| deleted file mode 100644
|
| index f570bf2d3499e6c16840dfaf4e101e68101e8c81..0000000000000000000000000000000000000000
|
| --- a/tools/telemetry/telemetry/core/util.py
|
| +++ /dev/null
|
| @@ -1,164 +0,0 @@
|
| -# Copyright 2012 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 glob
|
| -import imp
|
| -import inspect
|
| -import logging
|
| -import os
|
| -import socket
|
| -import sys
|
| -import time
|
| -
|
| -from catapult_base import util as catapult_util # pylint: disable=import-error
|
| -
|
| -from telemetry.core import exceptions
|
| -
|
| -
|
| -IsRunningOnCrosDevice = catapult_util.IsRunningOnCrosDevice
|
| -GetCatapultDir = catapult_util.GetCatapultDir
|
| -
|
| -
|
| -def GetBaseDir():
|
| - main_module = sys.modules['__main__']
|
| - if hasattr(main_module, '__file__'):
|
| - return os.path.dirname(os.path.abspath(main_module.__file__))
|
| - else:
|
| - return os.getcwd()
|
| -
|
| -
|
| -def GetTelemetryDir():
|
| - return os.path.normpath(os.path.join(
|
| - os.path.abspath(__file__), '..', '..', '..'))
|
| -
|
| -
|
| -def GetTelemetryThirdPartyDir():
|
| - return os.path.join(GetTelemetryDir(), 'third_party')
|
| -
|
| -
|
| -def GetUnittestDataDir():
|
| - return os.path.join(GetTelemetryDir(), 'telemetry', 'internal', 'testing')
|
| -
|
| -
|
| -def GetChromiumSrcDir():
|
| - return os.path.normpath(os.path.join(GetTelemetryDir(), '..', '..'))
|
| -
|
| -
|
| -_counter = [0]
|
| -
|
| -
|
| -def _GetUniqueModuleName():
|
| - _counter[0] += 1
|
| - return "page_set_module_" + str(_counter[0])
|
| -
|
| -
|
| -def GetPythonPageSetModule(file_path):
|
| - return imp.load_source(_GetUniqueModuleName(), file_path)
|
| -
|
| -
|
| -def WaitFor(condition, timeout):
|
| - """Waits for up to |timeout| secs for the function |condition| to return True.
|
| -
|
| - Polling frequency is (elapsed_time / 10), with a min of .1s and max of 5s.
|
| -
|
| - Returns:
|
| - Result of |condition| function (if present).
|
| - """
|
| - min_poll_interval = 0.1
|
| - max_poll_interval = 5
|
| - output_interval = 300
|
| -
|
| - def GetConditionString():
|
| - if condition.__name__ == '<lambda>':
|
| - try:
|
| - return inspect.getsource(condition).strip()
|
| - except IOError:
|
| - pass
|
| - return condition.__name__
|
| -
|
| - start_time = time.time()
|
| - last_output_time = start_time
|
| - while True:
|
| - res = condition()
|
| - if res:
|
| - return res
|
| - now = time.time()
|
| - elapsed_time = now - start_time
|
| - last_output_elapsed_time = now - last_output_time
|
| - if elapsed_time > timeout:
|
| - raise exceptions.TimeoutException('Timed out while waiting %ds for %s.' %
|
| - (timeout, GetConditionString()))
|
| - if last_output_elapsed_time > output_interval:
|
| - logging.info('Continuing to wait %ds for %s. Elapsed: %ds.', timeout,
|
| - GetConditionString(), elapsed_time)
|
| - last_output_time = time.time()
|
| - poll_interval = min(
|
| - max(elapsed_time / 10., min_poll_interval), max_poll_interval)
|
| - time.sleep(poll_interval)
|
| -
|
| -
|
| -class PortKeeper(object):
|
| - """Port keeper hold an available port on the system.
|
| -
|
| - Before actually use the port, you must call Release().
|
| - """
|
| -
|
| - def __init__(self):
|
| - self._temp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
| - self._temp_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
|
| - self._temp_socket.bind(('', 0))
|
| - self._port = self._temp_socket.getsockname()[1]
|
| -
|
| - @property
|
| - def port(self):
|
| - return self._port
|
| -
|
| - def Release(self):
|
| - assert self._temp_socket, 'Already released'
|
| - self._temp_socket.close()
|
| - self._temp_socket = None
|
| -
|
| -
|
| -def GetUnreservedAvailableLocalPort():
|
| - """Returns an available port on the system.
|
| -
|
| - WARNING: This method does not reserve the port it returns, so it may be used
|
| - by something else before you get to use it. This can lead to flake.
|
| - """
|
| - tmp = socket.socket()
|
| - tmp.bind(('', 0))
|
| - port = tmp.getsockname()[1]
|
| - tmp.close()
|
| -
|
| - return port
|
| -
|
| -
|
| -def GetBuildDirectories():
|
| - """Yields all combination of Chromium build output directories."""
|
| - build_dirs = ['build',
|
| - os.path.basename(os.environ.get('CHROMIUM_OUT_DIR', 'out')),
|
| - 'xcodebuild']
|
| -
|
| - build_types = ['Debug', 'Debug_x64', 'Release', 'Release_x64', 'Default']
|
| -
|
| - for build_dir in build_dirs:
|
| - for build_type in build_types:
|
| - yield build_dir, build_type
|
| -
|
| -
|
| -def GetSequentialFileName(base_name):
|
| - """Returns the next sequential file name based on |base_name| and the
|
| - existing files. base_name should not contain extension.
|
| - e.g: if base_name is /tmp/test, and /tmp/test_000.json,
|
| - /tmp/test_001.mp3 exist, this returns /tmp/test_002. In case no
|
| - other sequential file name exist, this will return /tmp/test_000
|
| - """
|
| - name, ext = os.path.splitext(base_name)
|
| - assert ext == '', 'base_name cannot contain file extension.'
|
| - index = 0
|
| - while True:
|
| - output_name = '%s_%03d' % (name, index)
|
| - if not glob.glob(output_name + '.*'):
|
| - break
|
| - index = index + 1
|
| - return output_name
|
|
|