Title: [287133] trunk/Tools
Revision
287133
Author
[email protected]
Date
2021-12-16 07:15:13 -0800 (Thu, 16 Dec 2021)

Log Message

[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:

Modified Paths

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
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to