Title: [289984] trunk/Tools
Revision
289984
Author
jbed...@apple.com
Date
2022-02-16 17:18:44 -0800 (Wed, 16 Feb 2022)

Log Message

[EWS] Rename 'patch' to 'change' in layout-test steps
https://bugs.webkit.org/show_bug.cgi?id=236674
<rdar://problem/88992222>

Reviewed by Aakash Jain.

* Tools/CISupport/ews-build/steps.py:
(RunWebKitTestsWithoutChange.setLayoutTestCommand):
(AnalyzeLayoutTestsResults.report_failure):
(AnalyzeLayoutTestsResults.retry_build):
(RunWebKitTestsRepeatFailuresRedTree.evaluateCommand):
(RunWebKitTestsRepeatFailuresRedTree.commandComplete):
(RunWebKitTestsRepeatFailuresWithoutChangeRedTree): Renamed.
(RunWebKitTestsRepeatFailuresWithoutChangeRedTree.setLayoutTestCommand):
(RunWebKitTestsRepeatFailuresWithoutChangeRedTree.evaluateCommand):
(RunWebKitTestsRepeatFailuresWithoutChangeRedTree.commandComplete):
(RunWebKitTestsRepeatFailuresWithoutPatchRedTree): Renamed.
(AnalyzeLayoutTestsResultsRedTree.report_infrastructure_issue_and_maybe_retry_build):
(AnalyzeLayoutTestsResultsRedTree.start):
* Tools/CISupport/ews-build/steps_unittest.py:

Canonical link: https://commits.webkit.org/247370@main

Modified Paths

Diff

Modified: trunk/Tools/CISupport/ews-build/steps.py (289983 => 289984)


--- trunk/Tools/CISupport/ews-build/steps.py	2022-02-17 01:10:43 UTC (rev 289983)
+++ trunk/Tools/CISupport/ews-build/steps.py	2022-02-17 01:18:44 UTC (rev 289984)
@@ -2900,11 +2900,11 @@
 
     def setLayoutTestCommand(self):
         super(RunWebKitTestsWithoutChange, self).setLayoutTestCommand()
-        # In order to speed up testing, on the step that retries running the layout tests without patch
+        # In order to speed up testing, on the step that retries running the layout tests without change
         # only run the subset of tests that failed on the previous steps.
         # But only do that if the previous steps didn't exceed the test failure limit
         # Also pass '--skipped=always' to avoid running a test that is skipped on the clean tree and that
-        # the patch removed from the TestExpectations file meanwhile it still fails with the patch (so
+        # the change removed from the TestExpectations file meanwhile it still fails with the change (so
         # it is passed as an argument on the command-line)
         # The flag '--skip-failing-tests' that is passed by default (in combination with '--skipped=always')
         # avoids running tests marked as failing on the Expectation files even when those are passed as arguments.
@@ -2913,9 +2913,9 @@
         if not first_results_did_exceed_test_failure_limit and not second_results_did_exceed_test_failure_limit:
             first_results_failing_tests = set(self.getProperty('first_run_failures', set()))
             second_results_failing_tests = set(self.getProperty('second_run_failures', set()))
-            list_failed_tests_with_patch = sorted(first_results_failing_tests.union(second_results_failing_tests))
-            if list_failed_tests_with_patch:
-                self.setCommand(self.command + ['--skipped=always'] + list_failed_tests_with_patch)
+            list_failed_tests_with_change = sorted(first_results_failing_tests.union(second_results_failing_tests))
+            if list_failed_tests_with_change:
+                self.setCommand(self.command + ['--skipped=always'] + list_failed_tests_with_change)
 
 
 class AnalyzeLayoutTestsResults(buildstep.BuildStep, BugzillaMixin, GitHubMixin):
@@ -2928,7 +2928,7 @@
         self.finished(FAILURE)
         self.build.results = FAILURE
         if not new_failures:
-            message = 'Found unexpected failure with patch'
+            message = 'Found unexpected failure with change'
         else:
             pluralSuffix = 's' if len(new_failures) > 1 else ''
             if exceed_failure_limit:
@@ -2978,7 +2978,7 @@
 
     def retry_build(self, message=''):
         if not message:
-            message = 'Unable to confirm if test failures are introduced by patch, retrying build'
+            message = 'Unable to confirm if test failures are introduced by change, retrying build'
         self.descriptionDone = message
 
         triggered_by = self.getProperty('triggered_by', None)
@@ -3111,7 +3111,7 @@
             clean_tree_run_status = self.getProperty('clean_tree_run_status', FAILURE)
             if clean_tree_run_status == SUCCESS:
                 return self.report_failure(set())
-            self.send_email_for_infrastructure_issue('Both first and second layout-test runs with patch generated no list of results but exited with error, and the clean_tree without patch retry also failed.')
+            self.send_email_for_infrastructure_issue('Both first and second layout-test runs with patch generated no list of results but exited with error, and the clean_tree without change retry also failed.')
             return self.retry_build('Unexpected infrastructure issue, retrying build')
 
         if first_results_did_exceed_test_failure_limit and second_results_did_exceed_test_failure_limit:
@@ -3242,14 +3242,14 @@
         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', []))
-        with_patch_repeat_failures_results_flakies = set(self.getProperty('with_patch_repeat_failures_results_flakies', []))
-        with_patch_repeat_failures_timedout = self.getProperty('with_patch_repeat_failures_timedout', False)
+        with_change_repeat_failures_results_nonflaky_failures = set(self.getProperty('with_change_repeat_failures_results_nonflaky_failures', []))
+        with_change_repeat_failures_results_flakies = set(self.getProperty('with_change_repeat_failures_results_flakies', []))
+        with_change_repeat_failures_timedout = self.getProperty('with_change_repeat_failures_timedout', False)
         first_results_flaky_tests = set(self.getProperty('first_run_flakies', []))
         rc = self.evaluateResult(cmd)
-        self.setProperty('with_patch_repeat_failures_retcode', rc)
+        self.setProperty('with_change_repeat_failures_retcode', rc)
         next_steps = [ArchiveTestResults(), UploadTestResults(identifier='repeat-failures'), ExtractTestResults(identifier='repeat-failures')]
-        if with_patch_repeat_failures_results_nonflaky_failures or with_patch_repeat_failures_timedout:
+        if with_change_repeat_failures_results_nonflaky_failures or with_change_repeat_failures_timedout:
             next_steps.extend([
                 ValidateChange(verifyBugClosed=False, addURLs=False),
                 KillOldProcesses(),
@@ -3257,7 +3257,7 @@
                 RevertPullRequestChanges(),
                 CompileWebKitWithoutChange(retry_build_on_failure=True),
                 ValidateChange(verifyBugClosed=False, addURLs=False),
-                RunWebKitTestsRepeatFailuresWithoutPatchRedTree(),
+                RunWebKitTestsRepeatFailuresWithoutChangeRedTree(),
             ])
         else:
             next_steps.append(AnalyzeLayoutTestsResultsRedTree())
@@ -3269,15 +3269,15 @@
         shell.Test.commandComplete(self, cmd)
         logText = self.log_observer.getStdout() + self.log_observer.getStderr()
         logTextJson = self.log_observer_json.getStdout()
-        with_patch_repeat_failures_results = LayoutTestFailures.results_from_string(logTextJson)
-        if with_patch_repeat_failures_results:
-            self.setProperty('with_patch_repeat_failures_results_exceed_failure_limit', with_patch_repeat_failures_results.did_exceed_test_failure_limit)
-            self.setProperty('with_patch_repeat_failures_results_nonflaky_failures', sorted(with_patch_repeat_failures_results.failing_tests))
-            self.setProperty('with_patch_repeat_failures_results_flakies', sorted(with_patch_repeat_failures_results.flaky_tests))
-            if with_patch_repeat_failures_results.failing_tests:
-                self._addToLog(self.test_failures_log_name, '\n'.join(with_patch_repeat_failures_results.failing_tests))
+        with_change_repeat_failures_results = LayoutTestFailures.results_from_string(logTextJson)
+        if with_change_repeat_failures_results:
+            self.setProperty('with_change_repeat_failures_results_exceed_failure_limit', with_change_repeat_failures_results.did_exceed_test_failure_limit)
+            self.setProperty('with_change_repeat_failures_results_nonflaky_failures', sorted(with_change_repeat_failures_results.failing_tests))
+            self.setProperty('with_change_repeat_failures_results_flakies', sorted(with_change_repeat_failures_results.flaky_tests))
+            if with_change_repeat_failures_results.failing_tests:
+                self._addToLog(self.test_failures_log_name, '\n'.join(with_change_repeat_failures_results.failing_tests))
         command_timedout = self._did_command_timed_out(self.log_observer.getHeaders())
-        self.setProperty('with_patch_repeat_failures_timedout', command_timedout)
+        self.setProperty('with_change_repeat_failures_timedout', command_timedout)
         self._parseRunWebKitTestsOutput(logText)
 
     def start(self):
@@ -3285,8 +3285,8 @@
         return super().start(BufferLogObserverClass=BufferLogHeaderObserver)
 
 
-class RunWebKitTestsRepeatFailuresWithoutPatchRedTree(RunWebKitTestsRedTree):
-    name = 'layout-tests-repeat-failures-without-patch'
+class RunWebKitTestsRepeatFailuresWithoutChangeRedTree(RunWebKitTestsRedTree):
+    name = 'layout-tests-repeat-failures-without-change'
     NUM_REPEATS_PER_TEST = 10
     EXIT_AFTER_FAILURES = None
     MAX_SECONDS_STEP_RUN = 10800  # 3h
@@ -3296,20 +3296,20 @@
 
     def setLayoutTestCommand(self):
         super().setLayoutTestCommand()
-        with_patch_nonflaky_failures = set(self.getProperty('with_patch_repeat_failures_results_nonflaky_failures', []))
+        with_change_nonflaky_failures = set(self.getProperty('with_change_repeat_failures_results_nonflaky_failures', []))
         first_run_failures = set(self.getProperty('first_run_failures', []))
-        with_patch_repeat_failures_timedout = self.getProperty('with_patch_repeat_failures_timedout', False)
-        failures_to_repeat = first_run_failures if with_patch_repeat_failures_timedout else with_patch_nonflaky_failures
+        with_change_repeat_failures_timedout = self.getProperty('with_change_repeat_failures_timedout', False)
+        failures_to_repeat = first_run_failures if with_change_repeat_failures_timedout else with_change_nonflaky_failures
         # Pass '--skipped=always' to ensure that any test passed via command line arguments
         # 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.
+        # to report the case of a change removing an expectation that still fails with it.
         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)
-        self.setProperty('without_patch_repeat_failures_retcode', rc)
-        self.build.addStepsAfterCurrentStep([ArchiveTestResults(), UploadTestResults(identifier='repeat-failures-without-patch'), ExtractTestResults(identifier='repeat-failures-without-patch'), AnalyzeLayoutTestsResultsRedTree()])
+        self.setProperty('without_change_repeat_failures_retcode', rc)
+        self.build.addStepsAfterCurrentStep([ArchiveTestResults(), UploadTestResults(identifier='repeat-failures-without-change'), ExtractTestResults(identifier='repeat-failures-without-change'), AnalyzeLayoutTestsResultsRedTree()])
         return rc
 
     def commandComplete(self, cmd):
@@ -3316,15 +3316,15 @@
         shell.Test.commandComplete(self, cmd)
         logText = self.log_observer.getStdout() + self.log_observer.getStderr()
         logTextJson = self.log_observer_json.getStdout()
-        without_patch_repeat_failures_results = LayoutTestFailures.results_from_string(logTextJson)
-        if without_patch_repeat_failures_results:
-            self.setProperty('without_patch_repeat_failures_results_exceed_failure_limit', without_patch_repeat_failures_results.did_exceed_test_failure_limit)
-            self.setProperty('without_patch_repeat_failures_results_nonflaky_failures', sorted(without_patch_repeat_failures_results.failing_tests))
-            self.setProperty('without_patch_repeat_failures_results_flakies', sorted(without_patch_repeat_failures_results.flaky_tests))
-            if without_patch_repeat_failures_results.failing_tests:
-                self._addToLog(self.test_failures_log_name, '\n'.join(without_patch_repeat_failures_results.failing_tests))
+        without_change_repeat_failures_results = LayoutTestFailures.results_from_string(logTextJson)
+        if without_change_repeat_failures_results:
+            self.setProperty('without_change_repeat_failures_results_exceed_failure_limit', without_change_repeat_failures_results.did_exceed_test_failure_limit)
+            self.setProperty('without_change_repeat_failures_results_nonflaky_failures', sorted(without_change_repeat_failures_results.failing_tests))
+            self.setProperty('without_change_repeat_failures_results_flakies', sorted(without_change_repeat_failures_results.flaky_tests))
+            if without_change_repeat_failures_results.failing_tests:
+                self._addToLog(self.test_failures_log_name, '\n'.join(without_change_repeat_failures_results.failing_tests))
         command_timedout = self._did_command_timed_out(self.log_observer.getHeaders())
-        self.setProperty('without_patch_repeat_failures_timedout', command_timedout)
+        self.setProperty('without_change_repeat_failures_timedout', command_timedout)
         self._parseRunWebKitTestsOutput(logText)
 
     def start(self):
@@ -3363,7 +3363,7 @@
     def report_infrastructure_issue_and_maybe_retry_build(self, message):
         retry_count = int(self.getProperty('retry_count', 0))
         if retry_count >= self.MAX_RETRY:
-            message += '\nReached the maximum number of retries ({}). Unable to determine if patch is bad or there is a pre-existent infrastructure issue.'.format(self.MAX_RETRY)
+            message += '\nReached the maximum number of retries ({}). Unable to determine if change is bad or there is a pre-existent infrastructure issue.'.format(self.MAX_RETRY)
             self.send_email_for_infrastructure_issue(message)
             return self.report_warning(message)
         message += "\nRetrying build [retry count is {} of {}]".format(retry_count, self.MAX_RETRY)
@@ -3416,22 +3416,22 @@
             print('Error in sending email for flaky failure: {}'.format(e))
 
     def start(self):
-        # Run with patch, running the whole layout test suite
+        # Run with change, running the whole layout test suite
         first_results_exceed_failure_limit = self.getProperty('first_results_exceed_failure_limit', False)
         first_run_failures = set(self.getProperty('first_run_failures', []))
         first_run_flakies = set(self.getProperty('first_run_flakies', []))
 
-        # Run with patch, running first_run_failures 10 times each test
-        with_patch_repeat_failures_results_exceed_failure_limit = self.getProperty('with_patch_repeat_failures_results_exceed_failure_limit', False)
-        with_patch_repeat_failures_results_nonflaky_failures = set(self.getProperty('with_patch_repeat_failures_results_nonflaky_failures', []))
-        with_patch_repeat_failures_results_flakies = set(self.getProperty('with_patch_repeat_failures_results_flakies', []))
-        with_patch_repeat_failures_timedout = self.getProperty('with_patch_repeat_failures_timedout', False)
+        # Run with change, running first_run_failures 10 times each test
+        with_change_repeat_failures_results_exceed_failure_limit = self.getProperty('with_change_repeat_failures_results_exceed_failure_limit', False)
+        with_change_repeat_failures_results_nonflaky_failures = set(self.getProperty('with_change_repeat_failures_results_nonflaky_failures', []))
+        with_change_repeat_failures_results_flakies = set(self.getProperty('with_change_repeat_failures_results_flakies', []))
+        with_change_repeat_failures_timedout = self.getProperty('with_change_repeat_failures_timedout', False)
 
-        # Run without patch, running with_patch_repeat_failures_results_nonflaky_failures 10 times each test
-        without_patch_repeat_failures_results_exceed_failure_limit = self.getProperty('without_patch_repeat_failures_results_exceed_failure_limit', False)
-        without_patch_repeat_failures_results_nonflaky_failures = set(self.getProperty('without_patch_repeat_failures_results_nonflaky_failures', []))
-        without_patch_repeat_failures_results_flakies = set(self.getProperty('without_patch_repeat_failures_results_flakies', []))
-        without_patch_repeat_failures_timedout = self.getProperty('without_patch_repeat_failures_timedout', False)
+        # Run without change, running with_change_repeat_failures_results_nonflaky_failures 10 times each test
+        without_change_repeat_failures_results_exceed_failure_limit = self.getProperty('without_change_repeat_failures_results_exceed_failure_limit', False)
+        without_change_repeat_failures_results_nonflaky_failures = set(self.getProperty('without_change_repeat_failures_results_nonflaky_failures', []))
+        without_change_repeat_failures_results_flakies = set(self.getProperty('without_change_repeat_failures_results_flakies', []))
+        without_change_repeat_failures_timedout = self.getProperty('without_change_repeat_failures_timedout', False)
 
         # If we've made it here that means that the first_run failed (non-zero status) but we don't have a list of failures or flakies. That is not expected.
         if (not first_run_failures) and (not first_run_flakies):
@@ -3438,67 +3438,67 @@
             # If we are not on the last retry, then try to retry the whole testing with the hope it was a random infrastructure error.
             retry_count = int(self.getProperty('retry_count', 0))
             if retry_count < self.MAX_RETRY:
-                return self.report_infrastructure_issue_and_maybe_retry_build('The layout-test run with patch generated no list of results and exited with error, retrying with the hope it was a random infrastructure error.')
+                return self.report_infrastructure_issue_and_maybe_retry_build('The layout-test run with change generated no list of results and exited with error, retrying with the hope it was a random infrastructure error.')
             # Otherwise (last retry) report and error or a warning, since we already gave it enough retries for the issue to not be caused by a random infrastructure error.
             # The clean tree run that only happens when the first run gives an error code without generating a list of failures or flakies.
             clean_tree_run_failures = set(self.getProperty('clean_tree_run_failures', []))
             clean_tree_run_flakies = set(self.getProperty('clean_tree_run_flakies', []))
             clean_tree_run_status = self.getProperty('clean_tree_run_status', FAILURE)
-            # If the clean-tree run generated some results then we assume this patch broke the script run-webkit-tests or something like that.
+            # If the clean-tree run generated some results then we assume this change broke the script run-webkit-tests or something like that.
             if (clean_tree_run_status in [SUCCESS, WARNINGS]) or clean_tree_run_failures or clean_tree_run_flakies:
                 return self.report_failure(set(), first_results_exceed_failure_limit)
             # This will end the testing as retry_count will be now self.MAX_RETRY and a warning will be reported.
-            return self.report_infrastructure_issue_and_maybe_retry_build('The layout-test run with patch generated no list of results and exited with error, and the clean_tree without patch run did the same thing.')
+            return self.report_infrastructure_issue_and_maybe_retry_build('The layout-test run with change generated no list of results and exited with error, and the clean_tree without change run did the same thing.')
 
-        if with_patch_repeat_failures_results_exceed_failure_limit or without_patch_repeat_failures_results_exceed_failure_limit:
+        if with_change_repeat_failures_results_exceed_failure_limit or without_change_repeat_failures_results_exceed_failure_limit:
             return self.report_infrastructure_issue_and_maybe_retry_build('One of the steps for retrying the failed tests has exited early, but this steps should run without "--exit-after-n-failures" switch, so they should not exit early.')
 
-        if without_patch_repeat_failures_timedout:
-            return self.report_infrastructure_issue_and_maybe_retry_build('The step "layout-tests-repeat-failures-without-patch" was interrumped because it reached the timeout.')
+        if without_change_repeat_failures_timedout:
+            return self.report_infrastructure_issue_and_maybe_retry_build('The step "layout-tests-repeat-failures-without-change" was interrumped because it reached the timeout.')
 
-        if with_patch_repeat_failures_timedout:
-            # The patch is causing the step 'layout-tests-repeat-failures-with-patch' to timeout, likely the patch is adding many failures or long timeouts needing lot of time to test the repeats.
-            # Report the tests that failed on the first run as we don't have the information of the ones that failed on 'layout-tests-repeat-failures-with-patch' because it was interrupted due to the timeout.
+        if with_change_repeat_failures_timedout:
+            # The change is causing the step 'layout-tests-repeat-failures-with-change' to timeout, likely the change is adding many failures or long timeouts needing lot of time to test the repeats.
+            # Report the tests that failed on the first run as we don't have the information of the ones that failed on 'layout-tests-repeat-failures-with-change' because it was interrupted due to the timeout.
             # There is no point in repeating this run, it would happen the same on next runs and consume lot of time.
-            likely_new_non_flaky_failures = first_run_failures - without_patch_repeat_failures_results_nonflaky_failures.union(without_patch_repeat_failures_results_flakies)
-            self.send_email_for_infrastructure_issue('The step "layout-tests-repeat-failures-with-patch" reached the timeout but the step "layout-tests-repeat-failures-without-patch" ended. Not trying to repeat this. Reporting {} failures from the first run.'.format(len(likely_new_non_flaky_failures)))
+            likely_new_non_flaky_failures = first_run_failures - without_change_repeat_failures_results_nonflaky_failures.union(without_change_repeat_failures_results_flakies)
+            self.send_email_for_infrastructure_issue('The step "layout-tests-repeat-failures-with-change" reached the timeout but the step "layout-tests-repeat-failures-without-change" ended. Not trying to repeat this. Reporting {} failures from the first run.'.format(len(likely_new_non_flaky_failures)))
             return self.report_failure(likely_new_non_flaky_failures, first_results_exceed_failure_limit)
 
         # The checks below need to be after the timeout ones (above) because when a timeout is trigerred no results will be generated for the step.
-        # The step with_patch_repeat_failures generated no list of failures or flakies, which should only happen when the return code of the step is SUCESS or WARNINGS.
-        if not with_patch_repeat_failures_results_nonflaky_failures and not with_patch_repeat_failures_results_flakies:
-            with_patch_repeat_failures_retcode = self.getProperty('with_patch_repeat_failures_retcode', FAILURE)
-            if with_patch_repeat_failures_retcode not in [SUCCESS, WARNINGS]:
+        # The step with_change_repeat_failures generated no list of failures or flakies, which should only happen when the return code of the step is SUCESS or WARNINGS.
+        if not with_change_repeat_failures_results_nonflaky_failures and not with_change_repeat_failures_results_flakies:
+            with_change_repeat_failures_retcode = self.getProperty('with_change_repeat_failures_retcode', FAILURE)
+            if with_change_repeat_failures_retcode not in [SUCCESS, WARNINGS]:
                 return self.report_infrastructure_issue_and_maybe_retry_build('The step "layout-tests-repeat-failures" failed to generate any list of failures or flakies and returned an error code.')
 
-        # Check the same for the step without_patch_repeat_failures
-        if not without_patch_repeat_failures_results_nonflaky_failures and not without_patch_repeat_failures_results_flakies:
-            without_patch_repeat_failures_retcode = self.getProperty('without_patch_repeat_failures_retcode', FAILURE)
-            if without_patch_repeat_failures_retcode not in [SUCCESS, WARNINGS]:
-                return self.report_infrastructure_issue_and_maybe_retry_build('The step "layout-tests-repeat-failures-without-patch" failed to generate any list of failures or flakies and returned an error code.')
+        # Check the same for the step without_change_repeat_failures
+        if not without_change_repeat_failures_results_nonflaky_failures and not without_change_repeat_failures_results_flakies:
+            without_change_repeat_failures_retcode = self.getProperty('without_change_repeat_failures_retcode', FAILURE)
+            if without_change_repeat_failures_retcode not in [SUCCESS, WARNINGS]:
+                return self.report_infrastructure_issue_and_maybe_retry_build('The step "layout-tests-repeat-failures-without-change" failed to generate any list of failures or flakies and returned an error code.')
 
-        # Warn EWS bot watchers about flakies so they can garden those. Include the step where the flaky was found in the e-mail to know if it was found with patch or without it.
-        # Due to the way this class works most of the flakies are filtered on the step with patch even when those were pre-existent issues (so this is also useful for bot watchers).
-        all_flaky_failures = first_run_flakies.union(with_patch_repeat_failures_results_flakies).union(without_patch_repeat_failures_results_flakies)
+        # Warn EWS bot watchers about flakies so they can garden those. Include the step where the flaky was found in the e-mail to know if it was found with change or without it.
+        # Due to the way this class works most of the flakies are filtered on the step with change even when those were pre-existent issues (so this is also useful for bot watchers).
+        all_flaky_failures = first_run_flakies.union(with_change_repeat_failures_results_flakies).union(without_change_repeat_failures_results_flakies)
         flaky_steps_dict = {}
         for flaky_failure in all_flaky_failures:
             step_names = []
-            if flaky_failure in without_patch_repeat_failures_results_flakies:
-                step_names.append('layout-tests-repeat-failures-without-patch')
-            if flaky_failure in with_patch_repeat_failures_results_flakies:
-                step_names.append('layout-tests-repeat-failures (with patch)')
+            if flaky_failure in without_change_repeat_failures_results_flakies:
+                step_names.append('layout-tests-repeat-failures-without-change')
+            if flaky_failure in with_change_repeat_failures_results_flakies:
+                step_names.append('layout-tests-repeat-failures (with change)')
             if flaky_failure in first_run_flakies:
-                step_names.append('layout-tests (with patch)')
+                step_names.append('layout-tests (with change)')
             flaky_steps_dict[flaky_failure] = step_names
         self.send_email_for_flaky_failures_and_steps(flaky_steps_dict)
 
         # Warn EWS bot watchers about pre-existent non-flaky failures (if any), but send only one e-mail with all the tests to avoid sending too much e-mails.
-        pre_existent_non_flaky_failures = without_patch_repeat_failures_results_nonflaky_failures - all_flaky_failures
+        pre_existent_non_flaky_failures = without_change_repeat_failures_results_nonflaky_failures - all_flaky_failures
         if pre_existent_non_flaky_failures:
             self.send_email_for_pre_existent_failures(pre_existent_non_flaky_failures)
 
-        # Finally check if there are new consistent (non-flaky) failures caused by the patch and warn the patch author stetting the status for the build.
-        new_non_flaky_failures = with_patch_repeat_failures_results_nonflaky_failures - without_patch_repeat_failures_results_nonflaky_failures.union(without_patch_repeat_failures_results_flakies)
+        # Finally check if there are new consistent (non-flaky) failures caused by the change and warn the change author stetting the status for the build.
+        new_non_flaky_failures = with_change_repeat_failures_results_nonflaky_failures - without_change_repeat_failures_results_nonflaky_failures.union(without_change_repeat_failures_results_flakies)
         if new_non_flaky_failures:
             return self.report_failure(new_non_flaky_failures, first_results_exceed_failure_limit)
 

Modified: trunk/Tools/CISupport/ews-build/steps_unittest.py (289983 => 289984)


--- trunk/Tools/CISupport/ews-build/steps_unittest.py	2022-02-17 01:10:43 UTC (rev 289983)
+++ trunk/Tools/CISupport/ews-build/steps_unittest.py	2022-02-17 01:18:44 UTC (rev 289984)
@@ -53,7 +53,7 @@
                    RunBuildbotCheckConfigForBuildWebKit, RunBuildbotCheckConfigForEWS, RunEWSUnitTests, RunResultsdbpyTests,
                    RunJavaScriptCoreTests, RunJSCTestsWithoutChange, RunWebKit1Tests, RunWebKitPerlTests, RunWebKitPyPython2Tests,
                    RunWebKitPyPython3Tests, RunWebKitTests, RunWebKitTestsInStressMode, RunWebKitTestsInStressGuardmallocMode,
-                   RunWebKitTestsWithoutChange, RunWebKitTestsRedTree, RunWebKitTestsRepeatFailuresRedTree, RunWebKitTestsRepeatFailuresWithoutPatchRedTree,
+                   RunWebKitTestsWithoutChange, RunWebKitTestsRedTree, RunWebKitTestsRepeatFailuresRedTree, RunWebKitTestsRepeatFailuresWithoutChangeRedTree,
                    RunWebKitTestsWithoutChangeRedTree, AnalyzeLayoutTestsResultsRedTree, TestWithFailureCount, ShowIdentifier,
                    Trigger, TransferToS3, UnApplyPatch, UpdateWorkingDirectory, UploadBuiltProduct,
                    UploadTestResults, ValidateChangeLogAndReviewer, ValidateCommiterAndReviewer, ValidateChange, VerifyGitHubIntegrity)
@@ -2385,7 +2385,7 @@
         self.setProperty('clean_tree_results_exceed_failure_limit', False)
         self.setProperty('clean_tree_run_failures', [])
 
-    def test_failure_introduced_by_patch(self):
+    def test_failure_introduced_by_change(self):
         self.configureStep()
         self.setProperty('first_run_failures', ["jquery/offset.html"])
         self.setProperty('second_run_failures', ["jquery/offset.html"])
@@ -2458,7 +2458,7 @@
         self.expectOutcome(result=SUCCESS, state_string='Passed layout tests')
         return self.runStep()
 
-    def test_mildly_flaky_patch_with_some_tree_redness_and_flakiness(self):
+    def test_mildly_flaky_change_with_some_tree_redness_and_flakiness(self):
         self.configureStep()
         self.setProperty('first_run_failures', ['test1', 'test2', 'test3'])
         self.setProperty('second_run_failures', ['test1', 'test2'])
@@ -2473,7 +2473,7 @@
         self.setProperty('first_results_exceed_failure_limit', True)
         self.setProperty('first_run_failures',  ['test{}'.format(i) for i in range(0, 30)])
         self.setProperty('second_run_failures', [])
-        self.expectOutcome(result=RETRY, state_string='Unable to confirm if test failures are introduced by patch, retrying build (retry)')
+        self.expectOutcome(result=RETRY, state_string='Unable to confirm if test failures are introduced by change, retrying build (retry)')
         return self.runStep()
 
     def test_second_run_exceed_failure_limit(self):
@@ -2481,7 +2481,7 @@
         self.setProperty('first_run_failures', [])
         self.setProperty('second_results_exceed_failure_limit', True)
         self.setProperty('second_run_failures',  ['test{}'.format(i) for i in range(0, 30)])
-        self.expectOutcome(result=RETRY, state_string='Unable to confirm if test failures are introduced by patch, retrying build (retry)')
+        self.expectOutcome(result=RETRY, state_string='Unable to confirm if test failures are introduced by change, retrying build (retry)')
         return self.runStep()
 
     def test_clean_tree_exceed_failure_limit(self):
@@ -2490,7 +2490,7 @@
         self.setProperty('second_run_failures', ['test1'])
         self.setProperty('clean_tree_results_exceed_failure_limit', True)
         self.setProperty('clean_tree_run_failures',  ['test{}'.format(i) for i in range(0, 30)])
-        self.expectOutcome(result=RETRY, state_string='Unable to confirm if test failures are introduced by patch, retrying build (retry)')
+        self.expectOutcome(result=RETRY, state_string='Unable to confirm if test failures are introduced by change, retrying build (retry)')
         return self.runStep()
 
     def test_clean_tree_exceed_failure_limit_with_triggered_by(self):
@@ -2501,7 +2501,7 @@
         self.setProperty('second_run_failures', ['test1'])
         self.setProperty('clean_tree_results_exceed_failure_limit', True)
         self.setProperty('clean_tree_run_failures',  ['test{}'.format(i) for i in range(0, 30)])
-        message = 'Unable to confirm if test failures are introduced by patch, retrying build'
+        message = 'Unable to confirm if test failures are introduced by change, retrying build'
         self.expectOutcome(result=SUCCESS, state_string=message)
         rc = self.runStep()
         self.assertEqual(self.getProperty('build_summary'), message)
@@ -2514,7 +2514,7 @@
         self.setProperty('second_results_exceed_failure_limit', True)
         self.setProperty('second_run_failures', ['test{}'.format(i) for i in range(0, 30)])
         self.setProperty('clean_tree_run_failures', ['test{}'.format(i) for i in range(0, 27)])
-        self.expectOutcome(result=RETRY, state_string='Unable to confirm if test failures are introduced by patch, retrying build (retry)')
+        self.expectOutcome(result=RETRY, state_string='Unable to confirm if test failures are introduced by change, retrying build (retry)')
         return self.runStep()
 
     def test_clean_tree_has_some_failures(self):
@@ -2537,7 +2537,7 @@
         self.assertEqual(self.getProperty('build_summary'), 'Found 20 pre-existing test failures: test0, test1, test10, test11, test12, test13, test14, test15, test16, test17 ...')
         return rc
 
-    def test_patch_introduces_lot_of_failures(self):
+    def test_change_introduces_lot_of_failures(self):
         self.configureStep()
         self.setProperty('buildername', 'Commit-Queue')
         self.setProperty('first_results_exceed_failure_limit', True)
@@ -2559,22 +2559,22 @@
         self.expectOutcome(result=RETRY, state_string='Unexpected infrastructure issue, retrying build (retry)')
         return self.runStep()
 
-    def test_patch_breaks_layout_tests(self):
+    def test_change_breaks_layout_tests(self):
         self.configureStep()
         self.setProperty('first_run_failures', [])
         self.setProperty('second_run_failures', [])
         self.setProperty('clean_tree_run_failures', [])
         self.setProperty('clean_tree_run_status', SUCCESS)
-        self.expectOutcome(result=FAILURE, state_string='Found unexpected failure with patch (failure)')
+        self.expectOutcome(result=FAILURE, state_string='Found unexpected failure with change (failure)')
         return self.runStep()
 
-    def test_patch_removes_skipped_test_that_fails(self):
+    def test_change_removes_skipped_test_that_fails(self):
         self.configureStep()
-        self.setProperty('first_run_failures', ['test-was-skipped-patch-removed-expectation-but-still-fails.html'])
-        self.setProperty('second_run_failures', ['test-was-skipped-patch-removed-expectation-but-still-fails.html'])
+        self.setProperty('first_run_failures', ['test-was-skipped-change-removed-expectation-but-still-fails.html'])
+        self.setProperty('second_run_failures', ['test-was-skipped-change-removed-expectation-but-still-fails.html'])
         self.setProperty('clean_tree_run_failures', [])
         self.setProperty('clean_tree_run_status', SUCCESS)
-        self.expectOutcome(result=FAILURE, state_string='Found 1 new test failure: test-was-skipped-patch-removed-expectation-but-still-fails.html (failure)')
+        self.expectOutcome(result=FAILURE, state_string='Found 1 new test failure: test-was-skipped-change-removed-expectation-but-still-fails.html (failure)')
         return self.runStep()
 
 
@@ -2647,7 +2647,7 @@
         return self.runStep()
 
 
-class TestRunWebKitTestsRepeatFailuresWithoutPatchRedTree(BuildStepMixinAdditions, unittest.TestCase):
+class TestRunWebKitTestsRepeatFailuresWithoutChangeRedTree(BuildStepMixinAdditions, unittest.TestCase):
     def setUp(self):
         self.longMessage = True
         self.jsonFileName = 'layout-test-results/full_results.json'
@@ -2657,7 +2657,7 @@
         return self.tearDownBuildStep()
 
     def configureStep(self):
-        self.setupStep(RunWebKitTestsRepeatFailuresWithoutPatchRedTree())
+        self.setupStep(RunWebKitTestsRepeatFailuresWithoutChangeRedTree())
 
     def test_success(self):
         self.configureStep()
@@ -2665,12 +2665,12 @@
         self.setProperty('configuration', 'release')
         first_run_failures = ['fast/css/test1.html', 'imported/test/test2.html', 'fast/svg/test3.svg']
         first_run_flakies = ['fast/css/flaky1.html', 'imported/test/flaky2.html', 'fast/svg/flaky3.svg']
-        with_patch_repeat_failures_results_nonflaky_failures = ['fast/css/test1.html']
-        with_patch_repeat_failures_results_flakies = ['imported/test/test2.html', 'fast/svg/test3.svg']
+        with_change_repeat_failures_results_nonflaky_failures = ['fast/css/test1.html']
+        with_change_repeat_failures_results_flakies = ['imported/test/test2.html', 'fast/svg/test3.svg']
         self.setProperty('first_run_failures', first_run_failures)
         self.setProperty('first_run_flakies', first_run_flakies)
-        self.setProperty('with_patch_repeat_failures_results_nonflaky_failures', with_patch_repeat_failures_results_nonflaky_failures)
-        self.setProperty('with_patch_repeat_failures_results_flakies', with_patch_repeat_failures_results_flakies)
+        self.setProperty('with_change_repeat_failures_results_nonflaky_failures', with_change_repeat_failures_results_nonflaky_failures)
+        self.setProperty('with_change_repeat_failures_results_flakies', with_change_repeat_failures_results_flakies)
         self.expectRemoteCommands(
             ExpectShell(workdir='wkdir',
                         logfiles={'json': self.jsonFileName},
@@ -2680,7 +2680,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', '--fully-parallel', '--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_change_repeat_failures_results_nonflaky_failures)
                         )
             + 0,
         )
@@ -2687,19 +2687,19 @@
         self.expectOutcome(result=SUCCESS, state_string='layout-tests')
         return self.runStep()
 
-    def test_step_with_patch_did_timeout(self):
+    def test_step_with_change_did_timeout(self):
         self.configureStep()
         self.setProperty('fullPlatform', 'gtk')
         self.setProperty('configuration', 'release')
         first_run_failures = ['fast/css/test1.html', 'imported/test/test2.html', 'fast/svg/test3.svg']
         first_run_flakies = ['fast/css/flaky1.html', 'imported/test/flaky2.html', 'fast/svg/flaky3.svg']
-        with_patch_repeat_failures_results_nonflaky_failures = ['fast/css/test1.html']
-        with_patch_repeat_failures_results_flakies = ['imported/test/test2.html', 'fast/svg/test3.svg']
+        with_change_repeat_failures_results_nonflaky_failures = ['fast/css/test1.html']
+        with_change_repeat_failures_results_flakies = ['imported/test/test2.html', 'fast/svg/test3.svg']
         self.setProperty('first_run_failures', first_run_failures)
         self.setProperty('first_run_flakies', first_run_flakies)
-        self.setProperty('with_patch_repeat_failures_results_nonflaky_failures', with_patch_repeat_failures_results_nonflaky_failures)
-        self.setProperty('with_patch_repeat_failures_results_flakies', with_patch_repeat_failures_results_flakies)
-        self.setProperty('with_patch_repeat_failures_timedout', True)
+        self.setProperty('with_change_repeat_failures_results_nonflaky_failures', with_change_repeat_failures_results_nonflaky_failures)
+        self.setProperty('with_change_repeat_failures_results_flakies', with_change_repeat_failures_results_flakies)
+        self.setProperty('with_change_repeat_failures_timedout', True)
         self.expectRemoteCommands(
             ExpectShell(workdir='wkdir',
                         logfiles={'json': self.jsonFileName},
@@ -2726,7 +2726,6 @@
         return self.tearDownBuildStep()
 
     def configureStep(self):
-
         self.setupStep(AnalyzeLayoutTestsResultsRedTree())
 
     def configureCommonProperties(self):
@@ -2735,15 +2734,15 @@
         self.setProperty('patch_author', 't...@igalia.com')
         self.setProperty('patch_id', '404044')
 
-    def test_failure_introduced_by_patch_clean_tree_green(self):
+    def test_failure_introduced_by_change_clean_tree_green(self):
         self.configureStep()
         self.configureCommonProperties()
         self.setProperty('first_run_failures', ["test/failure1.html", "test/failure2.html"])
         self.setProperty('first_run_flakies', ["test/flaky1.html", "test/flaky2.html"])
-        self.setProperty('with_patch_repeat_failures_results_nonflaky_failures', ["test/failure1.html"])
-        self.setProperty('with_patch_repeat_failures_results_flakies', ["test/failure2.html"])
-        self.setProperty('without_patch_repeat_failures_results_nonflaky_failures', [])
-        self.setProperty('without_patch_repeat_failures_results_flakies', ["test/pre-existent/flaky.html"])
+        self.setProperty('with_change_repeat_failures_results_nonflaky_failures', ["test/failure1.html"])
+        self.setProperty('with_change_repeat_failures_results_flakies', ["test/failure2.html"])
+        self.setProperty('without_change_repeat_failures_results_nonflaky_failures', [])
+        self.setProperty('without_change_repeat_failures_results_flakies', ["test/pre-existent/flaky.html"])
         self.expectOutcome(result=FAILURE, state_string='Found 1 new test failure: test/failure1.html (failure)')
         step_result = self.runStep()
         self.assertEqual(len(self._emails_list), 2)
@@ -2755,15 +2754,15 @@
         self.assertTrue('test/failure1.html' in self._emails_list[1])
         return step_result
 
-    def test_failure_introduced_by_patch_clean_tree_red(self):
+    def test_failure_introduced_by_change_clean_tree_red(self):
         self.configureStep()
         self.configureCommonProperties()
         self.setProperty('first_run_failures', ["test/failure1.html", "test/failure2.html", "test/pre-existent/failure.html", "test/pre-existent/flaky.html"])
         self.setProperty('first_run_flakies', ["test/flaky1.html", "test/flaky2.html"])
-        self.setProperty('with_patch_repeat_failures_results_nonflaky_failures', ["test/failure1.html", "test/pre-existent/failure.html", "test/pre-existent/flaky.html"])
-        self.setProperty('with_patch_repeat_failures_results_flakies', ["test/failure2.html"])
-        self.setProperty('without_patch_repeat_failures_results_nonflaky_failures', ["test/pre-existent/failure.html"])
-        self.setProperty('without_patch_repeat_failures_results_flakies', ["test/pre-existent/flaky.html"])
+        self.setProperty('with_change_repeat_failures_results_nonflaky_failures', ["test/failure1.html", "test/pre-existent/failure.html", "test/pre-existent/flaky.html"])
+        self.setProperty('with_change_repeat_failures_results_flakies', ["test/failure2.html"])
+        self.setProperty('without_change_repeat_failures_results_nonflaky_failures', ["test/pre-existent/failure.html"])
+        self.setProperty('without_change_repeat_failures_results_flakies', ["test/pre-existent/flaky.html"])
         self.expectOutcome(result=FAILURE, state_string='Found 1 new test failure: test/failure1.html (failure)')
         step_result = self.runStep()
         self.assertEqual(len(self._emails_list), 3)
@@ -2780,12 +2779,13 @@
     def test_pre_existent_failures(self):
         self.configureStep()
         self.configureCommonProperties()
+        # MARK HERE
         self.setProperty('first_run_failures', ["test/pre-existent/failure.html", "test/pre-existent/flaky.html"])
         self.setProperty('first_run_flakies', ["test/pre-existent/flaky2.html", "test/pre-existent/flaky3.html"])
-        self.setProperty('with_patch_repeat_failures_results_nonflaky_failures', ["test/pre-existent/failure.html"])
-        self.setProperty('with_patch_repeat_failures_results_flakies', ["test/pre-existent/flaky.html"])
-        self.setProperty('without_patch_repeat_failures_results_nonflaky_failures', ["test/pre-existent/failure.html"])
-        self.setProperty('without_patch_repeat_failures_results_flakies', [])
+        self.setProperty('with_change_repeat_failures_results_nonflaky_failures', ["test/pre-existent/failure.html"])
+        self.setProperty('with_change_repeat_failures_results_flakies', ["test/pre-existent/flaky.html"])
+        self.setProperty('without_change_repeat_failures_results_nonflaky_failures', ["test/pre-existent/failure.html"])
+        self.setProperty('without_change_repeat_failures_results_flakies', [])
         self.expectOutcome(result=SUCCESS, state_string='Passed layout tests')
         step_result = self.runStep()
         self.assertEqual(len(self._emails_list), 2)
@@ -2802,11 +2802,11 @@
         self.configureCommonProperties()
         self.setProperty('first_run_failures', ["test/pre-existent/flaky1.html"])
         self.setProperty('first_run_flakies', ["test/pre-existent/flaky2.html", "test/pre-existent/flaky3.html"])
-        self.setProperty('with_patch_repeat_failures_results_nonflaky_failures', [])
-        self.setProperty('with_patch_repeat_failures_results_flakies', ["test/pre-existent/flaky1.html"])
-        self.setProperty('without_patch_repeat_failures_results_nonflaky_failures', [])
-        self.setProperty('without_patch_repeat_failures_results_flakies', [])
-        self.setProperty('without_patch_repeat_failures_retcode', SUCCESS)
+        self.setProperty('with_change_repeat_failures_results_nonflaky_failures', [])
+        self.setProperty('with_change_repeat_failures_results_flakies', ["test/pre-existent/flaky1.html"])
+        self.setProperty('without_change_repeat_failures_results_nonflaky_failures', [])
+        self.setProperty('without_change_repeat_failures_results_flakies', [])
+        self.setProperty('without_change_repeat_failures_retcode', SUCCESS)
         self.expectOutcome(result=SUCCESS, state_string='Passed layout tests')
         step_result = self.runStep()
         self.assertEqual(len(self._emails_list), 1)
@@ -2824,7 +2824,7 @@
         self.setProperty('clean_tree_run_failures', [])
         self.setProperty('clean_tree_run_flakies', ['test/pre-existent/flaky.html'])
         self.setProperty('clean_tree_run_status', WARNINGS)
-        self.expectOutcome(result=FAILURE, state_string='Found unexpected failure with patch (failure)')
+        self.expectOutcome(result=FAILURE, state_string='Found unexpected failure with change (failure)')
         step_result = self.runStep()
         self.assertEqual(len(self._emails_list), 0)
         return step_result
@@ -2838,8 +2838,10 @@
         self.setProperty('clean_tree_run_failures', [])
         self.setProperty('clean_tree_run_flakies', [])
         self.setProperty('clean_tree_run_status', FAILURE)
-        expected_infrastructure_error = 'The layout-test run with patch generated no list of results and exited with error, and the clean_tree without patch run did the same thing.'
-        self.expectOutcome(result=WARNINGS, state_string='{}\nReached the maximum number of retries (3). Unable to determine if patch is bad or there is a pre-existent infrastructure issue. (warnings)'.format(expected_infrastructure_error))
+        expected_infrastructure_error = 'The layout-test run with change generated no list of results and exited with error, and the clean_tree without change run did the same thing.'
+        self.expectOutcome(
+            result=WARNINGS,
+            state_string='{}\nReached the maximum number of retries (3). Unable to determine if change is bad or there is a pre-existent infrastructure issue. (warnings)'.format(expected_infrastructure_error))
         step_result = self.runStep()
         self.assertEqual(len(self._emails_list), 1)
         self.assertTrue(expected_infrastructure_error in self._emails_list[0])
@@ -2854,7 +2856,7 @@
         self.setProperty('retry_count', AnalyzeLayoutTestsResultsRedTree.MAX_RETRY - 1)
         self.setProperty('clean_tree_run_flakies', ['test/pre-existent/flaky.html'])
         self.setProperty('clean_tree_run_status', WARNINGS)
-        expected_infrastructure_error = 'The layout-test run with patch generated no list of results and exited with error, retrying with the hope it was a random infrastructure error.'
+        expected_infrastructure_error = 'The layout-test run with change generated no list of results and exited with error, retrying with the hope it was a random infrastructure error.'
         self.expectOutcome(result=RETRY, state_string='Unexpected infrastructure issue: {}\nRetrying build [retry count is 2 of 3] (retry)'.format(expected_infrastructure_error))
         step_result = self.runStep()
         self.assertEqual(len(self._emails_list), 1)
@@ -2861,16 +2863,16 @@
         self.assertTrue(expected_infrastructure_error in self._emails_list[0])
         return step_result
 
-    def test_step_retry_with_patch_exits_early_error(self):
+    def test_step_retry_with_change_exits_early_error(self):
         self.configureStep()
         self.configureCommonProperties()
         self.setProperty('first_run_failures', ["test/failure1.html", "test/failure2.html", "test/pre-existent/failure.html", "test/pre-existent/flaky.html"])
         self.setProperty('first_run_flakies', ["test/flaky1.html", "test/flaky2.html"])
-        self.setProperty('with_patch_repeat_failures_results_nonflaky_failures', ["test/failure1.html", "test/pre-existent/failure.html", "test/pre-existent/flaky.html"])
-        self.setProperty('with_patch_repeat_failures_results_flakies', ["test/failure2.html"])
-        self.setProperty('without_patch_repeat_failures_results_nonflaky_failures', ["test/pre-existent/failure.html"])
-        self.setProperty('without_patch_repeat_failures_results_flakies', ["test/pre-existent/flaky.html"])
-        self.setProperty('with_patch_repeat_failures_results_exceed_failure_limit', True)
+        self.setProperty('with_change_repeat_failures_results_nonflaky_failures', ["test/failure1.html", "test/pre-existent/failure.html", "test/pre-existent/flaky.html"])
+        self.setProperty('with_change_repeat_failures_results_flakies', ["test/failure2.html"])
+        self.setProperty('without_change_repeat_failures_results_nonflaky_failures', ["test/pre-existent/failure.html"])
+        self.setProperty('without_change_repeat_failures_results_flakies', ["test/pre-existent/flaky.html"])
+        self.setProperty('with_change_repeat_failures_results_exceed_failure_limit', True)
         expected_infrastructure_error = 'One of the steps for retrying the failed tests has exited early, but this steps should run without "--exit-after-n-failures" switch, so they should not exit early.'
         self.expectOutcome(result=RETRY, state_string='Unexpected infrastructure issue: {}\nRetrying build [retry count is 0 of 3] (retry)'.format(expected_infrastructure_error))
         step_result = self.runStep()
@@ -2878,16 +2880,16 @@
         self.assertTrue(expected_infrastructure_error in self._emails_list[0])
         return step_result
 
-    def test_step_retry_without_patch_exits_early_error(self):
+    def test_step_retry_without_change_exits_early_error(self):
         self.configureStep()
         self.configureCommonProperties()
         self.setProperty('first_run_failures', ["test/failure1.html", "test/failure2.html", "test/pre-existent/failure.html", "test/pre-existent/flaky.html"])
         self.setProperty('first_run_flakies', ["test/flaky1.html", "test/flaky2.html"])
-        self.setProperty('with_patch_repeat_failures_results_nonflaky_failures', ["test/failure1.html", "test/pre-existent/failure.html", "test/pre-existent/flaky.html"])
-        self.setProperty('with_patch_repeat_failures_results_flakies', ["test/failure2.html"])
-        self.setProperty('without_patch_repeat_failures_results_nonflaky_failures', ["test/pre-existent/failure.html"])
-        self.setProperty('without_patch_repeat_failures_results_flakies', ["test/pre-existent/flaky.html"])
-        self.setProperty('without_patch_repeat_failures_results_exceed_failure_limit', True)
+        self.setProperty('with_change_repeat_failures_results_nonflaky_failures', ["test/failure1.html", "test/pre-existent/failure.html", "test/pre-existent/flaky.html"])
+        self.setProperty('with_change_repeat_failures_results_flakies', ["test/failure2.html"])
+        self.setProperty('without_change_repeat_failures_results_nonflaky_failures', ["test/pre-existent/failure.html"])
+        self.setProperty('without_change_repeat_failures_results_flakies', ["test/pre-existent/flaky.html"])
+        self.setProperty('without_change_repeat_failures_results_exceed_failure_limit', True)
         expected_infrastructure_error = 'One of the steps for retrying the failed tests has exited early, but this steps should run without "--exit-after-n-failures" switch, so they should not exit early.'
         self.expectOutcome(result=RETRY, state_string='Unexpected infrastructure issue: {}\nRetrying build [retry count is 0 of 3] (retry)'.format(expected_infrastructure_error))
         step_result = self.runStep()
@@ -2895,18 +2897,18 @@
         self.assertTrue(expected_infrastructure_error in self._emails_list[0])
         return step_result
 
-    def test_step_retry_with_patch_timeouts(self):
+    def test_step_retry_with_change_timeouts(self):
         self.configureStep()
         self.configureCommonProperties()
         self.setProperty('first_run_failures', ["test/failure1.html", "test/failure2.html", "test/pre-existent/failure.html", "test/pre-existent/flaky.html"])
         self.setProperty('first_run_flakies', ["test/flaky1.html", "test/flaky2.html"])
-        self.setProperty('with_patch_repeat_failures_timedout', True)
-        self.setProperty('without_patch_repeat_failures_results_nonflaky_failures', ["test/pre-existent/failure.html"])
-        self.setProperty('without_patch_repeat_failures_results_flakies', ["test/pre-existent/flaky.html"])
+        self.setProperty('with_change_repeat_failures_timedout', True)
+        self.setProperty('without_change_repeat_failures_results_nonflaky_failures', ["test/pre-existent/failure.html"])
+        self.setProperty('without_change_repeat_failures_results_flakies', ["test/pre-existent/flaky.html"])
         self.expectOutcome(result=FAILURE, state_string='Found 2 new test failures: test/failure1.html, test/failure2.html (failure)')
         step_result = self.runStep()
         self.assertEqual(len(self._emails_list), 2)
-        expected_infrastructure_error = 'The step "layout-tests-repeat-failures-with-patch" reached the timeout but the step "layout-tests-repeat-failures-without-patch" ended. Not trying to repeat this. Reporting 2 failures from the first run.'
+        expected_infrastructure_error = 'The step "layout-tests-repeat-failures-with-change" reached the timeout but the step "layout-tests-repeat-failures-without-change" ended. Not trying to repeat this. Reporting 2 failures from the first run.'
         self.assertTrue(expected_infrastructure_error in self._emails_list[0])
         self.assertTrue('Subject: Layout test failure for Patch' in self._emails_list[1])
         for failed_test in ['test/failure1.html', 'test/failure2.html']:
@@ -2913,14 +2915,14 @@
             self.assertTrue(failed_test in self._emails_list[1])
         return step_result
 
-    def test_step_retry_with_patch_unexpected_error(self):
+    def test_step_retry_with_change_unexpected_error(self):
         self.configureStep()
         self.configureCommonProperties()
         self.setProperty('first_run_failures', ["test/failure1.html", "test/failure2.html", "test/pre-existent/failure.html", "test/pre-existent/flaky.html"])
         self.setProperty('first_run_flakies', ["test/flaky1.html", "test/flaky2.html"])
-        self.setProperty('with_patch_repeat_failures_results_nonflaky_failures', [])
-        self.setProperty('with_patch_repeat_failures_results_flakies', [])
-        self.setProperty('with_patch_repeat_failures_retcode', FAILURE)
+        self.setProperty('with_change_repeat_failures_results_nonflaky_failures', [])
+        self.setProperty('with_change_repeat_failures_results_flakies', [])
+        self.setProperty('with_change_repeat_failures_retcode', FAILURE)
         expected_infrastructure_error = 'The step "layout-tests-repeat-failures" failed to generate any list of failures or flakies and returned an error code.'
         self.expectOutcome(result=RETRY, state_string='Unexpected infrastructure issue: {}\nRetrying build [retry count is 0 of 3] (retry)'.format(expected_infrastructure_error))
         step_result = self.runStep()
@@ -2928,18 +2930,18 @@
         self.assertTrue(expected_infrastructure_error in self._emails_list[0])
         return step_result
 
-    def test_step_retry_without_patch_unexpected_error(self):
+    def test_step_retry_without_change_unexpected_error(self):
         self.configureStep()
         self.configureCommonProperties()
         self.setProperty('first_run_failures', ["test/failure1.html", "test/failure2.html", "test/pre-existent/failure.html", "test/pre-existent/flaky.html"])
         self.setProperty('first_run_flakies', ["test/flaky1.html", "test/flaky2.html"])
-        self.setProperty('with_patch_repeat_failures_results_nonflaky_failures', ["test/failure1.html", "test/failure2.html"])
-        self.setProperty('with_patch_repeat_failures_results_flakies', [])
-        self.setProperty('with_patch_repeat_failures_retcode', FAILURE)
-        self.setProperty('without_patch_repeat_failures_results_nonflaky_failures', [])
-        self.setProperty('without_patch_repeat_failures_results_flakies', [])
-        self.setProperty('without_patch_repeat_failures_retcode', FAILURE)
-        expected_infrastructure_error = 'The step "layout-tests-repeat-failures-without-patch" failed to generate any list of failures or flakies and returned an error code.'
+        self.setProperty('with_change_repeat_failures_results_nonflaky_failures', ["test/failure1.html", "test/failure2.html"])
+        self.setProperty('with_change_repeat_failures_results_flakies', [])
+        self.setProperty('with_change_repeat_failures_retcode', FAILURE)
+        self.setProperty('without_change_repeat_failures_results_nonflaky_failures', [])
+        self.setProperty('without_change_repeat_failures_results_flakies', [])
+        self.setProperty('without_change_repeat_failures_retcode', FAILURE)
+        expected_infrastructure_error = 'The step "layout-tests-repeat-failures-without-change" failed to generate any list of failures or flakies and returned an error code.'
         self.expectOutcome(result=RETRY, state_string='Unexpected infrastructure issue: {}\nRetrying build [retry count is 0 of 3] (retry)'.format(expected_infrastructure_error))
         step_result = self.runStep()
         self.assertEqual(len(self._emails_list), 1)
@@ -2946,14 +2948,14 @@
         self.assertTrue(expected_infrastructure_error in self._emails_list[0])
         return step_result
 
-    def test_step_retry_without_patch_timeouts(self):
+    def test_step_retry_without_change_timeouts(self):
         self.configureStep()
         self.configureCommonProperties()
         self.setProperty('first_run_failures', ["test/failure1.html", "test/failure2.html", "test/pre-existent/failure.html", "test/pre-existent/flaky.html"])
         self.setProperty('first_run_flakies', ["test/flaky1.html", "test/flaky2.html"])
-        self.setProperty('with_patch_repeat_failures_timedout', True)
-        self.setProperty('without_patch_repeat_failures_timedout', True)
-        expected_infrastructure_error = 'The step "layout-tests-repeat-failures-without-patch" was interrumped because it reached the timeout.'
+        self.setProperty('with_change_repeat_failures_timedout', True)
+        self.setProperty('without_change_repeat_failures_timedout', True)
+        expected_infrastructure_error = 'The step "layout-tests-repeat-failures-without-change" was interrumped because it reached the timeout.'
         self.expectOutcome(result=RETRY, state_string='Unexpected infrastructure issue: {}\nRetrying build [retry count is 0 of 3] (retry)'.format(expected_infrastructure_error))
         step_result = self.runStep()
         self.assertEqual(len(self._emails_list), 1)
@@ -2960,15 +2962,15 @@
         self.assertTrue(expected_infrastructure_error in self._emails_list[0])
         return step_result
 
-    def test_step_retry_with_patch_timeouts_and_without_patch_timeouts(self):
+    def test_step_retry_with_change_timeouts_and_without_change_timeouts(self):
         self.configureStep()
         self.configureCommonProperties()
         self.setProperty('first_run_failures', ["test/failure1.html", "test/failure2.html", "test/pre-existent/failure.html", "test/pre-existent/flaky.html"])
         self.setProperty('first_run_flakies', ["test/flaky1.html", "test/flaky2.html"])
-        self.setProperty('with_patch_repeat_failures_results_nonflaky_failures', ["test/failure1.html", "test/pre-existent/failure.html", "test/pre-existent/flaky.html"])
-        self.setProperty('with_patch_repeat_failures_results_flakies', ["test/failure2.html"])
-        self.setProperty('without_patch_repeat_failures_timedout', True)
-        expected_infrastructure_error = 'The step "layout-tests-repeat-failures-without-patch" was interrumped because it reached the timeout.'
+        self.setProperty('with_change_repeat_failures_results_nonflaky_failures', ["test/failure1.html", "test/pre-existent/failure.html", "test/pre-existent/flaky.html"])
+        self.setProperty('with_change_repeat_failures_results_flakies', ["test/failure2.html"])
+        self.setProperty('without_change_repeat_failures_timedout', True)
+        expected_infrastructure_error = 'The step "layout-tests-repeat-failures-without-change" was interrumped because it reached the timeout.'
         self.expectOutcome(result=RETRY, state_string='Unexpected infrastructure issue: {}\nRetrying build [retry count is 0 of 3] (retry)'.format(expected_infrastructure_error))
         step_result = self.runStep()
         self.assertEqual(len(self._emails_list), 1)
@@ -2980,11 +2982,11 @@
         self.configureCommonProperties()
         self.setProperty('first_run_failures', ["test/failure1.html", "test/failure2.html", "test/pre-existent/failure.html", "test/pre-existent/flaky.html"])
         self.setProperty('first_run_flakies', ["test/flaky1.html", "test/flaky2.html"])
-        self.setProperty('with_patch_repeat_failures_results_nonflaky_failures', ["test/failure1.html", "test/pre-existent/failure.html", "test/pre-existent/flaky.html"])
-        self.setProperty('with_patch_repeat_failures_results_flakies', ["test/failure2.html"])
-        self.setProperty('without_patch_repeat_failures_timedout', True)
+        self.setProperty('with_change_repeat_failures_results_nonflaky_failures', ["test/failure1.html", "test/pre-existent/failure.html", "test/pre-existent/flaky.html"])
+        self.setProperty('with_change_repeat_failures_results_flakies', ["test/failure2.html"])
+        self.setProperty('without_change_repeat_failures_timedout', True)
         self.setProperty('retry_count', 2)
-        expected_infrastructure_error = 'The step "layout-tests-repeat-failures-without-patch" was interrumped because it reached the timeout.'
+        expected_infrastructure_error = 'The step "layout-tests-repeat-failures-without-change" was interrumped because it reached the timeout.'
         self.expectOutcome(result=RETRY, state_string='Unexpected infrastructure issue: {}\nRetrying build [retry count is 2 of 3] (retry)'.format(expected_infrastructure_error))
         step_result = self.runStep()
         self.assertEqual(len(self._emails_list), 1)
@@ -2996,12 +2998,12 @@
         self.configureCommonProperties()
         self.setProperty('first_run_failures', ["test/failure1.html", "test/failure2.html", "test/pre-existent/failure.html", "test/pre-existent/flaky.html"])
         self.setProperty('first_run_flakies', ["test/flaky1.html", "test/flaky2.html"])
-        self.setProperty('with_patch_repeat_failures_results_nonflaky_failures', ["test/failure1.html", "test/pre-existent/failure.html", "test/pre-existent/flaky.html"])
-        self.setProperty('with_patch_repeat_failures_results_flakies', ["test/failure2.html"])
-        self.setProperty('without_patch_repeat_failures_timedout', True)
+        self.setProperty('with_change_repeat_failures_results_nonflaky_failures', ["test/failure1.html", "test/pre-existent/failure.html", "test/pre-existent/flaky.html"])
+        self.setProperty('with_change_repeat_failures_results_flakies', ["test/failure2.html"])
+        self.setProperty('without_change_repeat_failures_timedout', True)
         self.setProperty('retry_count', 3)
-        expected_infrastructure_error = 'The step "layout-tests-repeat-failures-without-patch" was interrumped because it reached the timeout.'
-        self.expectOutcome(result=WARNINGS, state_string='{}\nReached the maximum number of retries (3). Unable to determine if patch is bad or there is a pre-existent infrastructure issue. (warnings)'.format(expected_infrastructure_error))
+        expected_infrastructure_error = 'The step "layout-tests-repeat-failures-without-change" was interrumped because it reached the timeout.'
+        self.expectOutcome(result=WARNINGS, state_string='{}\nReached the maximum number of retries (3). Unable to determine if change is bad or there is a pre-existent infrastructure issue. (warnings)'.format(expected_infrastructure_error))
         step_result = self.runStep()
         self.assertEqual(len(self._emails_list), 1)
         self.assertTrue(expected_infrastructure_error in self._emails_list[0])

Modified: trunk/Tools/ChangeLog (289983 => 289984)


--- trunk/Tools/ChangeLog	2022-02-17 01:10:43 UTC (rev 289983)
+++ trunk/Tools/ChangeLog	2022-02-17 01:18:44 UTC (rev 289984)
@@ -1,3 +1,26 @@
+2022-02-15  Jonathan Bedard  <jbed...@apple.com>
+
+        [EWS] Rename 'patch' to 'change' in layout-test steps
+        https://bugs.webkit.org/show_bug.cgi?id=236674
+        <rdar://problem/88992222>
+
+        Reviewed by Aakash Jain.
+
+        * CISupport/ews-build/steps.py:
+        (RunWebKitTestsWithoutChange.setLayoutTestCommand):
+        (AnalyzeLayoutTestsResults.report_failure):
+        (AnalyzeLayoutTestsResults.retry_build):
+        (RunWebKitTestsRepeatFailuresRedTree.evaluateCommand):
+        (RunWebKitTestsRepeatFailuresRedTree.commandComplete):
+        (RunWebKitTestsRepeatFailuresWithoutChangeRedTree): Renamed.
+        (RunWebKitTestsRepeatFailuresWithoutChangeRedTree.setLayoutTestCommand):
+        (RunWebKitTestsRepeatFailuresWithoutChangeRedTree.evaluateCommand):
+        (RunWebKitTestsRepeatFailuresWithoutChangeRedTree.commandComplete):
+        (RunWebKitTestsRepeatFailuresWithoutPatchRedTree): Renamed.
+        (AnalyzeLayoutTestsResultsRedTree.report_infrastructure_issue_and_maybe_retry_build):
+        (AnalyzeLayoutTestsResultsRedTree.start):
+        * CISupport/ews-build/steps_unittest.py:
+
 2022-02-16  Jonathan Bedard  <jbed...@apple.com>
 
         [git-webkit] Comment and close issue when landing PR
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to