Modified: trunk/Tools/BuildSlaveSupport/build.webkit.org-config/loadConfig.py (268748 => 268749)
--- trunk/Tools/BuildSlaveSupport/build.webkit.org-config/loadConfig.py 2020-10-20 17:48:26 UTC (rev 268748)
+++ trunk/Tools/BuildSlaveSupport/build.webkit.org-config/loadConfig.py 2020-10-20 17:53:55 UTC (rev 268749)
@@ -157,7 +157,9 @@
if (category in ('AppleMac', 'AppleWin', 'iOS')) and factoryName != 'BuildFactory':
builder['nextBuild'] = pickLatestBuild
- if not USE_BUILDBOT_VERSION2:
+ if USE_BUILDBOT_VERSION2:
+ builder['tags'] = getTagsForBuilder(builder)
+ else:
builder['category'] = category
c['builders'].append(builder)
@@ -170,3 +172,23 @@
def filter(self, change):
return wkbuild.should_build(self.platform, change.files)
+
+
+def getInvalidTags():
+ """
+ We maintain a list of words which we do not want to display as tag in buildbot.
+ We generate a list of tags by splitting the builder name. We do not want certain words as tag.
+ For e.g. we don't want '11'as tag for builder iOS-11-Simulator-EWS
+ """
+ invalid_tags = [str(i) for i in xrange(0, 20)]
+ invalid_tags.extend(['EWS', 'TryBot'])
+ return invalid_tags
+
+
+def getValidTags(tags):
+ return list(set(tags) - set(getInvalidTags()))
+
+
+def getTagsForBuilder(builder):
+ keywords = filter(None, re.split('[, \-_:()]+', str(builder['name'])))
+ return getValidTags(keywords)
Modified: trunk/Tools/BuildSlaveSupport/build.webkit.org-config/loadConfig_unittest.py (268748 => 268749)
--- trunk/Tools/BuildSlaveSupport/build.webkit.org-config/loadConfig_unittest.py 2020-10-20 17:48:26 UTC (rev 268748)
+++ trunk/Tools/BuildSlaveSupport/build.webkit.org-config/loadConfig_unittest.py 2020-10-20 17:53:55 UTC (rev 268749)
@@ -27,7 +27,9 @@
import os
import unittest
+import loadConfig
+
class ConfigDotJSONTest(unittest.TestCase):
def get_config(self):
cwd = os.path.dirname(os.path.abspath(__file__))
@@ -65,5 +67,36 @@
self.assertTrue(len(scheduler.get('builderNames')) == 1, 'scheduler "{}" triggers multiple builders.'.format(scheduler['name']))
+class TagsForBuilderTest(unittest.TestCase):
+ def verifyTags(self, builderName, expectedTags):
+ tags = loadConfig.getTagsForBuilder({'name': builderName})
+ self.assertEqual(sorted(tags), sorted(expectedTags))
+
+ def test_getTagsForBuilder(self):
+ self.verifyTags('EWS', [])
+ self.verifyTags('TryBot-10-EWS', [])
+ self.verifyTags('11-EWS', [])
+ self.verifyTags('32-EWS', ['32'])
+ self.verifyTags('iOS-11-EWS', ['iOS'])
+ self.verifyTags('iOS(11),(test)-EWS', ['iOS', 'test'])
+ self.verifyTags('Windows-EWS', ['Windows'])
+ self.verifyTags('Windows_Windows', ['Windows'])
+ self.verifyTags('GTK-Build-EWS', ['GTK', 'Build'])
+ self.verifyTags('GTK-WK2-Tests-EWS', ['GTK', 'WK2', 'Tests'])
+ self.verifyTags('macOS-Sierra-Release-WK1-EWS', ['Sierra', 'Release', 'macOS', 'WK1'])
+ self.verifyTags('macOS-High-Sierra-Release-32bit-WK2-EWS', ['macOS', 'High', 'Sierra', 'Release', 'WK2', '32bit'])
+
+ def test_tags_type(self):
+ tags = loadConfig.getTagsForBuilder({'name': u'iOS-11-EWS'})
+ self.assertEqual(tags, ['iOS'])
+ self.assertEqual(type(tags[0]), str)
+
+ def test_getInvalidTags(self):
+ invalidTags = loadConfig.getInvalidTags()
+ expectedTags = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10',
+ '11', '12', '13', '14', '15', '16', '17', '18', '19', 'EWS', 'TryBot']
+ self.assertEqual(invalidTags, expectedTags)
+
+
if __name__ == '__main__':
unittest.main()