Now using a refined buildbot plugin which counts and separates the different types of URL failures and displays them in the waterfall status box.
- Legacy-Id: 293
This commit is contained in:
parent
c89000f253
commit
9bb6d08ed2
|
@ -9,19 +9,20 @@ except ImportError:
|
|||
from StringIO import StringIO
|
||||
|
||||
class DjangoTest(ShellCommand):
|
||||
name = "django test"
|
||||
name = "django-test"
|
||||
command = ["python", "manage.py", "test"]
|
||||
description = ["running django test"]
|
||||
descriptionDone = ["django test"]
|
||||
description = ["running django-test"]
|
||||
descriptionDone = ["django-test"]
|
||||
flunkOnFailure = False
|
||||
flunkingIssues = ["exception", "failure"] # any pyflakes lines like this cause FAILURE
|
||||
|
||||
msgtypes = ("exception", "failure", "skipped", "diffs", "ok")
|
||||
msgtypes = ("exceptions", "failures", "skipped", "diffs", "pass")
|
||||
|
||||
def createSummary(self, log):
|
||||
summaries = {}
|
||||
typelist = {}
|
||||
counts = {}
|
||||
m = None
|
||||
def count(m):
|
||||
if not m in counts:
|
||||
counts[m] = 0
|
||||
|
@ -38,24 +39,25 @@ class DjangoTest(ShellCommand):
|
|||
count(m)
|
||||
if re.search("^Fail \d+ ", line):
|
||||
m = "fail_%s" % line.split()[1]
|
||||
typelist["failure"].add(m)
|
||||
typelist["failures"].add(m)
|
||||
count(m)
|
||||
if re.search("^Skipping ", line):
|
||||
m = "skipped"
|
||||
typelist["skipped"].add(m)
|
||||
count(m)
|
||||
if re.search("^Diff: .* ", line):
|
||||
m = "diff_%s" % line.skip()[1]
|
||||
if re.search("^Diff: .*", line):
|
||||
m = "diff_%s" % line.split()[1]
|
||||
typelist["diffs"].add(m)
|
||||
count(m)
|
||||
if re.search("^OK (\d+) ", line):
|
||||
if re.search("^OK \d+ ", line):
|
||||
m = "pass_%s" % line.split()[1]
|
||||
typelist["pass"].add(m)
|
||||
count(m)
|
||||
if re.search("^Pass (\d+) ", line):
|
||||
if re.search("^Pass \d+ ", line):
|
||||
m = "pass_%s" % line.split()[1]
|
||||
typelist["pass"].add(m)
|
||||
count(m)
|
||||
if m:
|
||||
if not m in summaries:
|
||||
summaries[m] = []
|
||||
summaries[m].append(line)
|
||||
|
@ -67,14 +69,17 @@ class DjangoTest(ShellCommand):
|
|||
self.descriptionDone.append("%s=%d" % (msg, counts[msg]))
|
||||
self.addCompleteLog(msg, "".join(summaries[msg]))
|
||||
self.setProperty("urltest-%s" % type, sum([counts[msg] for msg in typelist[type]]))
|
||||
self.setProperty("urltest-total", sum(counts.values()))
|
||||
self.setProperty("urltest-total", sum([counts[msg] for msg in counts if msg not in typelist["pass"]]))
|
||||
|
||||
def evaluateCommand(self, cmd):
|
||||
if cmd.rc != 0:
|
||||
return FAILURE
|
||||
for type in self.flunkingIssues:
|
||||
try:
|
||||
if self.getProperty("urltest-%s" % type):
|
||||
return FAILURE
|
||||
except KeyError:
|
||||
pass
|
||||
if self.getProperty("urltest-total"):
|
||||
return WARNINGS
|
||||
return SUCCESS
|
||||
|
|
|
@ -94,13 +94,13 @@ from buildbot.steps.source import SVN
|
|||
from buildbot.steps.dummy import Dummy
|
||||
from buildbot.steps.python import PyFlakes
|
||||
from buildbot.steps.shell import ShellCommand, Test
|
||||
from buildbot_plugins import UrlTest
|
||||
from buildbot_plugins import DjangoTest
|
||||
|
||||
f1 = factory.BuildFactory()
|
||||
f1.addStep(SVN, svnurl="http://svn.tools.ietf.org/svn/tools/ietfdb/trunk/", username="buildbot@tools.ietf.org", password="U64#GUxr")
|
||||
f1.addStep(ShellCommand, name="test-setup", command=["test/test-setup"])
|
||||
f1.addStep(PyFlakes, command=["test/run-pyflakes", "ietf"], warnOnFailure=True)
|
||||
f1.addStep(Test, name="django-tests", command=["python", "ietf/manage.py", "test"], env={'PYTHONPATH': ["test/lib",]} )
|
||||
f1.addStep(DjangoTest, command=["python", "ietf/manage.py", "test"], env={'PYTHONPATH': ["test/lib",]} )
|
||||
f1.addStep(ShellCommand, name="test-teardown", command=["test/test-teardown"])
|
||||
|
||||
b1 = {'name': "merlot-builder-1",
|
||||
|
|
Loading…
Reference in a new issue