Title: [265391] trunk/Tools
Revision
265391
Author
aakash_j...@apple.com
Date
2020-08-07 14:38:00 -0700 (Fri, 07 Aug 2020)

Log Message

Windows EWS should filter build logs to show errors
https://bugs.webkit.org/show_bug.cgi?id=211344

Reviewed by Jonathan Bedard.

* BuildSlaveSupport/ews-build/steps.py:
(BuildLogLineObserver.__init__): Added searchString and includeRelatedLines arguments.
(BuildLogLineObserver.outLineReceived): Added support for generic searchString and enabling/disabling inclusion of related lines.
(CompileWebKit.start): Enabled log filtering for windows and wincairo.
(AnalyzeCompileWebKitResults.filter_logs_containing_error): Made it accept any generic searchString.
(AnalyzeCompileWebKitResults.send_email_for_new_build_failure):  Pass different searchString for windows and wincairo.
(AnalyzeCompileWebKitResults.send_email_for_preexisting_build_failure): Ditto.

Modified Paths

Diff

Modified: trunk/Tools/BuildSlaveSupport/ews-build/steps.py (265390 => 265391)


--- trunk/Tools/BuildSlaveSupport/ews-build/steps.py	2020-08-07 21:23:08 UTC (rev 265390)
+++ trunk/Tools/BuildSlaveSupport/ews-build/steps.py	2020-08-07 21:38:00 UTC (rev 265391)
@@ -1251,13 +1251,23 @@
 
 
 class BuildLogLineObserver(logobserver.LogLineObserver, object):
-    def __init__(self, errorReceived=None):
+    def __init__(self, errorReceived, searchString='rror:', includeRelatedLines=True):
         self.errorReceived = errorReceived
+        self.searchString = searchString
+        self.includeRelatedLines = includeRelatedLines
         self.error_context_buffer = []
         self.whitespace_re = re.compile('^[\s]*$')
         super(BuildLogLineObserver, self).__init__()
 
     def outLineReceived(self, line):
+        if not self.errorReceived:
+            return
+
+        if not self.includeRelatedLines:
+            if self.searchString in line:
+                self.errorReceived(line)
+            return
+
         is_whitespace = self.whitespace_re.search(line) is not None
         if is_whitespace:
             self.error_context_buffer = []
@@ -1264,7 +1274,7 @@
         else:
             self.error_context_buffer.append(line)
 
-        if 'rror:' in line and self.errorReceived:
+        if self.searchString in line:
             map(self.errorReceived, self.error_context_buffer)
             self.error_context_buffer = []
 
@@ -1291,7 +1301,9 @@
         architecture = self.getProperty('architecture')
         additionalArguments = self.getProperty('additionalArguments')
 
-        if platform != 'windows':
+        if platform in ['win', 'wincairo']:
+            self.addLogObserver('stdio', BuildLogLineObserver(self.errorReceived, searchString='error ', includeRelatedLines=False))
+        else:
             self.addLogObserver('stdio', BuildLogLineObserver(self.errorReceived))
 
         if additionalArguments:
@@ -1434,12 +1446,12 @@
                 return step
         return None
 
-    def filter_logs_containing_error(self, logs, max_num_lines=10):
+    def filter_logs_containing_error(self, logs, searchString='rror:', max_num_lines=10):
         if not logs:
             return None
         filtered_logs = []
         for line in logs.splitlines():
-            if 'rror:' in line:
+            if searchString in line:
                 filtered_logs.append(line)
         return '\n'.join(filtered_logs[-max_num_lines:])
 
@@ -1450,8 +1462,13 @@
             worker_name = self.getProperty('workername', '')
             patch_id = self.getProperty('patch_id', '')
             patch_author = self.getProperty('patch_author', '')
+            platform = self.getProperty('platform', '')
             build_url = '{}#/builders/{}/builds/{}'.format(self.master.config.buildbotURL, self.build._builderid, self.build.number)
-            logs = self.filter_logs_containing_error(self.error_logs.get(self.compile_webkit_step))
+            logs = self.error_logs.get(self.compile_webkit_step)
+            if platform in ['win', 'wincairo']:
+                logs = self.filter_logs_containing_error(logs, searchString='error ')
+            else:
+                logs = self.filter_logs_containing_error(logs)
 
             email_subject = 'Build failure for Patch {}: {}'.format(patch_id, bug_title)
             email_text = 'EWS has detected build failure on {} while testing Patch {}.'.format(builder_name, patch_id)
@@ -1467,8 +1484,13 @@
         try:
             builder_name = self.getProperty('buildername', '')
             worker_name = self.getProperty('workername', '')
+            platform = self.getProperty('platform', '')
             build_url = '{}#/builders/{}/builds/{}'.format(self.master.config.buildbotURL, self.build._builderid, self.build.number)
-            logs = self.filter_logs_containing_error(self.error_logs.get(self.compile_webkit_step))
+            logs = self.error_logs.get(self.compile_webkit_step)
+            if platform in ['win', 'wincairo']:
+                logs = self.filter_logs_containing_error(logs, searchString='error ')
+            else:
+                logs = self.filter_logs_containing_error(logs)
 
             email_subject = 'Build failure on trunk on {}'.format(builder_name)
             email_text = 'Failed to build WebKit without patch in {}\n\nBuilder: {}\n\nWorker: {}'.format(build_url, builder_name, worker_name)

Modified: trunk/Tools/ChangeLog (265390 => 265391)


--- trunk/Tools/ChangeLog	2020-08-07 21:23:08 UTC (rev 265390)
+++ trunk/Tools/ChangeLog	2020-08-07 21:38:00 UTC (rev 265391)
@@ -1,3 +1,18 @@
+2020-08-07  Aakash Jain  <aakash_j...@apple.com>
+
+        Windows EWS should filter build logs to show errors
+        https://bugs.webkit.org/show_bug.cgi?id=211344
+
+        Reviewed by Jonathan Bedard.
+
+        * BuildSlaveSupport/ews-build/steps.py:
+        (BuildLogLineObserver.__init__): Added searchString and includeRelatedLines arguments.
+        (BuildLogLineObserver.outLineReceived): Added support for generic searchString and enabling/disabling inclusion of related lines.
+        (CompileWebKit.start): Enabled log filtering for windows and wincairo.
+        (AnalyzeCompileWebKitResults.filter_logs_containing_error): Made it accept any generic searchString.
+        (AnalyzeCompileWebKitResults.send_email_for_new_build_failure):  Pass different searchString for windows and wincairo.
+        (AnalyzeCompileWebKitResults.send_email_for_preexisting_build_failure): Ditto.
+
 2020-08-07  John Wilander  <wilan...@apple.com>
 
         Experimental: Cap the expiry of persistent cookies set in 3rd-party CNAME cloaked HTTP responses
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to