Bug 1366355 - Expand talos tp6 suite to linux x64; r=jmaher

MozReview-Commit-ID: CXMTg3SImxz

--HG--
extra : rebase_source : 871f6da9418575f209236886a3ecfc8e09322b69
This commit is contained in:
Rob Wood 2017-10-05 14:59:05 -04:00
Родитель 6ed989d34c
Коммит 800dc9f11f
6 изменённых файлов: 45 добавлений и 29 удалений

Просмотреть файл

@ -66,6 +66,8 @@ talos:
- talos-tp5o - talos-tp5o
- talos-perf-reftest - talos-perf-reftest
- talos-perf-reftest-singletons - talos-perf-reftest-singletons
- talos-tp6
- talos-tp6-stylo-threads
awsy: awsy:
- awsy - awsy
@ -144,6 +146,7 @@ linux-talos-stylo-disabled:
- talos-tp5o-stylo-disabled - talos-tp5o-stylo-disabled
- talos-perf-reftest-stylo-disabled - talos-perf-reftest-stylo-disabled
- talos-perf-reftest-singletons-stylo-disabled - talos-perf-reftest-singletons-stylo-disabled
- talos-tp6-stylo-disabled
windows-reftest-gpu: windows-reftest-gpu:
- reftest-gpu - reftest-gpu

Просмотреть файл

@ -1757,9 +1757,9 @@ talos-tp6:
treeherder-symbol: tc-T(tp6) treeherder-symbol: tc-T(tp6)
run-on-projects: run-on-projects:
by-test-platform: by-test-platform:
windows.*: ['mozilla-beta', 'mozilla-central', 'mozilla-inbound', 'autoland', 'try', 'date'] windows.*: ['mozilla-beta', 'mozilla-central', 'mozilla-inbound', 'autoland', 'try']
macosx.*: ['mozilla-beta', 'autoland', 'try'] macosx.*: ['mozilla-beta', 'autoland', 'try']
default: [] default: ['mozilla-beta', 'mozilla-central', 'mozilla-inbound', 'autoland', 'try']
max-run-time: 3600 max-run-time: 3600
mozharness: mozharness:
script: talos_script.py script: talos_script.py
@ -1787,7 +1787,7 @@ talos-tp6-stylo-disabled:
by-test-platform: by-test-platform:
windows.*: ['mozilla-beta', 'mozilla-central', 'try'] windows.*: ['mozilla-beta', 'mozilla-central', 'try']
macosx.*: ['mozilla-beta', 'mozilla-central', 'try'] macosx.*: ['mozilla-beta', 'mozilla-central', 'try']
default: [] default: ['mozilla-beta', 'mozilla-central', 'try']
max-run-time: 3600 max-run-time: 3600
mozharness: mozharness:
script: talos_script.py script: talos_script.py
@ -1813,7 +1813,7 @@ talos-tp6-stylo-threads:
by-test-platform: by-test-platform:
windows.*: ['mozilla-beta', 'mozilla-central', 'mozilla-inbound', 'autoland', 'try'] windows.*: ['mozilla-beta', 'mozilla-central', 'mozilla-inbound', 'autoland', 'try']
macosx.*: ['mozilla-beta', 'autoland', 'try'] macosx.*: ['mozilla-beta', 'autoland', 'try']
default: [] default: ['mozilla-beta', 'mozilla-central', 'mozilla-inbound', 'autoland', 'try']
max-run-time: 3600 max-run-time: 3600
mozharness: mozharness:
script: talos_script.py script: talos_script.py
@ -1836,7 +1836,7 @@ talos-xperf:
treeherder-symbol: tc-T(x) treeherder-symbol: tc-T(x)
run-on-projects: run-on-projects:
by-test-platform: by-test-platform:
windows7-32.*: ['mozilla-beta', 'mozilla-central', 'mozilla-inbound', 'autoland', 'try', 'date'] windows7-32.*: ['mozilla-beta', 'mozilla-central', 'mozilla-inbound', 'autoland', 'try']
default: [] default: []
max-run-time: 3600 max-run-time: 3600
mozharness: mozharness:

Просмотреть файл

@ -417,12 +417,9 @@ class Talos(TestingMixin, MercurialScript, BlobUploadMixin, TooltoolMixin,
self.info("Skipping: mitmproxy is not required") self.info("Skipping: mitmproxy is not required")
return return
# tp6 is supported in production only on win and macosx
os_name = self.platform_name() os_name = self.platform_name()
if 'win' not in os_name and os_name != 'macosx':
self.fatal("Aborting: this test is not supported on this platform.")
# on windows we need to install a pytyon 3 virtual env; on macosx we # on windows we need to install a pytyon 3 virtual env; on macosx and linux we
# use a mitmdump pre-built binary that doesn't need an external python 3 # use a mitmdump pre-built binary that doesn't need an external python 3
if 'win' in os_name: if 'win' in os_name:
# setup python 3.x virtualenv # setup python 3.x virtualenv
@ -457,16 +454,20 @@ class Talos(TestingMixin, MercurialScript, BlobUploadMixin, TooltoolMixin,
self.py3_install_modules(modules=['mitmproxy']) self.py3_install_modules(modules=['mitmproxy'])
self.mitmdump = os.path.join(self.py3_path_to_executables(), 'mitmdump') self.mitmdump = os.path.join(self.py3_path_to_executables(), 'mitmdump')
else: else:
# on macosx we use a prebuilt mitmproxy release binary # on macosx and linux64 we use a prebuilt mitmproxy release binary
mitmproxy_path = os.path.join(self.talos_path, 'talos', 'mitmproxy') mitmproxy_path = os.path.join(self.talos_path, 'talos', 'mitmproxy')
self.mitmdump = os.path.join(mitmproxy_path, 'mitmdump') self.mitmdump = os.path.join(mitmproxy_path, 'mitmdump')
if not os.path.exists(self.mitmdump): if not os.path.exists(self.mitmdump):
# download the mitmproxy release binary; will be overridden by the --no-download # download the mitmproxy release binary; will be overridden by the --no-download
if '--no-download' not in self.config['talos_extra_options']: if '--no-download' not in self.config['talos_extra_options']:
self.query_mitmproxy_rel_bin('osx') if 'osx' in self.platform_name():
_platform = 'osx'
else:
_platform = 'linux64'
self.query_mitmproxy_rel_bin(_platform)
if self.mitmproxy_rel_bin is None: if self.mitmproxy_rel_bin is None:
self.fatal("Aborting: mitmproxy_release_bin_osx not found in talos.json") self.fatal("Aborting: mitmproxy_release_bin_osx not found in talos.json")
self.download_mitmproxy_binary('osx') self.download_mitmproxy_binary(_platform)
else: else:
self.info("Not downloading mitmproxy rel binary because no-download was specified") self.info("Not downloading mitmproxy rel binary because no-download was specified")
self.info('The mitmdump macosx binary is found at: %s' % self.mitmdump) self.info('The mitmdump macosx binary is found at: %s' % self.mitmdump)
@ -487,15 +488,18 @@ class Talos(TestingMixin, MercurialScript, BlobUploadMixin, TooltoolMixin,
dest = os.path.join(self.talos_path, 'talos', 'mitmproxy') dest = os.path.join(self.talos_path, 'talos', 'mitmproxy')
_manifest = "mitmproxy-rel-bin-%s.manifest" % platform _manifest = "mitmproxy-rel-bin-%s.manifest" % platform
manifest_file = os.path.join(self.talos_path, 'talos', 'mitmproxy', _manifest) manifest_file = os.path.join(self.talos_path, 'talos', 'mitmproxy', _manifest)
self.tooltool_fetch(
manifest_file, if platform in ['osx', 'linux64']:
output_dir=dest, self.tooltool_fetch(
cache=self.config.get('tooltool_cache') manifest_file,
) output_dir=dest,
archive = os.path.join(dest, self.mitmproxy_rel_bin) cache=self.config.get('tooltool_cache')
tar = self.query_exe('tar') )
unzip_cmd = [tar, '-xvzf', archive, '-C', dest]
self.run_command(unzip_cmd, halt_on_failure=True) archive = os.path.join(dest, self.mitmproxy_rel_bin)
tar = self.query_exe('tar')
unzip_cmd = [tar, '-xvzf', archive, '-C', dest]
self.run_command(unzip_cmd, halt_on_failure=True)
def query_mitmproxy_recording_set(self): def query_mitmproxy_recording_set(self):
"""Mitmproxy requires external playback archives to be downloaded and extracted""" """Mitmproxy requires external playback archives to be downloaded and extracted"""

Просмотреть файл

@ -112,6 +112,7 @@
"tp6-e10s": { "tp6-e10s": {
"tests": ["tp6_google", "tp6_youtube", "tp6_amazon", "tp6_facebook"], "tests": ["tp6_google", "tp6_youtube", "tp6_amazon", "tp6_facebook"],
"mitmproxy_release_bin_osx": "mitmproxy-2.0.2-osx.tar.gz", "mitmproxy_release_bin_osx": "mitmproxy-2.0.2-osx.tar.gz",
"mitmproxy_release_bin_linux64": "mitmproxy-2.0.2-linux.tar.gz",
"mitmproxy_recording_set": "mitmproxy-recording-set-win10.zip", "mitmproxy_recording_set": "mitmproxy-recording-set-win10.zip",
"talos_options": [ "talos_options": [
"--mitmproxy", "--mitmproxy",
@ -122,6 +123,7 @@
"tp6-stylo-disabled-e10s": { "tp6-stylo-disabled-e10s": {
"tests": ["tp6_google", "tp6_youtube", "tp6_amazon", "tp6_facebook"], "tests": ["tp6_google", "tp6_youtube", "tp6_amazon", "tp6_facebook"],
"mitmproxy_release_bin_osx": "mitmproxy-2.0.2-osx.tar.gz", "mitmproxy_release_bin_osx": "mitmproxy-2.0.2-osx.tar.gz",
"mitmproxy_release_bin_linux64": "mitmproxy-2.0.2-linux.tar.gz",
"mitmproxy_recording_set": "mitmproxy-recording-set-win10.zip", "mitmproxy_recording_set": "mitmproxy-recording-set-win10.zip",
"talos_options": [ "talos_options": [
"--disable-stylo", "--disable-stylo",
@ -133,6 +135,7 @@
"tp6-stylo-threads-e10s": { "tp6-stylo-threads-e10s": {
"tests": ["tp6_google", "tp6_youtube", "tp6_amazon", "tp6_facebook"], "tests": ["tp6_google", "tp6_youtube", "tp6_amazon", "tp6_facebook"],
"mitmproxy_release_bin_osx": "mitmproxy-2.0.2-osx.tar.gz", "mitmproxy_release_bin_osx": "mitmproxy-2.0.2-osx.tar.gz",
"mitmproxy_release_bin_linux64": "mitmproxy-2.0.2-linux.tar.gz",
"mitmproxy_recording_set": "mitmproxy-recording-set-win10.zip", "mitmproxy_recording_set": "mitmproxy-recording-set-win10.zip",
"talos_options": [ "talos_options": [
"--stylo-threads=1", "--stylo-threads=1",

Просмотреть файл

@ -0,0 +1,9 @@
[
{
"filename": "mitmproxy-2.0.2-linux.tar.gz",
"size": 48997542,
"digest": "b032e04b8763206a19f80b78062efa59dc901ad32fd8d6cf2d20e22744711352da61e75d93a0d93d645179153534f72a154f73432837db415c9b0cd9d981f012",
"algorithm": "sha512",
"unpack": false
}
]

Просмотреть файл

@ -132,13 +132,10 @@ def start_mitmproxy_playback(mitmdump_path,
sys.path.insert(1, mitmdump_path) sys.path.insert(1, mitmdump_path)
# mitmproxy needs some DLL's that are a part of Firefox itself, so add to path # mitmproxy needs some DLL's that are a part of Firefox itself, so add to path
env["PATH"] = os.path.dirname(browser_path) + ";" + env["PATH"] env["PATH"] = os.path.dirname(browser_path) + ";" + env["PATH"]
elif mozinfo.os == 'mac': else:
# mac and linux
param2 = param + ' ' + ' '.join(mitmproxy_recordings) param2 = param + ' ' + ' '.join(mitmproxy_recordings)
env["PATH"] = os.path.dirname(browser_path) env["PATH"] = os.path.dirname(browser_path)
else:
# TODO: support other platforms, Bug 1366355
LOG.error('Aborting: talos mitmproxy is currently only supported on Windows and Mac')
sys.exit()
command = [mitmdump_path, '-k', '-s', param2] command = [mitmdump_path, '-k', '-s', param2]
@ -160,10 +157,10 @@ def start_mitmproxy_playback(mitmdump_path,
def stop_mitmproxy_playback(mitmproxy_proc): def stop_mitmproxy_playback(mitmproxy_proc):
"""Stop the mitproxy server playback""" """Stop the mitproxy server playback"""
LOG.info("Stopping mitmproxy playback, klling process %d" % mitmproxy_proc.pid) LOG.info("Stopping mitmproxy playback, klling process %d" % mitmproxy_proc.pid)
if mozinfo.os == 'mac': if mozinfo.os == 'win':
mitmproxy_proc.terminate()
else:
mitmproxy_proc.kill() mitmproxy_proc.kill()
else:
mitmproxy_proc.terminate()
time.sleep(10) time.sleep(10)
if mitmproxy_proc.pid in psutil.pids(): if mitmproxy_proc.pid in psutil.pids():
# I *think* we can still continue, as process will be automatically # I *think* we can still continue, as process will be automatically