Diff
Modified: trunk/Tools/CISupport/ews-build/config.json (287132 => 287133)
--- trunk/Tools/CISupport/ews-build/config.json 2021-12-16 15:00:03 UTC (rev 287132)
+++ trunk/Tools/CISupport/ews-build/config.json 2021-12-16 15:15:13 UTC (rev 287133)
@@ -19,8 +19,10 @@
{ "name": "igalia10-gtk-wk2-ews", "platform": "gtk" },
{ "name": "igalia11-gtk-wk2-ews", "platform": "gtk" },
{ "name": "igalia12-gtk-wk2-ews", "platform": "gtk" },
+ { "name": "igalia13-gtk-wk2-ews", "platform": "gtk" },
{ "name": "aperez-gtk-ews", "platform": "gtk" },
{ "name": "igalia-wpe-ews", "platform": "wpe" },
+ { "name": "igalia2-wpe-ews", "platform": "wpe" },
{ "name": "aperez-wpe-ews", "platform": "wpe" },
{ "name": "wincairo-ews-001", "platform": "wincairo" },
{ "name": "wincairo-ews-002", "platform": "wincairo" },
@@ -115,7 +117,7 @@
"factory": "GTKBuildFactory", "platform": "gtk",
"configuration": "release", "architectures": ["x86_64"],
"triggers": ["api-tests-gtk-ews", "gtk-wk2-tests-ews"],
- "workernames": ["igalia1-gtk-wk2-ews", "igalia2-gtk-wk2-ews", "aperez-gtk-ews"]
+ "workernames": ["aperez-gtk-ews", "igalia1-gtk-wk2-ews", "igalia2-gtk-wk2-ews", "igalia13-gtk-wk2-ews"]
},
{
"name": "GTK-WK2-Tests-EWS", "shortname": "gtk-wk2", "icon": "testOnly",
@@ -240,7 +242,7 @@
"name": "WPE-EWS", "shortname": "wpe", "icon": "buildOnly",
"factory": "WPEFactory", "platform": "wpe",
"configuration": "release", "architectures": ["x86_64"],
- "workernames": ["igalia-wpe-ews", "aperez-wpe-ews"]
+ "workernames": ["aperez-wpe-ews", "igalia-wpe-ews", "igalia2-wpe-ews"]
},
{
"name": "JSC-Tests-EWS", "shortname": "jsc", "icon": "buildAndTest",
Modified: trunk/Tools/CISupport/ews-build/steps.py (287132 => 287133)
--- trunk/Tools/CISupport/ews-build/steps.py 2021-12-16 15:00:03 UTC (rev 287132)
+++ trunk/Tools/CISupport/ews-build/steps.py 2021-12-16 15:15:13 UTC (rev 287133)
@@ -755,7 +755,7 @@
build_url = '{}#/builders/{}/builds/{}'.format(self.master.config.buildbotURL, self.build._builderid, self.build.number)
email_subject = 'Infrastructure issue at {}'.format(builder_name)
email_text = 'The following infrastructure issue happened at:\n\n'
- email_text += ' - Build : {}\n'.format(build_url)
+ email_text += ' - Build : <a href="" build_url)
email_text += ' - Builder : {}\n'.format(builder_name)
email_text += ' - Worker : {}\n'.format(worker_name)
email_text += ' - Issue: {}\n'.format(infrastructure_issue_text)
@@ -2764,12 +2764,15 @@
self.build.results = SUCCESS
self.setProperty('build_summary', message)
else:
- # We have a failure return code, but not a list of failed or flaky tests.
- # So retry re-running the _whole_ layout tests without-patch to see if
- # this unexpected failure was pre-existent. If the failure was not pre-existent,
- # then we would not report a list of failed test, just a generic "unknown" failure.
+ # We have a failure return code but not a list of failed or flaky tests, so we can't run the repeat steps.
+ # If we are on the last retry then run the whole layout tests without patch.
+ # If not, then go to analyze-layout-tests-results where we will retry everything hoping this was a random failure.
self.setProperty('patchFailedTests', True)
- next_steps.extend([UnApplyPatchIfRequired(), CompileWebKitWithoutPatch(retry_build_on_failure=True), ValidatePatch(verifyBugClosed=False, addURLs=False), RunWebKitTestsWithoutPatchRedTree()])
+ retry_count = int(self.getProperty('retry_count', 0))
+ if retry_count < AnalyzeLayoutTestsResultsRedTree.MAX_RETRY:
+ next_steps.append(AnalyzeLayoutTestsResultsRedTree())
+ else:
+ next_steps.extend([UnApplyPatchIfRequired(), CompileWebKitWithoutPatch(retry_build_on_failure=True), ValidatePatch(verifyBugClosed=False, addURLs=False), RunWebKitTestsWithoutPatchRedTree()])
if next_steps:
self.build.addStepsAfterCurrentStep(next_steps)
return rc
@@ -2787,7 +2790,7 @@
def setLayoutTestCommand(self):
super().setLayoutTestCommand()
first_results_failing_tests = set(self.getProperty('first_run_failures', []))
- self.setCommand(self.command + ['--repeat-each=%s' % self.NUM_REPEATS_PER_TEST] + sorted(first_results_failing_tests))
+ self.setCommand(self.command + ['--fully-parallel', '--repeat-each=%s' % self.NUM_REPEATS_PER_TEST] + sorted(first_results_failing_tests))
def evaluateCommand(self, cmd):
with_patch_repeat_failures_results_nonflaky_failures = set(self.getProperty('with_patch_repeat_failures_results_nonflaky_failures', []))
@@ -2846,7 +2849,7 @@
# is skipped anyways if is marked as such on the Expectation files or if is marked
# as failure (since we are passing also '--skip-failing-tests'). That way we ensure
# to report the case of a patch removing an expectation that still fails with it.
- self.setCommand(self.command + ['--repeat-each=%s' % self.NUM_REPEATS_PER_TEST, '--skipped=always'] + sorted(failures_to_repeat))
+ self.setCommand(self.command + ['--fully-parallel', '--repeat-each=%s' % self.NUM_REPEATS_PER_TEST, '--skipped=always'] + sorted(failures_to_repeat))
def evaluateCommand(self, cmd):
rc = self.evaluateResult(cmd)
Modified: trunk/Tools/CISupport/ews-build/steps_unittest.py (287132 => 287133)
--- trunk/Tools/CISupport/ews-build/steps_unittest.py 2021-12-16 15:00:03 UTC (rev 287132)
+++ trunk/Tools/CISupport/ews-build/steps_unittest.py 2021-12-16 15:15:13 UTC (rev 287133)
@@ -2581,7 +2581,7 @@
'Tools/Scripts/run-webkit-tests',
'--no-build', '--no-show-results', '--no-new-test-results', '--clobber-old-results',
'--release', '--results-directory', 'layout-test-results', '--debug-rwt-logging',
- '--skip-failing-tests', '--repeat-each=10'] + sorted(first_run_failures)
+ '--skip-failing-tests', '--fully-parallel', '--repeat-each=10'] + sorted(first_run_failures)
)
+ 0,
)
@@ -2622,7 +2622,7 @@
'Tools/Scripts/run-webkit-tests',
'--no-build', '--no-show-results', '--no-new-test-results', '--clobber-old-results',
'--release', '--results-directory', 'layout-test-results', '--debug-rwt-logging',
- '--skip-failing-tests', '--repeat-each=10', '--skipped=always'] + sorted(with_patch_repeat_failures_results_nonflaky_failures)
+ '--skip-failing-tests', '--fully-parallel', '--repeat-each=10', '--skipped=always'] + sorted(with_patch_repeat_failures_results_nonflaky_failures)
)
+ 0,
)
@@ -2651,7 +2651,7 @@
'Tools/Scripts/run-webkit-tests',
'--no-build', '--no-show-results', '--no-new-test-results', '--clobber-old-results',
'--release', '--results-directory', 'layout-test-results', '--debug-rwt-logging',
- '--skip-failing-tests', '--repeat-each=10', '--skipped=always'] + sorted(first_run_failures)
+ '--skip-failing-tests', '--fully-parallel', '--repeat-each=10', '--skipped=always'] + sorted(first_run_failures)
)
+ 0,
)
Modified: trunk/Tools/ChangeLog (287132 => 287133)
--- trunk/Tools/ChangeLog 2021-12-16 15:00:03 UTC (rev 287132)
+++ trunk/Tools/ChangeLog 2021-12-16 15:15:13 UTC (rev 287133)
@@ -1,3 +1,31 @@
+2021-12-16 Carlos Alberto Lopez Perez <[email protected]>
+
+ [GTK][WPE] Apply optimizations to speed up the layout-test EWS and add a few more workers to the build ones.
+ https://bugs.webkit.org/show_bug.cgi?id=234378
+
+ Reviewed by Jonathan Bedard.
+
+ This applies two optimizations to speed up the testing on the layout-tests EWS added in r286405
+
+ 1. Pass --fully-parallel to the retry steps. This makes the tool to utilize all the available workers for running
+ the tests instead of running them in serial. That makes the time needed to complete the retry steps to be considerable less,
+ In this example https://ews-build.webkit.org/#/builders/35/builds/1757 it reduces the timing from 43 mins to 12 mins.
+
+ 2. When the first run fails without giving a list of failures and we have not reached the maximum retry count
+ we are going to end retring the whole testing anyway, so there is no point in running the tests without patch
+ in that case, we can skip doing that to save time. See: https://ews-build.webkit.org/#/builders/35/builds/1763
+
+ On top of that this patch adds an extra worker to the EWS build queues of GTK and WPE
+ because I detected that this queues sometimes are not fast enough.
+
+ * CISupport/ews-build/config.json:
+ * CISupport/ews-build/steps.py:
+ (BugzillaMixin.send_email_for_infrastructure_issue):
+ (RunWebKitTestsRedTree.evaluateCommand):
+ (RunWebKitTestsRepeatFailuresRedTree.setLayoutTestCommand):
+ (RunWebKitTestsRepeatFailuresWithoutPatchRedTree.setLayoutTestCommand):
+ * CISupport/ews-build/steps_unittest.py:
+
2021-12-15 John Wilander <[email protected]>
TestWebKitAPI.PrivateClickMeasurement.MigrateWithDestinationToken is a flaky failure