[zorg] r230575 - Modify LitLogObserver class to accept optional argument to parse summary lines only
Ying Chen
chying at google.com
Wed Feb 25 15:41:26 PST 2015
Author: chying
Date: Wed Feb 25 17:41:23 2015
New Revision: 230575
URL: http://llvm.org/viewvc/llvm-project?rev=230575&view=rev
Log:
Modify LitLogObserver class to accept optional argument to parse summary lines only
Summary:
Modify LitLogObserver class to accept optional argument to parse summary lines only
- This patch is to address the problem that regular stdio output messages be parsed as result steps
- Add flag to start parser only after summary marker has been matched
Test Plan:
Create bulidbot master on local workstation
Create slave and connect to local master
Monitor the build status with check-ins
Reviewers: sivachandra, ovyalov, chaoren
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D7877
Modified:
zorg/trunk/zorg/buildbot/builders/LLDBBuilder.py
zorg/trunk/zorg/buildbot/commands/LitTestCommand.py
Modified: zorg/trunk/zorg/buildbot/builders/LLDBBuilder.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/zorg/buildbot/builders/LLDBBuilder.py?rev=230575&r1=230574&r2=230575&view=diff
==============================================================================
--- zorg/trunk/zorg/buildbot/builders/LLDBBuilder.py (original)
+++ zorg/trunk/zorg/buildbot/builders/LLDBBuilder.py Wed Feb 25 17:41:23 2015
@@ -303,6 +303,7 @@ def getLLDBUbuntuCMakeBuildFactory(
'ninja',
'check-lldb'],
description="test lldb",
+ parseSummaryOnly=True,
env=env,
workdir='%s' % llvm_builddir))
return f
Modified: zorg/trunk/zorg/buildbot/commands/LitTestCommand.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/zorg/buildbot/commands/LitTestCommand.py?rev=230575&r1=230574&r2=230575&view=diff
==============================================================================
--- zorg/trunk/zorg/buildbot/commands/LitTestCommand.py (original)
+++ zorg/trunk/zorg/buildbot/commands/LitTestCommand.py Wed Feb 25 17:41:23 2015
@@ -19,9 +19,11 @@ class LitLogObserver(LogLineObserver):
# These are the codes for which we will include the log output in the buildbot
# step results.
- failingCodes = set(['FAIL', 'XPASS', 'KPASS', 'UNRESOLVED'])
+ failingCodes = set(['FAIL', 'XPASS', 'KPASS', 'UNRESOLVED', 'TIMEOUT'])
+ # Regular expressions for start of summary marker.
+ kStartSummaryRE = re.compile(r'^Failing Tests \(\d*\)$')
- def __init__(self, maxLogs=None):
+ def __init__(self, maxLogs=None, parseSummaryOnly=False):
LogLineObserver.__init__(self)
self.resultCounts = {}
self.maxLogs = maxLogs
@@ -32,6 +34,8 @@ class LitLogObserver(LogLineObserver):
# If non-null, a list of lines in the current log.
self.activeVerboseLog = None
+ # Current line will be parsed as result steps only if parserStarted is True
+ self.parserStarted = not parseSummaryOnly
def hadFailure(self):
for code in self.failingCodes:
@@ -97,13 +101,19 @@ class LitLogObserver(LogLineObserver):
if self.lastTestResult:
self.testInfoFinished()
- # Check for a new test status line.
- m = self.kTestLineRE.match(line.strip())
- if m:
- # Remember the last test result and update the result counts.
- self.lastTestResult = (code, name) = m.groups()
- self.resultCounts[code] = self.resultCounts.get(code, 0) + 1
- return
+ if self.kStartSummaryRE.match(line):
+ self.parserStarted = True;
+
+ #Assign result line only if summary marker has been matched
+ #Or if all lines should be parsed
+ if self.parserStarted is True:
+ # Check for a new test status line.
+ m = self.kTestLineRE.match(line.strip())
+ if m:
+ # Remember the last test result and update the result counts.
+ self.lastTestResult = (code, name) = m.groups()
+ self.resultCounts[code] = self.resultCounts.get(code, 0) + 1
+ return
class LitTestCommand(Test):
resultNames = {'FAIL':'unexpected failures',
@@ -118,12 +128,13 @@ class LitTestCommand(Test):
'IMPROVED':'runtime performance improvement',
'UNSUPPORTED':'unsupported tests'}
- def __init__(self, ignore=[], flaky=[], max_logs=20,
+ def __init__(self, ignore=[], flaky=[], max_logs=20, parseSummaryOnly=False,
*args, **kwargs):
Test.__init__(self, *args, **kwargs)
self.maxLogs = int(max_logs)
- self.logObserver = LitLogObserver(self.maxLogs)
+ self.logObserver = LitLogObserver(self.maxLogs, parseSummaryOnly)
self.addFactoryArguments(max_logs=max_logs)
+ self.addFactoryArguments(parseSummaryOnly=parseSummaryOnly)
self.addLogObserver('stdio', self.logObserver)
def evaluateCommand(self, cmd):
More information about the llvm-commits
mailing list