diff --git a/misc.py b/misc.py index 26235774..369ef02c 100644 --- a/misc.py +++ b/misc.py @@ -395,6 +395,7 @@ def generateTestBuilder(config, branch_name, platform, name_prefix, branchName=branch_name, remoteExtras=pf.get('remote_extras'), downloadSymbols=pf.get('download_symbols', True), + downloadSymbolsOnDemand=pf.get('download_symbols_ondemand', False), ) builder = { 'name': '%s %s' % (name_prefix, suites_name), @@ -453,9 +454,9 @@ def generateTestBuilder(config, branch_name, platform, name_prefix, thisChunk=i+1, chunkByDir=suites.get('chunkByDir'), env=pf.get('unittest-env', {}), - downloadSymbols=pf.get('download_symbols', True), + downloadSymbols=pf.get('download_symbols', False), + downloadSymbolsOnDemand=pf.get('download_symbols_ondemand', True), resetHwClock=resetHwClock, - stackwalk_cgi=config.get('stackwalk_cgi'), ) builder = { 'name': '%s %s-%i/%i' % (name_prefix, suites_name, i+1, totalChunks), @@ -482,10 +483,10 @@ def generateTestBuilder(config, branch_name, platform, name_prefix, buildToolsRepoPath=config['build_tools_repo_path'], buildSpace=1.0, buildsBeforeReboot=config['platforms'][platform]['builds_before_reboot'], - downloadSymbols=pf.get('download_symbols', True), + downloadSymbols=pf.get('download_symbols', False), + downloadSymbolsOnDemand=pf.get('download_symbols_ondemand', True), env=pf.get('unittest-env', {}), resetHwClock=resetHwClock, - stackwalk_cgi=config.get('stackwalk_cgi'), ) builder = { 'name': '%s %s' % (name_prefix, suites_name), diff --git a/process/factory.py b/process/factory.py index cc598c93..ae58947f 100644 --- a/process/factory.py +++ b/process/factory.py @@ -50,7 +50,7 @@ reload(release.paths) from buildbotcustom.status.errors import purge_error, global_errors, \ - upload_errors + upload_errors, tegra_errors from buildbotcustom.steps.base import ShellCommand, SetProperty, Mercurial, \ Trigger, RetryingShellCommand, RetryingSetProperty from buildbotcustom.steps.misc import TinderboxShellCommand, SendChangeStep, \ @@ -6531,9 +6531,9 @@ def parse_sendchange_files(build, include_substr='', exclude_substrs=[]): class MozillaTestFactory(MozillaBuildFactory): def __init__(self, platform, productName='firefox', - downloadSymbols=True, downloadTests=False, - posixBinarySuffix='-bin', resetHwClock=False, stackwalk_cgi=None, - **kwargs): + downloadSymbols=True, downloadSymbolsOnDemand=True, + downloadTests=False, posixBinarySuffix='-bin', + resetHwClock=False, **kwargs): #Note: the posixBinarySuffix is needed because some products (firefox) #use 'firefox-bin' and some (fennec) use 'fennec' for the name of the #actual application binary. This is only applicable to posix-like @@ -6547,9 +6547,9 @@ def __init__(self, platform, productName='firefox', else: self.posixBinarySuffix = posixBinarySuffix self.downloadSymbols = downloadSymbols + self.downloadSymbolsOnDemand = downloadSymbolsOnDemand self.downloadTests = downloadTests self.resetHwClock = resetHwClock - self.stackwalk_cgi = stackwalk_cgi assert self.platform in getSupportedPlatforms() @@ -6561,7 +6561,7 @@ def __init__(self, platform, productName='firefox', self.addCleanupSteps() self.addPrepareBuildSteps() - if self.downloadSymbols: + if self.downloadSymbols or self.downloadSymbolsOnDemand: self.addPrepareSymbolsSteps() if self.downloadTests: self.addPrepareTestsSteps() @@ -6681,7 +6681,7 @@ def get_symbols_url(build): else: return parse_sendchange_files(build, include_substr='.crashreporter-symbols.') - if not self.stackwalk_cgi: + if self.downloadSymbols: self.addStep(DownloadFile( url_fn=get_symbols_url, filename_property='symbols_filename', @@ -6695,7 +6695,7 @@ def get_symbols_url(build): name='unpack_symbols', workdir='build/symbols' )) - else: + elif self.downloadSymbolsOnDemand: self.addStep(SetBuildProperty( property_name='symbols_url', value=get_symbols_url, @@ -6790,7 +6790,7 @@ class UnittestPackagedBuildFactory(MozillaTestFactory): def __init__(self, platform, test_suites, env, productName='firefox', mochitest_leak_threshold=None, crashtest_leak_threshold=None, totalChunks=None, - thisChunk=None, chunkByDir=None, stackwalk_cgi=None, + thisChunk=None, chunkByDir=None, **kwargs): platform = platform.split('-')[0] self.test_suites = test_suites @@ -6799,10 +6799,7 @@ def __init__(self, platform, test_suites, env, productName='firefox', self.chunkByDir = chunkByDir testEnv = MozillaEnvironments['%s-unittest' % platform].copy() - if stackwalk_cgi and kwargs.get('downloadSymbols'): - testEnv['MINIDUMP_STACKWALK_CGI'] = stackwalk_cgi - else: - testEnv['MINIDUMP_STACKWALK'] = getPlatformMinidumpPath(platform) + testEnv['MINIDUMP_STACKWALK'] = getPlatformMinidumpPath(platform) testEnv['MINIDUMP_SAVE_PATH'] = WithProperties('%(basedir:-)s/minidumps') testEnv.update(env) @@ -6810,7 +6807,7 @@ def __init__(self, platform, test_suites, env, productName='firefox', 'crashtest': crashtest_leak_threshold,} MozillaTestFactory.__init__(self, platform, productName, env=testEnv, - downloadTests=True, stackwalk_cgi=stackwalk_cgi, + downloadTests=True, **kwargs) def addSetupSteps(self): @@ -6825,7 +6822,7 @@ def addRunTestSteps(self): if self.platform.startswith('macosx64'): self.addStep(resolution_step()) # Run them! - if self.stackwalk_cgi and self.downloadSymbols: + if self.downloadSymbolsOnDemand: symbols_path = '%(symbols_url)s' else: symbols_path = 'symbols' @@ -6989,18 +6986,13 @@ def addRunTestSteps(self): class RemoteUnittestFactory(MozillaTestFactory): def __init__(self, platform, suites, hostUtils, productName='fennec', - downloadSymbols=False, downloadTests=True, - posixBinarySuffix='', remoteExtras=None, - branchName=None, stackwalk_cgi=None, **kwargs): + downloadSymbols=False, downloadTests=True, posixBinarySuffix='', + remoteExtras=None, branchName=None, **kwargs): self.suites = suites self.hostUtils = hostUtils - self.stackwalk_cgi = stackwalk_cgi self.env = {} - if stackwalk_cgi and kwargs.get('downloadSymbols'): - self.env['MINIDUMP_STACKWALK_CGI'] = stackwalk_cgi - else: - self.env['MINIDUMP_STACKWALK'] = getPlatformMinidumpPath(platform) + self.env['MINIDUMP_STACKWALK'] = getPlatformMinidumpPath(platform) self.env['MINIDUMP_SAVE_PATH'] = WithProperties('%(basedir:-)s/minidumps') if remoteExtras is not None: @@ -7021,7 +7013,6 @@ def __init__(self, platform, suites, hostUtils, productName='fennec', downloadSymbols=downloadSymbols, downloadTests=downloadTests, posixBinarySuffix=posixBinarySuffix, - stackwalk_cgi=stackwalk_cgi, **kwargs) def addCleanupSteps(self): @@ -7063,6 +7054,7 @@ def addSetupSteps(self): command=['python', '/builds/sut_tools/cleanup.py', WithProperties("%(sut_ip)s"), ], + log_eval_func=lambda c,s: regex_log_evaluator(c, s, tegra_errors), haltOnFailure=True) ) self.addStep(ShellCommand( @@ -7129,7 +7121,7 @@ def get_robocop_url(build): )) def addRunTestSteps(self): - if self.stackwalk_cgi and self.downloadSymbols: + if self.downloadSymbolsOnDemand: symbols_path = '%(symbols_url)s' else: symbols_path = 'symbols' diff --git a/process/release.py b/process/release.py index f7647b37..78bb6ea4 100644 --- a/process/release.py +++ b/process/release.py @@ -1097,7 +1097,10 @@ def majorUpdateVerifyBuilders(platform): schedulerNames.append(builderPrefix('ready-for-rel-test')) trigger_uptake_factory.addStep(Trigger( schedulerNames=schedulerNames, - copy_properties=['script_repo_revision', 'release_config'] + set_properties={ + 'release_config': releaseConfigFile, + 'script_repo_revision': releaseTag, + }, )) builders.append({ 'name': builderPrefix('start_uptake_monitoring'), diff --git a/status/errors.py b/status/errors.py index 78a6f9d1..9d3e9235 100644 --- a/status/errors.py +++ b/status/errors.py @@ -25,3 +25,8 @@ (re.compile("Connection refused"), RETRY), (re.compile("Connection reset by peer"), RETRY), ) + +tegra_errors = ((re.compile("process killed by signal"), RETRY), + (re.compile("Remote Device Error"), RETRY), + (re.compile("devicemanager.DMError"), RETRY), + )