From 86090428b98878afa6ca0ded7a1faa0ee7976f48 Mon Sep 17 00:00:00 2001 From: "bhearsum%mozilla.com" Date: Thu, 18 Oct 2007 16:40:14 +0000 Subject: [PATCH] bug 393338: talos tinderbox needs to munge build start times to match code tested. r=robcee, patch=me git-svn-id: svn://10.0.0.236/trunk@237863 18797224-902f-48f8-a5cc-f745e15eee43 --- .../testing/talos/perfmaster/master.cfg | 15 +++-------- .../testing/talos/perfmaster/perfrunner.py | 23 ---------------- .../buildbot/buildbot/status/tinderbox.py | 27 ++++++++++++++----- 3 files changed, 24 insertions(+), 41 deletions(-) diff --git a/mozilla/tools/buildbot-configs/testing/talos/perfmaster/master.cfg b/mozilla/tools/buildbot-configs/testing/talos/perfmaster/master.cfg index 212319b3fcd..3b91eb6d5de 100644 --- a/mozilla/tools/buildbot-configs/testing/talos/perfmaster/master.cfg +++ b/mozilla/tools/buildbot-configs/testing/talos/perfmaster/master.cfg @@ -107,6 +107,7 @@ c['status'].append(TinderboxMailNotifier( extraRecipients=["tinderbox-daemon@tinderbox.mozilla.org",], relayhost="smtp.mozilla.org", builders=["WINNT 5.1 talos trunk"], + useChangeTime=True, logCompression="bzip2")) # this is the local TinderboxMailNotifier @@ -116,6 +117,7 @@ c['status'].append(TinderboxMailNotifier( extraRecipients=["tinderbox-daemon@tinderbox.mozilla.org",], relayhost="smtp.mozilla.org", builders=["WINNT 5.1 talos branch"], + useChangeTime=True, logCompression="bzip2")) # this is the system installed TinderboxMailNotifier @@ -137,6 +139,7 @@ c['status'].append(tinderbox.TinderboxMailNotifier( "MacOSX Darwin 8.8.1 talos qm-pmac02 branch", "MacOSX Darwin 8.8.1 talos qm-pmac03 trunk", "MacOSX Darwin 8.8.1 talos qm-pmac04 branch"], + useChangeTime=True, logCompression="bzip2")) @@ -345,7 +348,6 @@ firefox_trunk_winxp_perf_steps.addStep(ShellCommand, win32_trunk_mini_steps = factory.BuildFactory() -win32_trunk_mini_steps.addStep(MozillaChangePusher) win32_trunk_mini_steps.addStep(ShellCommand, workdir=".", description="Cleanup", @@ -406,7 +408,6 @@ win32_trunk_mini_steps.addStep(MozillaRunPerfTests, env=MozillaEnvironments['vc8perf']) linux_trunk_steps = factory.BuildFactory() -linux_trunk_steps.addStep(MozillaChangePusher) linux_trunk_steps.addStep(ShellCommand, workdir=".", description="Cleanup", @@ -463,7 +464,6 @@ linux_trunk_steps.addStep(MozillaRunPerfTests, env=MozillaEnvironments['linux']) linux_branch_steps = factory.BuildFactory() -linux_branch_steps.addStep(MozillaChangePusher) linux_branch_steps.addStep(ShellCommand, workdir=".", description="Cleanup", @@ -518,7 +518,6 @@ linux_branch_steps.addStep(MozillaRunPerfTests, env=MozillaEnvironments['linux']) linux_trunk_js_steps = factory.BuildFactory() -linux_trunk_js_steps.addStep(MozillaChangePusher) linux_trunk_js_steps.addStep(ShellCommand, workdir=".", description="Cleanup", @@ -575,7 +574,6 @@ linux_trunk_js_steps.addStep(MozillaRunPerfTests, env=MozillaEnvironments['linux']) linux_branch_js_steps = factory.BuildFactory() -linux_branch_js_steps.addStep(MozillaChangePusher) linux_branch_js_steps.addStep(ShellCommand, workdir=".", description="Cleanup", @@ -630,7 +628,6 @@ linux_branch_js_steps.addStep(MozillaRunPerfTests, env=MozillaEnvironments['linux']) win32_branch_steps = factory.BuildFactory() -win32_branch_steps.addStep(MozillaChangePusher) win32_branch_steps.addStep(ShellCommand, workdir=".", description="Cleanup", @@ -691,7 +688,6 @@ win32_branch_steps.addStep(MozillaRunPerfTests, env=MozillaEnvironments['vc8perf']) win32_trunk_steps = factory.BuildFactory() -win32_trunk_steps.addStep(MozillaChangePusher) win32_trunk_steps.addStep(ShellCommand, workdir=".", description="Cleanup", @@ -753,7 +749,6 @@ win32_trunk_steps.addStep(MozillaRunPerfTests, env=MozillaEnvironments['vc8perf']) win32_branch_new_pageloader_steps = factory.BuildFactory() -win32_branch_new_pageloader_steps.addStep(MozillaChangePusher) win32_branch_new_pageloader_steps.addStep(ShellCommand, workdir=".", description="Cleanup", @@ -810,7 +805,6 @@ win32_branch_new_pageloader_steps.addStep(MozillaRunPerfTests, env=MozillaEnvironments['vc8perf']) mac_trunk_steps = factory.BuildFactory() -mac_trunk_steps.addStep(MozillaChangePusher) mac_trunk_steps.addStep(ShellCommand, workdir=".", description="Cleanup", @@ -869,7 +863,6 @@ mac_trunk_steps.addStep(MozillaRunPerfTests, env=MozillaEnvironments['mac']) mac_branch_steps = factory.BuildFactory() -mac_branch_steps.addStep(MozillaChangePusher) mac_branch_steps.addStep(ShellCommand, workdir=".", description="Cleanup", @@ -928,7 +921,6 @@ mac_branch_steps.addStep(MozillaRunPerfTests, env=MozillaEnvironments['mac']) mac_trunk_pageloader_steps = factory.BuildFactory() -mac_trunk_pageloader_steps.addStep(MozillaChangePusher) mac_trunk_pageloader_steps.addStep(ShellCommand, workdir=".", description="Cleanup", @@ -987,7 +979,6 @@ mac_trunk_pageloader_steps.addStep(MozillaRunPerfTests, env=MozillaEnvironments['mac']) mac_branch_pageloader_steps = factory.BuildFactory() -mac_branch_pageloader_steps.addStep(MozillaChangePusher) mac_branch_pageloader_steps.addStep(ShellCommand, workdir=".", description="Cleanup", diff --git a/mozilla/tools/buildbot-configs/testing/talos/perfmaster/perfrunner.py b/mozilla/tools/buildbot-configs/testing/talos/perfmaster/perfrunner.py index c91ba54be33..52be5133fb7 100644 --- a/mozilla/tools/buildbot-configs/testing/talos/perfmaster/perfrunner.py +++ b/mozilla/tools/buildbot-configs/testing/talos/perfmaster/perfrunner.py @@ -464,29 +464,6 @@ class MozillaInstallDmg(ShellCommand): return SUCCESS -from buildbot.process.buildstep import BuildStep - -class MozillaChangePusher(BuildStep): - warnOnFailure = True - name = "resubmit extra changes" - - def start(self): - changes = self.step_status.build.getChanges() - if len(changes) > 1: - builderName = self.step_status.build.builder.name - remainingChanges = changes[1:] # everything but the first - # get rid of the rest of the changes in the Build and BuildStatus - changes = changes[:1] # only the first one - self.step_status.build.changes = changes - bs = BuildSet([builderName], SourceStamp(changes=remainingChanges)) - # submit the buildset back to the BuildMaster - self.build.builder.botmaster.parent.submitBuildSet(bs) - self.finished(SUCCESS) - return - - self.finished(SKIPPED) - return SKIPPED - def main(argv=None): if argv is None: argv = sys.argv diff --git a/mozilla/tools/buildbot/buildbot/status/tinderbox.py b/mozilla/tools/buildbot/buildbot/status/tinderbox.py index 1ec8a83c74c..a77dd892151 100644 --- a/mozilla/tools/buildbot/buildbot/status/tinderbox.py +++ b/mozilla/tools/buildbot/buildbot/status/tinderbox.py @@ -38,12 +38,14 @@ class TinderboxMailNotifier(mail.MailNotifier): compare_attrs = ["extraRecipients", "fromaddr", "categories", "builders", "addLogs", "relayhost", "subject", "binaryURL", "tree", - "logCompression", "errorparser", "columnName"] + "logCompression", "errorparser", "columnName", + "useChangeTime"] def __init__(self, fromaddr, tree, extraRecipients, categories=None, builders=None, relayhost="localhost", subject="buildbot %(result)s in %(builder)s", binaryURL="", - logCompression="", errorparser="unix", columnName=None): + logCompression="", errorparser="unix", columnName=None, + useChangeTime=False): """ @type fromaddr: string @param fromaddr: the email address to be used in the 'From' header. @@ -100,6 +102,10 @@ class TinderboxMailNotifier(mail.MailNotifier): about (not recommended). When columnName is a WithProperties instance it will be interpolated as such. See WithProperties for more detail. + @type useChangeTime: bool + @param useChangeTime: When True, the time of the first Change for a + build is used as the builddate. When False, + the current time is used as the builddate. """ mail.MailNotifier.__init__(self, fromaddr, categories=categories, @@ -111,6 +117,7 @@ class TinderboxMailNotifier(mail.MailNotifier): self.tree = tree self.binaryURL = binaryURL self.logCompression = logCompression + self.useChangeTime = useChangeTime assert columnName is None or type(columnName) is str \ or isinstance(columnName, WithProperties), \ "columnName must be None, a string, or a WithProperties instance" @@ -134,7 +141,15 @@ class TinderboxMailNotifier(mail.MailNotifier): text += "%s tree: %s\n" % (t, self.tree) # the start time # getTimes() returns a fractioned time that tinderbox doesn't understand - text += "%s builddate: %s\n" % (t, int(build.getTimes()[0])) + builddate = int(build.getTimes()[0]) + # attempt to pull a Change time from this Build's Changes. + # if that doesn't work, fall back on the current time + if self.useChangeTime: + try: + builddate = build.getChanges()[-1].when + except: + pass + text += "%s builddate: %s\n" % (t, builddate) text += "%s status: " % t if results == "building": @@ -154,13 +169,13 @@ class TinderboxMailNotifier(mail.MailNotifier): if self.columnName is None: # use the builder name - text = "%s build: %s\n" % (t, name) + text += "%s build: %s\n" % (t, name) elif type(self.columnName) is str: # use the exact string given - text = "%s build: %s\n" % (t, self.columnName) + text += "%s build: %s\n" % (t, self.columnName) elif isinstance(self.columnName, WithProperties): # interpolate the WithProperties instance, use that - text = "%s build: %s\n" % (t, self.columnName.render(build)) + text += "%s build: %s\n" % (t, self.columnName.render(build)) else: raise Exception("columnName is an unhandled value") text += "%s errorparser: %s\n" % (t, self.errorparser)