mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-27 06:43:32 +00:00
Bug 1192309 - Allow Firefox UI tests to run on testers. DONTBUILD. r=bhearsum
* We move the generic platform specific config files under releng_infra_configs/ and remove the word 'generic' from their file name * Added --limit-locales to firefox_ui_updates.py and moved the dry_run break * We improved flake8 score on firefox_ui_updates.py * Small fix for vcstools.py --HG-- rename : testing/mozharness/configs/generic_releng_linux.py => testing/mozharness/configs/releng_infra_configs/linux.py rename : testing/mozharness/configs/generic_releng_linux64.py => testing/mozharness/configs/releng_infra_configs/linux64.py rename : testing/mozharness/configs/generic_releng_macosx64.py => testing/mozharness/configs/releng_infra_configs/macosx64.py rename : testing/mozharness/configs/generic_releng_win32.py => testing/mozharness/configs/releng_infra_configs/win32.py rename : testing/mozharness/configs/generic_releng_win64.py => testing/mozharness/configs/releng_infra_configs/win64.py extra : commitid : LQUsjvWCwAu
This commit is contained in:
parent
7421d14843
commit
736bb04179
@ -44,6 +44,9 @@ class VCSToolsScript(VCSScript):
|
||||
for vcs_tool in VCS_TOOLS:
|
||||
file_path = self.which(vcs_tool)
|
||||
|
||||
if not file_path:
|
||||
file_path = self.query_exe(vcs_tool)
|
||||
|
||||
# If the tool is specified and it is a list is
|
||||
# because we're running on Windows and we won't check
|
||||
if type(self.query_exe(vcs_tool)) is list:
|
||||
|
@ -24,6 +24,7 @@ from mozharness.mozilla.buildbot import TBPL_SUCCESS, TBPL_WARNING, EXIT_STATUS_
|
||||
|
||||
INSTALLER_SUFFIXES = ('.tar.bz2', '.zip', '.dmg', '.exe', '.apk', '.tar.gz')
|
||||
|
||||
|
||||
class FirefoxUIUpdates(FirefoxUITests):
|
||||
# This will be a list containing one item per release based on configs
|
||||
# from tools/release/updates/*cfg
|
||||
@ -55,7 +56,6 @@ class FirefoxUIUpdates(FirefoxUITests):
|
||||
}],
|
||||
]
|
||||
|
||||
|
||||
def __init__(self):
|
||||
config_options = [
|
||||
[['--tools-repo'], {
|
||||
@ -99,6 +99,10 @@ class FirefoxUIUpdates(FirefoxUITests):
|
||||
'dest': 'installer_path',
|
||||
'help': 'Point to an installer to test against.',
|
||||
}],
|
||||
[['--limit-locales'], {
|
||||
'dest': 'limit_locales',
|
||||
'help': 'Limit the number of locales to run.',
|
||||
}],
|
||||
] + copy.deepcopy(self.harness_extra_args)
|
||||
|
||||
super(FirefoxUIUpdates, self).__init__(
|
||||
@ -115,6 +119,8 @@ class FirefoxUIUpdates(FirefoxUITests):
|
||||
|
||||
dirs = self.query_abs_dirs()
|
||||
|
||||
self.limit_locales = int(self.config.get('limit_locales'))
|
||||
|
||||
if self.config.get('tools_tag') is None:
|
||||
# We want to make sure that anyone trying to reproduce a job will
|
||||
# is using the exact tools tag for reproducibility's sake
|
||||
@ -144,7 +150,6 @@ class FirefoxUIUpdates(FirefoxUITests):
|
||||
assert 'update_verify_config' in self.config or self.installer_url or self.installer_path, \
|
||||
'Either specify --update-verify-config, --installer-url or --installer-path.'
|
||||
|
||||
|
||||
def query_abs_dirs(self):
|
||||
if self.abs_dirs:
|
||||
return self.abs_dirs
|
||||
@ -176,7 +181,6 @@ class FirefoxUIUpdates(FirefoxUITests):
|
||||
vcs='hgtool'
|
||||
)
|
||||
|
||||
|
||||
def determine_testing_configuration(self):
|
||||
'''
|
||||
This method builds a testing matrix either based on an update verification
|
||||
@ -219,8 +223,8 @@ class FirefoxUIUpdates(FirefoxUITests):
|
||||
self.channel = uvc.channel
|
||||
|
||||
# Filter out any releases that are less than Gecko 38
|
||||
uvc.releases = [r for r in uvc.releases \
|
||||
if int(r["release"].split('.')[0]) >= 38]
|
||||
uvc.releases = [r for r in uvc.releases
|
||||
if int(r["release"].split('.')[0]) >= 38]
|
||||
|
||||
temp_releases = []
|
||||
for rel_info in uvc.releases:
|
||||
@ -241,7 +245,6 @@ class FirefoxUIUpdates(FirefoxUITests):
|
||||
|
||||
self.releases = chunked_config.releases
|
||||
|
||||
|
||||
def _modify_url(self, rel_info):
|
||||
# This is a temporary hack to find crash symbols. It should be replaced
|
||||
# with something that doesn't make wild guesses about where symbol
|
||||
@ -258,7 +261,6 @@ class FirefoxUIUpdates(FirefoxUITests):
|
||||
|
||||
return temp_url
|
||||
|
||||
|
||||
def _query_symbols_url(self, installer_url):
|
||||
for suffix in INSTALLER_SUFFIXES:
|
||||
if installer_url.endswith(suffix):
|
||||
@ -281,13 +283,11 @@ class FirefoxUIUpdates(FirefoxUITests):
|
||||
else:
|
||||
self.fatal("Can't figure out symbols_url from installer_url %s!" % installer_url)
|
||||
|
||||
|
||||
@PreScriptAction('run-tests')
|
||||
def _pre_run_tests(self, action):
|
||||
if self.releases is None and not (self.installer_url or self.installer_path):
|
||||
self.fatal('You need to call --determine-testing-configuration as well.')
|
||||
|
||||
|
||||
def _run_test(self, installer_path, symbols_url=None, update_channel=None, cleanup=True,
|
||||
marionette_port=2828):
|
||||
'''
|
||||
@ -297,7 +297,7 @@ class FirefoxUIUpdates(FirefoxUITests):
|
||||
env = self.query_env(avoid_host_env=True)
|
||||
bin_dir = os.path.dirname(self.query_python_path())
|
||||
fx_ui_tests_bin = os.path.join(bin_dir, 'firefox-ui-update')
|
||||
gecko_log=os.path.join(dirs['abs_work_dir'], 'gecko.log')
|
||||
gecko_log = os.path.join(dirs['abs_work_dir'], 'gecko.log')
|
||||
|
||||
# Build the command
|
||||
cmd = [
|
||||
@ -348,7 +348,6 @@ class FirefoxUIUpdates(FirefoxUITests):
|
||||
|
||||
return return_code
|
||||
|
||||
|
||||
def run_tests(self):
|
||||
dirs = self.query_abs_dirs()
|
||||
|
||||
@ -370,6 +369,7 @@ class FirefoxUIUpdates(FirefoxUITests):
|
||||
else:
|
||||
results = {}
|
||||
|
||||
locales_counter = 0
|
||||
for rel_info in sorted(self.releases, key=lambda release: release['build_id']):
|
||||
build_id = rel_info['build_id']
|
||||
results[build_id] = {}
|
||||
@ -380,15 +380,20 @@ class FirefoxUIUpdates(FirefoxUITests):
|
||||
len(rel_info['locales'])
|
||||
))
|
||||
|
||||
if self.config['dry_run']:
|
||||
continue
|
||||
|
||||
# Each locale gets a fresh port to avoid address in use errors in case of
|
||||
# tests that time out unexpectedly.
|
||||
marionette_port = 2827
|
||||
for locale in rel_info['locales']:
|
||||
locales_counter += 1
|
||||
self.info("Running %s %s" % (build_id, locale))
|
||||
|
||||
if locales_counter > self.limit_locales:
|
||||
self.info("We have reached the limit of locales we were intending to run")
|
||||
break
|
||||
|
||||
if self.config['dry_run']:
|
||||
continue
|
||||
|
||||
# Safe temp hack to determine symbols URL from en-US build1 in the candidates dir
|
||||
ftp_candidates_installer_url = self._modify_url(rel_info)
|
||||
symbols_url = self._query_symbols_url(installer_url=ftp_candidates_installer_url)
|
||||
@ -412,7 +417,7 @@ class FirefoxUIUpdates(FirefoxUITests):
|
||||
marionette_port=marionette_port)
|
||||
|
||||
if retcode != 0:
|
||||
self.warning('FAIL: firefox-ui-update has failed.' )
|
||||
self.warning('FAIL: firefox-ui-update has failed.')
|
||||
|
||||
base_cmd = 'python scripts/firefox_ui_updates.py'
|
||||
for c in self.config['config_files']:
|
||||
@ -433,6 +438,11 @@ class FirefoxUIUpdates(FirefoxUITests):
|
||||
|
||||
results[build_id][locale] = retcode
|
||||
|
||||
self.info("Completed %s %s with return code: %s" % (build_id, locale, retcode))
|
||||
|
||||
if locales_counter > self.limit_locales:
|
||||
break
|
||||
|
||||
# Determine which locales have failed and set scripts exit code
|
||||
exit_status = TBPL_SUCCESS
|
||||
for build_id in sorted(results.keys()):
|
||||
|
Loading…
Reference in New Issue
Block a user