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

Unified Diff: webrtc/tools/testing/utils.py

Issue 2861653005: Moving scripts to download and build apprtc/collider. (Closed)
Patch Set: removing download_node.py (it seems unused) Created 3 years, 7 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: webrtc/tools/testing/utils.py
diff --git a/webrtc/tools/testing/utils.py b/webrtc/tools/testing/utils.py
new file mode 100755
index 0000000000000000000000000000000000000000..1424c4f0701be3b267a06e2217a39472fbe0876d
--- /dev/null
+++ b/webrtc/tools/testing/utils.py
@@ -0,0 +1,142 @@
+#!/usr/bin/env python
+# Copyright (c) 2017 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS. All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+
+"""Utilities for all our deps-management stuff."""
+
+import hashlib
+import os
+import shutil
+import sys
+import subprocess
+import tarfile
+import time
+import zipfile
+
+
+def RunSubprocessWithRetry(cmd):
+ """Invokes the subprocess and backs off exponentially on fail."""
+ for i in range(5):
+ try:
+ subprocess.check_call(cmd)
+ return
+ except subprocess.CalledProcessError as exception:
+ backoff = pow(2, i)
+ print 'Got %s, retrying in %d seconds...' % (exception, backoff)
+ time.sleep(backoff)
+
+ print 'Giving up.'
+ raise exception
+
+
+def DownloadFilesFromGoogleStorage(path):
+ print 'Downloading files in %s...' % path
+
+ extension = 'bat' if 'win32' in sys.platform else 'py'
+ cmd = ['download_from_google_storage.%s' % extension,
+ '--bucket=chromium-webrtc-resources',
+ '--auto_platform',
+ '--recursive',
+ '--directory', path]
+ subprocess.check_call(cmd)
+
+
+def ComputeSHA1(path):
+ if not os.path.exists(path):
+ return 0
+
+ sha1 = hashlib.sha1()
+ file_to_hash = open(path, 'rb')
+ try:
+ sha1.update(file_to_hash.read())
+ finally:
+ file_to_hash.close()
+
+ return sha1.hexdigest()
+
+
+# Code partially copied from
+# https://cs.chromium.org#chromium/build/scripts/common/chromium_utils.py
+def RemoveDirectory(*path):
+ """Recursively removes a directory, even if it's marked read-only.
+
+ Remove the directory located at *path, if it exists.
+
+ shutil.rmtree() doesn't work on Windows if any of the files or directories
+ are read-only, which svn repositories and some .svn files are. We need to
+ be able to force the files to be writable (i.e., deletable) as we traverse
+ the tree.
+
+ Even with all this, Windows still sometimes fails to delete a file, citing
+ a permission error (maybe something to do with antivirus scans or disk
+ indexing). The best suggestion any of the user forums had was to wait a
+ bit and try again, so we do that too. It's hand-waving, but sometimes it
+ works. :/
+ """
+ file_path = os.path.join(*path)
+ if not os.path.exists(file_path):
+ return
+
+ if sys.platform == 'win32':
+ # Give up and use cmd.exe's rd command.
+ file_path = os.path.normcase(file_path)
+ for _ in xrange(3):
+ print 'RemoveDirectory running %s' % (' '.join(
+ ['cmd.exe', '/c', 'rd', '/q', '/s', file_path]))
+ if not subprocess.call(['cmd.exe', '/c', 'rd', '/q', '/s', file_path]):
+ break
+ print ' Failed'
+ time.sleep(3)
+ return
+ else:
+ shutil.rmtree(file_path, ignore_errors=True)
+
+
+def DeleteDirNextToGclient(directory):
+ # Sanity check to avoid nuking the wrong dirs.
+ if not os.path.exists('.gclient'):
+ raise Exception('Invoked from wrong dir; invoke from dir with .gclient')
+ print 'Deleting %s in %s...' % (directory, os.getcwd())
+ RemoveDirectory(directory)
+
+
+def UnpackToWorkingDir(archive_path):
+ extension = os.path.splitext(archive_path)[1]
+ if extension == '.zip':
+ _Unzip(archive_path)
+ else:
+ _Untar(archive_path)
+
+
+def _Unzip(path):
+ print 'Unzipping %s in %s...' % (path, os.getcwd())
+ zip_file = zipfile.ZipFile(path)
+ try:
+ zip_file.extractall()
+ finally:
+ zip_file.close()
+
+
+def _Untar(path):
+ print 'Untarring %s in %s...' % (path, os.getcwd())
+ tar_file = tarfile.open(path, 'r:gz')
+ try:
+ tar_file.extractall()
+ finally:
+ tar_file.close()
+
+
+def GetPlatform():
+ if sys.platform.startswith('win'):
+ return 'win'
+ if sys.platform.startswith('linux'):
+ return 'linux'
+ if sys.platform.startswith('darwin'):
+ return 'mac'
+ raise Exception("Can't run on platform %s." % sys.platform)
+
« webrtc/tools/testing/setup_apprtc.py ('K') | « webrtc/tools/testing/setup_apprtc.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698