| Index: tools/skp/webpages_playback.py
|
| diff --git a/tools/skp/webpages_playback.py b/tools/skp/webpages_playback.py
|
| index 457f2c268e74182bfb6bcc0eb3e842fba0d62e6e..356550cb2f921e7995a36a466a90eed50b2e45f9 100644
|
| --- a/tools/skp/webpages_playback.py
|
| +++ b/tools/skp/webpages_playback.py
|
| @@ -63,17 +63,12 @@ import tempfile
|
| import time
|
| import traceback
|
|
|
| -SKIA_DIR = os.path.abspath(os.path.join(
|
| - os.path.realpath(os.path.dirname(__file__)),
|
| - os.pardir, os.pardir))
|
| -sys.path.insert(0, SKIA_DIR)
|
| -
|
| -from common.py.utils import gs_utils
|
| -from common.py.utils import shell_utils
|
|
|
| ROOT_PLAYBACK_DIR_NAME = 'playback'
|
| SKPICTURES_DIR_NAME = 'skps'
|
|
|
| +GS_PREFIX = 'gs://'
|
| +
|
| PARTNERS_GS_BUCKET = 'gs://chrome-partner-telemetry'
|
|
|
| # Local archive and SKP directories.
|
| @@ -111,12 +106,6 @@ CREDENTIALS_GS_PATH = '/playback/credentials/credentials.json'
|
|
|
| X11_DISPLAY = os.getenv('DISPLAY', ':0')
|
|
|
| -GS_PREDEFINED_ACL = gs_utils.GSUtils.PredefinedACL.PRIVATE
|
| -GS_FINE_GRAINED_ACL_LIST = [
|
| - (gs_utils.GSUtils.IdType.GROUP_BY_DOMAIN, 'google.com',
|
| - gs_utils.GSUtils.Permission.READ),
|
| -]
|
| -
|
| # Path to Chromium's page sets.
|
| CHROMIUM_PAGE_SETS_PATH = os.path.join('tools', 'perf', 'page_sets')
|
|
|
| @@ -156,7 +145,7 @@ class SkPicturePlayback(object):
|
| self._upload = parse_options.upload
|
| self._skp_prefix = parse_options.skp_prefix
|
| data_store_location = parse_options.data_store
|
| - if data_store_location.startswith(gs_utils.GS_PREFIX):
|
| + if data_store_location.startswith(GS_PREFIX):
|
| self.gs = GoogleStorageDataStore(data_store_location)
|
| else:
|
| self.gs = LocalFileSystemDataStore(data_store_location)
|
| @@ -261,7 +250,7 @@ class SkPicturePlayback(object):
|
| )
|
| for _ in range(RETRY_RECORD_WPR_COUNT):
|
| try:
|
| - shell_utils.run(' '.join(record_wpr_cmd), shell=True)
|
| + subprocess.check_call(' '.join(record_wpr_cmd), shell=True)
|
|
|
| # Move over the created archive into the local webpages archive
|
| # directory.
|
| @@ -305,8 +294,8 @@ class SkPicturePlayback(object):
|
| for _ in range(RETRY_RUN_MEASUREMENT_COUNT):
|
| try:
|
| print '\n\n=======Capturing SKP of %s=======\n\n' % page_set
|
| - shell_utils.run(' '.join(run_benchmark_cmd), shell=True)
|
| - except shell_utils.CommandFailedException:
|
| + subprocess.check_call(' '.join(run_benchmark_cmd), shell=True)
|
| + except subprocess.CalledProcessError:
|
| # skpicture_printer sometimes fails with AssertionError but the
|
| # captured SKP is still valid. This is a known issue.
|
| pass
|
| @@ -341,10 +330,7 @@ class SkPicturePlayback(object):
|
|
|
| for tools_cmd in (render_pictures_cmd, render_pdfs_cmd):
|
| print '\n\n=======Running %s=======' % ' '.join(tools_cmd)
|
| - proc = subprocess.Popen(tools_cmd)
|
| - (code, _) = shell_utils.log_process_after_completion(proc, echo=False)
|
| - if code != 0:
|
| - raise Exception('%s failed!' % ' '.join(tools_cmd))
|
| + subprocess.check_call(tools_cmd)
|
|
|
| if not self._non_interactive:
|
| print '\n\n=======Running debugger======='
|
| @@ -361,10 +347,7 @@ class SkPicturePlayback(object):
|
| dest_dir_name = self._alternate_upload_dir
|
|
|
| self.gs.upload_dir_contents(
|
| - self._local_skp_dir, dest_dir=dest_dir_name,
|
| - upload_if=gs_utils.GSUtils.UploadIf.IF_MODIFIED,
|
| - predefined_acl=GS_PREDEFINED_ACL,
|
| - fine_grained_acl_list=GS_FINE_GRAINED_ACL_LIST)
|
| + self._local_skp_dir, dest_dir=dest_dir_name)
|
|
|
| print '\n\n=======New SKPs have been uploaded to %s =======\n\n' % (
|
| posixpath.join(self.gs.target_name(), dest_dir_name,
|
| @@ -381,10 +364,7 @@ class SkPicturePlayback(object):
|
| partner_gs = GoogleStorageDataStore(PARTNERS_GS_BUCKET)
|
| partner_gs.delete_path(SKPICTURES_DIR_NAME)
|
| print 'Uploading %s to %s' % (self._local_skp_dir, SKPICTURES_DIR_NAME)
|
| - partner_gs.upload_dir_contents(
|
| - self._local_skp_dir,
|
| - dest_dir=SKPICTURES_DIR_NAME,
|
| - upload_if=gs_utils.GSUtils.UploadIf.IF_MODIFIED)
|
| + partner_gs.upload_dir_contents(self._local_skp_dir, SKPICTURES_DIR_NAME)
|
| print '\n\n=======New SKPs have been uploaded to %s =======\n\n' % (
|
| posixpath.join(partner_gs.target_name(), SKPICTURES_DIR_NAME))
|
|
|
| @@ -476,33 +456,45 @@ class DataStore:
|
| raise NotImplementedError()
|
| def target_type(self):
|
| raise NotImplementedError()
|
| - def does_storage_object_exist(self, *args):
|
| + def does_storage_object_exist(self, name):
|
| raise NotImplementedError()
|
| - def download_file(self, *args):
|
| + def download_file(self, name, local_path):
|
| raise NotImplementedError()
|
| - def upload_dir_contents(self, source_dir, **kwargs):
|
| + def upload_dir_contents(self, source_dir, dest_dir):
|
| raise NotImplementedError()
|
|
|
| +
|
| class GoogleStorageDataStore(DataStore):
|
| def __init__(self, data_store_url):
|
| - self._data_store_url = data_store_url
|
| - self._bucket = remove_prefix(self._data_store_url.lstrip(),
|
| - gs_utils.GS_PREFIX)
|
| - self.gs = gs_utils.GSUtils()
|
| + self._url = data_store_url
|
| +
|
| def target_name(self):
|
| - return self._data_store_url
|
| + return self._url
|
| +
|
| def target_type(self):
|
| return 'Google Storage'
|
| - def does_storage_object_exist(self, *args):
|
| - return self.gs.does_storage_object_exist(self._bucket, *args)
|
| +
|
| + def does_storage_object_exist(self, name):
|
| + try:
|
| + output = subprocess.check_output([
|
| + 'gsutil', 'ls', '/'.join((self._url, name))])
|
| + except subprocess.CalledProcessError:
|
| + return False
|
| + if len(output.splitlines) != 1:
|
| + return False
|
| + return True
|
| +
|
| def delete_path(self, path):
|
| - _, files = self.gs.list_bucket_contents(self._bucket, subdir=path)
|
| - for f in files:
|
| - self.gs.delete_file(self._bucket, posixpath.join(path, f))
|
| - def download_file(self, *args):
|
| - self.gs.download_file(self._bucket, *args)
|
| - def upload_dir_contents(self, source_dir, **kwargs):
|
| - self.gs.upload_dir_contents(source_dir, self._bucket, **kwargs)
|
| + subprocess.check_call(['gsutil', 'rm', '-r', path])
|
| +
|
| + def download_file(self, name, local_path):
|
| + subprocess.check_call([
|
| + 'gsutil', 'cp', '/'.join((self._url, name)), local_path])
|
| +
|
| + def upload_dir_contents(self, source_dir, dest_dir):
|
| + subprocess.check_call([
|
| + 'gsutil', 'cp', '-r', source_dir, '/'.join(self._url, dest_dir)])
|
| +
|
|
|
| class LocalFileSystemDataStore(DataStore):
|
| def __init__(self, data_store_location):
|
| @@ -511,13 +503,13 @@ class LocalFileSystemDataStore(DataStore):
|
| return self._base_dir
|
| def target_type(self):
|
| return self._base_dir
|
| - def does_storage_object_exist(self, name, *args):
|
| + def does_storage_object_exist(self, name):
|
| return os.path.isfile(os.path.join(self._base_dir, name))
|
| def delete_path(self, path):
|
| shutil.rmtree(path)
|
| - def download_file(self, name, local_path, *args):
|
| + def download_file(self, name, local_path):
|
| shutil.copyfile(os.path.join(self._base_dir, name), local_path)
|
| - def upload_dir_contents(self, source_dir, dest_dir, **kwargs):
|
| + def upload_dir_contents(self, source_dir, dest_dir):
|
| def copytree(source_dir, dest_dir):
|
| if not os.path.exists(dest_dir):
|
| os.makedirs(dest_dir)
|
|
|