Changeset 267022 in webkit


Ignore:
Timestamp:
Sep 14, 2020 10:47:34 AM (4 years ago)
Author:
aakash_jain@apple.com
Message:

[EWS] Layout testers can go in an infinite RETRY loop when there are 30+ failures on trunk
https://bugs.webkit.org/show_bug.cgi?id=203698
<rdar://problem/66157544>

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-build/steps.py:

(ConfigureBuild.init): Added triggerred_by key.
(ConfigureBuild.start): Set triggers property only if it is not already set (by the build who triggerred this build).
(Trigger.init): Added include_revision parameter, it would be False while triggerring builder, so that builder
can use ToT instead of the specific revision.
Also added triggers, so that when the tester trigger the builder, it can explicitly specify only to trigger it back and
nothing else.
(Trigger.propertiesToPassToTriggers): Pass ews_revision and triggers properties to triggered builds appropriately.
(AnalyzeLayoutTestsResults.retry_build): Trigger the parent build if triggered_by is specified.

  • BuildSlaveSupport/ews-build/config.json: Added triggered_by key.
  • BuildSlaveSupport/ews-build/factories.py: Updated to handle triggered_by key.
  • BuildSlaveSupport/ews-build/loadConfig.py: Ditto.
  • BuildSlaveSupport/ews-build/loadConfig_unittest.py:
  • BuildSlaveSupport/ews-build/factories_unittest.py:
  • BuildSlaveSupport/ews-app/ews/views/statusbubble.py:

(StatusBubble._build_bubble): If the build is retried, ensure that the status-bubble is orange.
(StatusBubble._most_recent_failure_message): Display the retry message from analyze-layout-tests-results step in the status-bubble.

Location:
trunk/Tools
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/Tools/BuildSlaveSupport/ews-app/ews/views/statusbubble.py

    r266956 r267022  
    7373    BUILDER_ICON = u'\U0001f6e0'
    7474    TESTER_ICON = u'\U0001f52c'
     75    BUILD_RETRY_MSG = 'retrying build'
    7576
    7677    def _build_bubble(self, patch, queue, hide_icons=False):
     
    152153            bubble['state'] = 'fail'
    153154            bubble['details_message'] = self._most_recent_failure_message(build)
     155            if StatusBubble.BUILD_RETRY_MSG in bubble['details_message']:
     156                bubble['state'] = 'provisional-fail'
    154157        elif build.result == Buildbot.SKIPPED:
    155158            bubble['state'] = 'none'
     
    240243    def _most_recent_failure_message(self, build):
    241244        for step in build.step_set.all().order_by('-uid'):
     245            if step.result == Buildbot.SUCCESS and StatusBubble.BUILD_RETRY_MSG in step.state_string:
     246                return step.state_string
    242247            if step.result == Buildbot.FAILURE:
    243248                return step.state_string
  • trunk/Tools/BuildSlaveSupport/ews-build/config.json

    r266956 r267022  
    397397      "configuration": "release",
    398398      "architectures": ["x86_64"],
     399      "triggered_by": ["ios-13-sim-build-ews"],
    399400      "workernames": ["ews121", "ews122", "ews123", "ews124", "ews125", "ews126"]
    400401    },
     
    428429      "configuration": "release",
    429430      "architectures": ["x86_64"],
     431      "triggered_by": ["macos-mojave-release-build-ews"],
    430432      "workernames": ["ews100", "ews101", "ews102", "ews103"]
    431433    },
     
    438440      "configuration": "release",
    439441      "architectures": ["x86_64"],
     442      "triggered_by": ["macos-mojave-release-build-ews"],
    440443      "workernames": ["ews104", "ews105", "ews106", "ews107"]
    441444    },
     
    459462      "configuration": "debug",
    460463      "architectures": ["x86_64"],
     464      "triggered_by": ["macos-mojave-debug-build-ews"],
    461465      "workernames": ["ews112", "ews113", "ews115", "ews117"]
    462466    },
     
    627631      "factory": "APITestsFactory",
    628632      "platform": "*",
     633      "triggered_by": ["ios-13-sim-build-ews"],
    629634      "workernames": ["ews156", "ews157", "ews158", "ews159"]
    630635    },
     
    635640      "factory": "APITestsFactory",
    636641      "platform": "*",
     642      "triggered_by": ["macos-mojave-release-build-ews"],
    637643      "workernames": ["ews119", "ews150", "ews153", "ews155"]
    638644    },
     
    686692    {
    687693      "type": "Triggerable",
     694      "name": "macos-mojave-debug-build-ews",
     695      "builderNames": [
     696        "macOS-Mojave-Debug-Build-EWS"
     697      ]
     698    },
     699    {
     700      "type": "Triggerable",
    688701      "name": "macos-mojave-debug-wk1-tests-ews",
    689702      "builderNames": [
     
    693706    {
    694707      "type": "Triggerable",
     708      "name": "macos-mojave-release-build-ews",
     709      "builderNames": [
     710        "macOS-Mojave-Release-Build-EWS"
     711      ]
     712    },
     713    {
     714      "type": "Triggerable",
    695715      "name": "macos-mojave-release-wk1-tests-ews",
    696716      "builderNames": [
     
    703723      "builderNames": [
    704724        "macOS-Mojave-Release-WK2-Tests-EWS"
     725      ]
     726    },
     727    {
     728      "type": "Triggerable",
     729      "name": "ios-13-sim-build-ews",
     730      "builderNames": [
     731        "iOS-13-Simulator-Build-EWS"
    705732      ]
    706733    },
  • trunk/Tools/BuildSlaveSupport/ews-build/factories.py

    r265958 r267022  
    3636
    3737class Factory(factory.BuildFactory):
    38     def __init__(self, platform, configuration=None, architectures=None, buildOnly=True, triggers=None, remotes=None, additionalArguments=None, checkRelevance=False, **kwargs):
    39         factory.BuildFactory.__init__(self)
    40         self.addStep(ConfigureBuild(platform=platform, configuration=configuration, architectures=architectures, buildOnly=buildOnly, triggers=triggers, remotes=remotes, additionalArguments=additionalArguments))
     38    def __init__(self, platform, configuration=None, architectures=None, buildOnly=True, triggers=None, triggered_by=None, remotes=None, additionalArguments=None, checkRelevance=False, **kwargs):
     39        factory.BuildFactory.__init__(self)
     40        self.addStep(ConfigureBuild(platform=platform, configuration=configuration, architectures=architectures, buildOnly=buildOnly, triggers=triggers, triggered_by=triggered_by, remotes=remotes, additionalArguments=additionalArguments))
    4141        if checkRelevance:
    4242            self.addStep(CheckPatchRelevance())
     
    115115        self.addStep(ExtractBuiltProduct())
    116116
    117     def __init__(self, platform, configuration=None, architectures=None, additionalArguments=None, checkRelevance=False, **kwargs):
    118         Factory.__init__(self, platform=platform, configuration=configuration, architectures=architectures, buildOnly=False, additionalArguments=additionalArguments, checkRelevance=checkRelevance)
     117    def __init__(self, platform, configuration=None, architectures=None, triggered_by=None, additionalArguments=None, checkRelevance=False, **kwargs):
     118        Factory.__init__(self, platform=platform, configuration=configuration, architectures=architectures, buildOnly=False, triggered_by=triggered_by, additionalArguments=additionalArguments, checkRelevance=checkRelevance)
    119119        if platform == 'gtk':
    120120            self.addStep(InstallGtkDependencies())
  • trunk/Tools/BuildSlaveSupport/ews-build/factories_unittest.py

    r265958 r267022  
    5151        factory = factories.Factory(platform='ios-simulator-13', configuration='release', architectures='arm64')
    5252        self.assertBuildSteps(factory.steps, [
    53             _BuildStepFactory(steps.ConfigureBuild, platform='ios-simulator-13', configuration='release', architectures='arm64', buildOnly=True, triggers=None, remotes=None, additionalArguments=None),
     53            _BuildStepFactory(steps.ConfigureBuild, platform='ios-simulator-13', configuration='release', architectures='arm64',
     54                              buildOnly=True, triggers=None, triggered_by=None, remotes=None, additionalArguments=None),
    5455            _BuildStepFactory(steps.ValidatePatch),
    5556            _BuildStepFactory(steps.PrintConfiguration),
     
    6263        factory = factories.Factory(platform='ios-simulator-13', configuration='release', architectures='arm64', checkRelevance=True)
    6364        self.assertBuildSteps(factory.steps, [
    64             _BuildStepFactory(steps.ConfigureBuild, platform='ios-simulator-13', configuration='release', architectures='arm64', buildOnly=True, triggers=None, remotes=None, additionalArguments=None),
     65            _BuildStepFactory(steps.ConfigureBuild, platform='ios-simulator-13', configuration='release', architectures='arm64',
     66                              buildOnly=True, triggers=None, triggered_by=None, remotes=None, additionalArguments=None),
    6567            _BuildStepFactory(steps.CheckPatchRelevance),
    6668            _BuildStepFactory(steps.ValidatePatch),
     
    7981        factory = factories.StyleFactory(platform='*', configuration=None, architectures=None)
    8082        self.assertBuildSteps(factory.steps, [
    81             _BuildStepFactory(steps.ConfigureBuild, platform='*', configuration=None, architectures=None, buildOnly=False, triggers=None, remotes=None, additionalArguments=None),
     83            _BuildStepFactory(steps.ConfigureBuild, platform='*', configuration=None, architectures=None,
     84                              buildOnly=False, triggers=None, remotes=None, additionalArguments=None),
    8285            _BuildStepFactory(steps.ValidatePatch),
    8386            _BuildStepFactory(steps.PrintConfiguration),
     
    9194        factory = factories.WatchListFactory(platform='*', configuration=None, architectures=None)
    9295        self.assertBuildSteps(factory.steps, [
    93             _BuildStepFactory(steps.ConfigureBuild, platform='*', configuration=None, architectures=None, buildOnly=False, triggers=None, remotes=None, additionalArguments=None),
     96            _BuildStepFactory(steps.ConfigureBuild, platform='*', configuration=None, architectures=None,
     97                              buildOnly=False, triggers=None, remotes=None, additionalArguments=None),
    9498            _BuildStepFactory(steps.ValidatePatch),
    9599            _BuildStepFactory(steps.PrintConfiguration),
     
    103107        factory = factories.BindingsFactory(platform='*', configuration=None, architectures=None)
    104108        self.assertBuildSteps(factory.steps, [
    105             _BuildStepFactory(steps.ConfigureBuild, platform='*', configuration=None, architectures=None, buildOnly=False, triggers=None, remotes=None, additionalArguments=None),
     109            _BuildStepFactory(steps.ConfigureBuild, platform='*', configuration=None, architectures=None,
     110                              buildOnly=False, triggers=None, triggered_by=None, remotes=None, additionalArguments=None),
    106111            _BuildStepFactory(steps.CheckPatchRelevance),
    107112            _BuildStepFactory(steps.ValidatePatch),
     
    116121        factory = factories.WebKitPerlFactory(platform='*', configuration=None, architectures=None)
    117122        self.assertBuildSteps(factory.steps, [
    118             _BuildStepFactory(steps.ConfigureBuild, platform='*', configuration=None, architectures=None, buildOnly=False, triggers=None, remotes=None, additionalArguments=None),
     123            _BuildStepFactory(steps.ConfigureBuild, platform='*', configuration=None, architectures=None,
     124                              buildOnly=False, triggers=None, triggered_by=None, remotes=None, additionalArguments=None),
    119125            _BuildStepFactory(steps.ValidatePatch),
    120126            _BuildStepFactory(steps.PrintConfiguration),
     
    128134        factory = factories.WebKitPyFactory(platform='*', configuration=None, architectures=None)
    129135        self.assertBuildSteps(factory.steps, [
    130             _BuildStepFactory(steps.ConfigureBuild, platform='*', configuration=None, architectures=None, buildOnly=False, triggers=None, remotes=None, additionalArguments=None),
     136            _BuildStepFactory(steps.ConfigureBuild, platform='*', configuration=None, architectures=None,
     137                              buildOnly=False, triggers=None, triggered_by=None, remotes=None, additionalArguments=None),
    131138            _BuildStepFactory(steps.CheckPatchRelevance),
    132139            _BuildStepFactory(steps.ValidatePatch),
     
    143150        factory = factories.ServicesFactory(platform='*', configuration=None, architectures=None)
    144151        self.assertBuildSteps(factory.steps, [
    145             _BuildStepFactory(steps.ConfigureBuild, platform='*', configuration=None, architectures=None, buildOnly=False, triggers=None, remotes=None, additionalArguments=None),
     152            _BuildStepFactory(steps.ConfigureBuild, platform='*', configuration=None, architectures=None,
     153                              buildOnly=False, triggers=None, triggered_by=None, remotes=None, additionalArguments=None),
    146154            _BuildStepFactory(steps.CheckPatchRelevance),
    147155            _BuildStepFactory(steps.ValidatePatch),
     
    161169        factory = factories.BuildFactory(platform='mac-mojave', configuration='release', architectures=["x86_64"])
    162170        self.assertBuildSteps(factory.steps, [
    163             _BuildStepFactory(steps.ConfigureBuild, platform='mac-mojave', configuration='release', architectures=["x86_64"], buildOnly=False, triggers=None, remotes=None, additionalArguments=None),
     171            _BuildStepFactory(steps.ConfigureBuild, platform='mac-mojave', configuration='release', architectures=["x86_64"],
     172                              buildOnly=False, triggers=None, triggered_by=None, remotes=None, additionalArguments=None),
    164173            _BuildStepFactory(steps.ValidatePatch),
    165174            _BuildStepFactory(steps.PrintConfiguration),
     
    174183        factory = factories.macOSBuildFactory(platform='mac-mojave', configuration='release', architectures=["x86_64"])
    175184        self.assertBuildSteps(factory.steps, [
    176             _BuildStepFactory(steps.ConfigureBuild, platform='mac-mojave', configuration='release', architectures=["x86_64"], buildOnly=False, triggers=None, remotes=None, additionalArguments=None),
     185            _BuildStepFactory(steps.ConfigureBuild, platform='mac-mojave', configuration='release', architectures=["x86_64"],
     186                              buildOnly=False, triggers=None, triggered_by=None, remotes=None, additionalArguments=None),
    177187            _BuildStepFactory(steps.ValidatePatch),
    178188            _BuildStepFactory(steps.PrintConfiguration),
     
    187197        factory = factories.macOSBuildOnlyFactory(platform='mac-bigsur', configuration='release', architectures=["arm64"])
    188198        self.assertBuildSteps(factory.steps, [
    189             _BuildStepFactory(steps.ConfigureBuild, platform='mac-bigsur', configuration='release', architectures=["arm64"], buildOnly=False, triggers=None, remotes=None, additionalArguments=None),
     199            _BuildStepFactory(steps.ConfigureBuild, platform='mac-bigsur', configuration='release', architectures=["arm64"],
     200                              buildOnly=False, triggers=None, triggered_by=None, remotes=None, additionalArguments=None),
    190201            _BuildStepFactory(steps.CheckPatchRelevance),
    191202            _BuildStepFactory(steps.ValidatePatch),
     
    201212        factory = factories.iOSBuildFactory(platform='ios-simulator-13', configuration='release', architectures=["x86_64"])
    202213        self.assertBuildSteps(factory.steps, [
    203             _BuildStepFactory(steps.ConfigureBuild, platform='ios-simulator-13', configuration='release', architectures=["x86_64"], buildOnly=False, triggers=None, remotes=None, additionalArguments=None),
     214            _BuildStepFactory(steps.ConfigureBuild, platform='ios-simulator-13', configuration='release', architectures=["x86_64"],
     215                              buildOnly=False, triggers=None, triggered_by=None, remotes=None, additionalArguments=None),
    204216            _BuildStepFactory(steps.ValidatePatch),
    205217            _BuildStepFactory(steps.PrintConfiguration),
     
    214226        factory = factories.iOSEmbeddedBuildFactory(platform='ios-13', configuration='release', architectures=["arm64"])
    215227        self.assertBuildSteps(factory.steps, [
    216             _BuildStepFactory(steps.ConfigureBuild, platform='ios-13', configuration='release', architectures=["arm64"], buildOnly=False, triggers=None, remotes=None, additionalArguments=None),
     228            _BuildStepFactory(steps.ConfigureBuild, platform='ios-13', configuration='release', architectures=["arm64"],
     229                              buildOnly=False, triggers=None, triggered_by=None, remotes=None, additionalArguments=None),
    217230            _BuildStepFactory(steps.ValidatePatch),
    218231            _BuildStepFactory(steps.PrintConfiguration),
     
    227240        factory = factories.watchOSBuildFactory(platform='watchos-6', configuration='release', architectures=["arm64_32"])
    228241        self.assertBuildSteps(factory.steps, [
    229             _BuildStepFactory(steps.ConfigureBuild, platform='watchos-6', configuration='release', architectures=["arm64_32"], buildOnly=False, triggers=None, remotes=None, additionalArguments=None),
     242            _BuildStepFactory(steps.ConfigureBuild, platform='watchos-6', configuration='release', architectures=["arm64_32"],
     243                              buildOnly=False, triggers=None, triggered_by=None, remotes=None, additionalArguments=None),
    230244            _BuildStepFactory(steps.ValidatePatch),
    231245            _BuildStepFactory(steps.PrintConfiguration),
     
    240254        factory = factories.tvOSBuildFactory(platform='tvos-13', configuration='release', architectures=["arm64"])
    241255        self.assertBuildSteps(factory.steps, [
    242             _BuildStepFactory(steps.ConfigureBuild, platform='tvos-13', configuration='release', architectures=["arm64"], buildOnly=False, triggers=None, remotes=None, additionalArguments=None),
     256            _BuildStepFactory(steps.ConfigureBuild, platform='tvos-13', configuration='release', architectures=["arm64"],
     257                              buildOnly=False, triggers=None, triggered_by=None, remotes=None, additionalArguments=None),
    243258            _BuildStepFactory(steps.ValidatePatch),
    244259            _BuildStepFactory(steps.PrintConfiguration),
     
    253268        factory = factories.GTKBuildFactory(platform='gtk', configuration='release', architectures=['x86_64'])
    254269        self.assertBuildSteps(factory.steps, [
    255             _BuildStepFactory(steps.ConfigureBuild, platform='gtk', configuration='release', architectures=['x86_64'], buildOnly=False, triggers=None, remotes=None, additionalArguments=None),
     270            _BuildStepFactory(steps.ConfigureBuild, platform='gtk', configuration='release', architectures=['x86_64'],
     271                              buildOnly=False, triggers=None, triggered_by=None, remotes=None, additionalArguments=None),
    256272            _BuildStepFactory(steps.ValidatePatch),
    257273            _BuildStepFactory(steps.PrintConfiguration),
     
    267283        factory = factories.WPEFactory(platform='wpe', configuration='release', architectures=['x86_64'])
    268284        self.assertBuildSteps(factory.steps, [
    269             _BuildStepFactory(steps.ConfigureBuild, platform='wpe', configuration='release', architectures=['x86_64'], buildOnly=True, triggers=None, remotes=None, additionalArguments=None),
     285            _BuildStepFactory(steps.ConfigureBuild, platform='wpe', configuration='release', architectures=['x86_64'],
     286                              buildOnly=True, triggers=None, triggered_by=None, remotes=None, additionalArguments=None),
    270287            _BuildStepFactory(steps.ValidatePatch),
    271288            _BuildStepFactory(steps.PrintConfiguration),
     
    281298        factory = factories.WinCairoFactory(platform='wincairo', configuration='release', architectures=['x86_64'])
    282299        self.assertBuildSteps(factory.steps, [
    283             _BuildStepFactory(steps.ConfigureBuild, platform='wincairo', configuration='release', architectures=['x86_64'], buildOnly=True, triggers=None, remotes=None, additionalArguments=None),
     300            _BuildStepFactory(steps.ConfigureBuild, platform='wincairo', configuration='release', architectures=['x86_64'],
     301                              buildOnly=True, triggers=None, triggered_by=None, remotes=None, additionalArguments=None),
    284302            _BuildStepFactory(steps.ValidatePatch),
    285303            _BuildStepFactory(steps.PrintConfiguration),
     
    294312        factory = factories.JSCBuildFactory(platform='jsc', configuration='release', architectures=["mipsel"])
    295313        self.assertBuildSteps(factory.steps, [
    296             _BuildStepFactory(steps.ConfigureBuild, platform='jsc', configuration='release', architectures=["mipsel"], buildOnly=False, triggers=None, remotes=None, additionalArguments=None),
     314            _BuildStepFactory(steps.ConfigureBuild, platform='jsc', configuration='release', architectures=["mipsel"],
     315                              buildOnly=False, triggers=None, triggered_by=None, remotes=None, additionalArguments=None),
    297316            _BuildStepFactory(steps.CheckPatchRelevance),
    298317            _BuildStepFactory(steps.ValidatePatch),
     
    308327        factory = factories.JSCBuildFactory(platform='jsc', configuration='release', architectures=["armv7"])
    309328        self.assertBuildSteps(factory.steps, [
    310             _BuildStepFactory(steps.ConfigureBuild, platform='jsc', configuration='release', architectures=["armv7"], buildOnly=False, triggers=None, remotes=None, additionalArguments=None),
     329            _BuildStepFactory(steps.ConfigureBuild, platform='jsc', configuration='release', architectures=["armv7"],
     330                              buildOnly=False, triggers=None, triggered_by=None, remotes=None, additionalArguments=None),
    311331            _BuildStepFactory(steps.CheckPatchRelevance),
    312332            _BuildStepFactory(steps.ValidatePatch),
     
    324344        factory = factories.WindowsFactory(platform='win', configuration='release', architectures=["x86_64"])
    325345        self.assertBuildSteps(factory.steps, [
    326             _BuildStepFactory(steps.ConfigureBuild, platform='win', configuration='release', architectures=["x86_64"], buildOnly=False, triggers=None, remotes=None, additionalArguments=None),
     346            _BuildStepFactory(steps.ConfigureBuild, platform='win', configuration='release', architectures=["x86_64"],
     347                              buildOnly=False, triggers=None, triggered_by=None, remotes=None, additionalArguments=None),
    327348            _BuildStepFactory(steps.CheckPatchRelevance),
    328349            _BuildStepFactory(steps.ValidatePatch),
     
    343364        factory = factories.CommitQueueFactory(platform='mac-mojave', configuration='release', architectures=["x86_64"])
    344365        self.assertBuildSteps(factory.steps, [
    345             _BuildStepFactory(steps.ConfigureBuild, platform='mac-mojave', configuration='release', architectures=["x86_64"], buildOnly=False, triggers=None, remotes=None, additionalArguments=None),
     366            _BuildStepFactory(steps.ConfigureBuild, platform='mac-mojave', configuration='release', architectures=["x86_64"],
     367                              buildOnly=False, triggers=None, remotes=None, additionalArguments=None),
    346368            _BuildStepFactory(steps.ValidatePatch, verifycqplus=True),
    347369            _BuildStepFactory(steps.ValidateCommiterAndReviewer),
     
    372394        factory = factories.macOSWK1Factory(platform='mac-mojave', configuration='release', architectures=["x86_64"])
    373395        self.assertBuildSteps(factory.steps, [
    374             _BuildStepFactory(steps.ConfigureBuild, platform='mac-mojave', configuration='release', architectures=["x86_64"], buildOnly=False, triggers=None, remotes=None, additionalArguments=None),
     396            _BuildStepFactory(steps.ConfigureBuild, platform='mac-mojave', configuration='release', architectures=["x86_64"],
     397                              buildOnly=False, triggers=None, triggered_by=None, remotes=None, additionalArguments=None),
    375398            _BuildStepFactory(steps.CheckPatchRelevance),
    376399            _BuildStepFactory(steps.ValidatePatch),
     
    391414        factory = factories.macOSWK1Factory(platform='mac-mojave', configuration='debug', architectures=["x86_64"])
    392415        self.assertBuildSteps(factory.steps, [
    393             _BuildStepFactory(steps.ConfigureBuild, platform='mac-mojave', configuration='debug', architectures=["x86_64"], buildOnly=False, triggers=None, remotes=None, additionalArguments=None),
     416            _BuildStepFactory(steps.ConfigureBuild, platform='mac-mojave', configuration='debug', architectures=["x86_64"],
     417                              buildOnly=False, triggers=None, triggered_by=None, remotes=None, additionalArguments=None),
    394418            _BuildStepFactory(steps.CheckPatchRelevance),
    395419            _BuildStepFactory(steps.ValidatePatch),
     
    410434        factory = factories.macOSWK2Factory(platform='mac-mojave', configuration='release', architectures=["x86_64"])
    411435        self.assertBuildSteps(factory.steps, [
    412             _BuildStepFactory(steps.ConfigureBuild, platform='mac-mojave', configuration='release', architectures=["x86_64"], buildOnly=False, triggers=None, remotes=None, additionalArguments=None),
     436            _BuildStepFactory(steps.ConfigureBuild, platform='mac-mojave', configuration='release', architectures=["x86_64"],
     437                              buildOnly=False, triggers=None, triggered_by=None, remotes=None, additionalArguments=None),
    413438            _BuildStepFactory(steps.ValidatePatch),
    414439            _BuildStepFactory(steps.PrintConfiguration),
     
    428453        factory = factories.iOSTestsFactory(platform='ios-simulator-13', configuration='release', architectures=["x86_64"])
    429454        self.assertBuildSteps(factory.steps, [
    430             _BuildStepFactory(steps.ConfigureBuild, platform='ios-simulator-13', configuration='release', architectures=["x86_64"], buildOnly=False, triggers=None, remotes=None, additionalArguments=None),
     455            _BuildStepFactory(steps.ConfigureBuild, platform='ios-simulator-13', configuration='release', architectures=["x86_64"],
     456                              buildOnly=False, triggers=None, triggered_by=None, remotes=None, additionalArguments=None),
    431457            _BuildStepFactory(steps.ValidatePatch),
    432458            _BuildStepFactory(steps.PrintConfiguration),
     
    446472        factory = factories.GTKTestsFactory(platform='gtk', configuration='release', architectures=["x86_64"])
    447473        self.assertBuildSteps(factory.steps, [
    448             _BuildStepFactory(steps.ConfigureBuild, platform='gtk', configuration='release', architectures=["x86_64"], buildOnly=False, triggers=None, remotes=None, additionalArguments=None),
     474            _BuildStepFactory(steps.ConfigureBuild, platform='gtk', configuration='release', architectures=["x86_64"],
     475                              buildOnly=False, triggers=None, triggered_by=None, remotes=None, additionalArguments=None),
    449476            _BuildStepFactory(steps.ValidatePatch),
    450477            _BuildStepFactory(steps.PrintConfiguration),
     
    465492        factory = factories.JSCBuildFactory(platform='jsc', configuration='release', architectures=["mipsel"])
    466493        self.assertBuildSteps(factory.steps, [
    467             _BuildStepFactory(steps.ConfigureBuild, platform='jsc', configuration='release', architectures=["mipsel"], buildOnly=False, triggers=None, remotes=None, additionalArguments=None),
     494            _BuildStepFactory(steps.ConfigureBuild, platform='jsc', configuration='release', architectures=["mipsel"],
     495                              buildOnly=False, triggers=None, triggered_by=None, remotes=None, additionalArguments=None),
    468496            _BuildStepFactory(steps.CheckPatchRelevance),
    469497            _BuildStepFactory(steps.ValidatePatch),
     
    479507        factory = factories.JSCBuildFactory(platform='jsc', configuration='release', architectures=["armv7"])
    480508        self.assertBuildSteps(factory.steps, [
    481             _BuildStepFactory(steps.ConfigureBuild, platform='jsc', configuration='release', architectures=["armv7"], buildOnly=False, triggers=None, remotes=None, additionalArguments=None),
     509            _BuildStepFactory(steps.ConfigureBuild, platform='jsc', configuration='release', architectures=["armv7"],
     510                              buildOnly=False, triggers=None, triggered_by=None, remotes=None, additionalArguments=None),
    482511            _BuildStepFactory(steps.CheckPatchRelevance),
    483512            _BuildStepFactory(steps.ValidatePatch),
     
    495524        factory = factories.JSCBuildFactory(platform='jsc', configuration='release', architectures=["mipsel"])
    496525        self.assertBuildSteps(factory.steps, [
    497             _BuildStepFactory(steps.ConfigureBuild, platform='jsc', configuration='release', architectures=["mipsel"], buildOnly=False, triggers=None, remotes=None, additionalArguments=None),
     526            _BuildStepFactory(steps.ConfigureBuild, platform='jsc', configuration='release', architectures=["mipsel"],
     527                              buildOnly=False, triggers=None, triggered_by=None, remotes=None, additionalArguments=None),
    498528            _BuildStepFactory(steps.CheckPatchRelevance),
    499529            _BuildStepFactory(steps.ValidatePatch),
     
    509539        factory = factories.JSCBuildFactory(platform='jsc', configuration='release', architectures=["armv7"])
    510540        self.assertBuildSteps(factory.steps, [
    511             _BuildStepFactory(steps.ConfigureBuild, platform='jsc', configuration='release', architectures=["armv7"], buildOnly=False, triggers=None, remotes=None, additionalArguments=None),
     541            _BuildStepFactory(steps.ConfigureBuild, platform='jsc', configuration='release', architectures=["armv7"],
     542                              buildOnly=False, triggers=None, triggered_by=None, remotes=None, additionalArguments=None),
    512543            _BuildStepFactory(steps.CheckPatchRelevance),
    513544            _BuildStepFactory(steps.ValidatePatch),
     
    525556        factory = factories.JSCTestsFactory(platform='jsc', configuration='release', architectures=["mipsel"])
    526557        self.assertBuildSteps(factory.steps, [
    527             _BuildStepFactory(steps.ConfigureBuild, platform='jsc', configuration='release', architectures=["mipsel"], buildOnly=False, triggers=None, remotes=None, additionalArguments=None),
     558            _BuildStepFactory(steps.ConfigureBuild, platform='jsc', configuration='release', architectures=["mipsel"],
     559                              buildOnly=False, triggers=None, triggered_by=None, remotes=None, additionalArguments=None),
    528560            _BuildStepFactory(steps.CheckPatchRelevance),
    529561            _BuildStepFactory(steps.ValidatePatch),
     
    541573        factory = factories.JSCTestsFactory(platform='jsc', configuration='release', architectures=["armv7"])
    542574        self.assertBuildSteps(factory.steps, [
    543             _BuildStepFactory(steps.ConfigureBuild, platform='jsc', configuration='release', architectures=["armv7"], buildOnly=False, triggers=None, remotes=None, additionalArguments=None),
     575            _BuildStepFactory(steps.ConfigureBuild, platform='jsc', configuration='release', architectures=["armv7"],
     576                              buildOnly=False, triggers=None, triggered_by=None, remotes=None, additionalArguments=None),
    544577            _BuildStepFactory(steps.CheckPatchRelevance),
    545578            _BuildStepFactory(steps.ValidatePatch),
  • trunk/Tools/BuildSlaveSupport/ews-build/loadConfig.py

    r265958 r267022  
    6363            del builder['icon']
    6464        factorykwargs = {}
    65         for key in ['platform', 'configuration', 'architectures', 'triggers', 'remotes', 'additionalArguments', 'runTests']:
     65        for key in ['platform', 'configuration', 'architectures', 'triggers', 'remotes', 'additionalArguments', 'runTests', 'triggered_by']:
    6666            value = builder.pop(key, None)
    6767            if value:
     
    140140    for scheduler in config.get('schedulers') or []:
    141141        if scheduler.get('type') == 'Triggerable':
    142             if not isTriggerUsedByAnyBuilder(config, scheduler['name']):
     142            if not isTriggerUsedByAnyBuilder(config, scheduler['name']) and 'build' not in scheduler['name'].lower():
    143143                raise Exception('Trigger: {} is not used by any builder in config.json'.format(scheduler['name']))
    144144
  • trunk/Tools/BuildSlaveSupport/ews-build/loadConfig_unittest.py

    r258418 r267022  
    4141        valid_builder_keys = ['additionalArguments', 'architectures', 'builddir', 'configuration', 'description',
    4242                              'defaultProperties', 'env', 'factory', 'icon', 'locks', 'name', 'platform', 'properties',
    43                               'remotes', 'runTests', 'shortname', 'tags', 'triggers', 'workernames', 'workerbuilddir']
     43                              'remotes', 'runTests', 'shortname', 'tags', 'triggers', 'triggered_by', 'workernames', 'workerbuilddir']
    4444        for builder in config.get('builders', []):
    4545            for key in builder:
     
    5050        config = json.load(open(os.path.join(cwd, 'config.json')))
    5151        builder_to_schduler_map = {}
     52        triggered_by_schedulers = []
     53        for builder in config['builders']:
     54            triggered_by = builder.get('triggered_by')
     55            if triggered_by:
     56                triggered_by_schedulers.extend(triggered_by)
     57
    5258        for scheduler in config.get('schedulers'):
     59            if scheduler['name'] in triggered_by_schedulers:
     60                continue
    5361            for buildername in scheduler.get('builderNames'):
    5462                self.assertTrue(buildername not in builder_to_schduler_map, 'builder {} appears multiple times in schedulers.'.format(buildername))
  • trunk/Tools/BuildSlaveSupport/ews-build/steps.py

    r266799 r267022  
    2323from buildbot.plugins import steps, util
    2424from buildbot.process import buildstep, logobserver, properties
    25 from buildbot.process.results import Results, SUCCESS, FAILURE, WARNINGS, SKIPPED, EXCEPTION, RETRY
     25from buildbot.process.results import Results, SUCCESS, FAILURE, CANCELLED, WARNINGS, SKIPPED, EXCEPTION, RETRY
    2626from buildbot.steps import master, shell, transfer, trigger
    2727from buildbot.steps.source import git
     
    5252    descriptionDone = ['Configured build']
    5353
    54     def __init__(self, platform, configuration, architectures, buildOnly, triggers, remotes, additionalArguments):
     54    def __init__(self, platform, configuration, architectures, buildOnly, triggers, remotes, additionalArguments, triggered_by=None):
    5555        super(ConfigureBuild, self).__init__()
    5656        self.platform = platform
     
    6262        self.buildOnly = buildOnly
    6363        self.triggers = triggers
     64        self.triggered_by = triggered_by
    6465        self.remotes = remotes
    6566        self.additionalArguments = additionalArguments
     
    7677        if self.buildOnly:
    7778            self.setProperty('buildOnly', self.buildOnly, 'config.json')
    78         if self.triggers:
     79        if self.triggers and not self.getProperty('triggers'):
    7980            self.setProperty('triggers', self.triggers, 'config.json')
     81        if self.triggered_by:
     82            self.setProperty('triggered_by', self.triggered_by, 'config.json')
    8083        if self.remotes:
    8184            self.setProperty('remotes', self.remotes, 'config.json')
     
    952955
    953956class Trigger(trigger.Trigger):
    954     def __init__(self, schedulerNames, **kwargs):
     957    def __init__(self, schedulerNames, include_revision=True, triggers=None, **kwargs):
     958        self.include_revision = include_revision
     959        self.triggers = triggers
    955960        set_properties = self.propertiesToPassToTriggers() or {}
    956961        super(Trigger, self).__init__(schedulerNames=schedulerNames, set_properties=set_properties, **kwargs)
    957962
    958963    def propertiesToPassToTriggers(self):
    959         return {
     964        properties_to_pass = {
    960965            'patch_id': properties.Property('patch_id'),
    961966            'bug_id': properties.Property('bug_id'),
     
    965970            'architecture': properties.Property('architecture'),
    966971            'owner': properties.Property('owner'),
    967             'ews_revision': properties.Property('got_revision'),
    968972        }
     973        if self.include_revision:
     974            properties_to_pass['ews_revision'] = properties.Property('got_revision')
     975        if self.triggers:
     976            properties_to_pass['triggers'] = self.triggers
     977        return properties_to_pass
    969978
    970979
     
    21662175
    21672176    def retry_build(self, message=''):
    2168         self.finished(RETRY)
    21692177        if not message:
    21702178            message = 'Unable to confirm if test failures are introduced by patch, retrying build'
    21712179        self.descriptionDone = message
    2172         self.build.buildFinished([message], RETRY)
     2180
     2181        triggered_by = self.getProperty('triggered_by', None)
     2182        if triggered_by:
     2183            # Trigger parent build so that it can re-build ToT
     2184            schduler_for_current_queue = self.getProperty('scheduler')
     2185            self.build.addStepsAfterCurrentStep([Trigger(schedulerNames=triggered_by, include_revision=False, triggers=[schduler_for_current_queue])])
     2186            self.setProperty('build_summary', message)
     2187            self.finished(SUCCESS)
     2188        else:
     2189            self.finished(RETRY)
     2190            self.build.buildFinished([message], RETRY)
    21732191        return defer.succeed(None)
    21742192
  • trunk/Tools/ChangeLog

    r267019 r267022  
     12020-09-14  Aakash Jain  <aakash_jain@apple.com>
     2
     3        [EWS] Layout testers can go in an infinite RETRY loop when there are 30+ failures on trunk
     4        https://bugs.webkit.org/show_bug.cgi?id=203698
     5        <rdar://problem/66157544>
     6
     7        Reviewed by Jonathan Bedard.
     8
     9        * BuildSlaveSupport/ews-build/steps.py:
     10        (ConfigureBuild.__init__): Added triggerred_by key.
     11        (ConfigureBuild.start): Set triggers property only if it is not already set (by the build who triggerred this build).
     12        (Trigger.__init__):  Added include_revision parameter, it would be False while triggerring builder, so that builder
     13        can use ToT instead of the specific revision.
     14        Also added triggers, so that when the tester trigger the builder, it can explicitly specify only to trigger it back and
     15        nothing else.
     16        (Trigger.propertiesToPassToTriggers): Pass ews_revision and triggers properties to triggered builds appropriately.
     17        (AnalyzeLayoutTestsResults.retry_build): Trigger the parent build if triggered_by is specified.
     18        * BuildSlaveSupport/ews-build/config.json: Added triggered_by key.
     19        * BuildSlaveSupport/ews-build/factories.py: Updated to handle triggered_by key.
     20        * BuildSlaveSupport/ews-build/loadConfig.py: Ditto.
     21        * BuildSlaveSupport/ews-build/loadConfig_unittest.py:
     22        * BuildSlaveSupport/ews-build/factories_unittest.py:
     23        * BuildSlaveSupport/ews-app/ews/views/statusbubble.py:
     24        (StatusBubble._build_bubble): If the build is retried, ensure that the status-bubble is orange.
     25        (StatusBubble._most_recent_failure_message): Display the retry message from analyze-layout-tests-results step in the status-bubble.
     26
    1272020-09-14  Jonathan Bedard  <jbedard@apple.com>
    228
Note: See TracChangeset for help on using the changeset viewer.