From 9bb6d08ed2712670f235de908b7251b305c00219 Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Sun, 10 Jun 2007 17:23:13 +0000 Subject: [PATCH] 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 --- .../master/ietfdb/buildbot_plugins.py | 35 +++++++++++-------- test/buildbot/master/ietfdb/master.cfg | 4 +-- 2 files changed, 22 insertions(+), 17 deletions(-) diff --git a/test/buildbot/master/ietfdb/buildbot_plugins.py b/test/buildbot/master/ietfdb/buildbot_plugins.py index 2c6c28ca9..839dc8d08 100644 --- a/test/buildbot/master/ietfdb/buildbot_plugins.py +++ b/test/buildbot/master/ietfdb/buildbot_plugins.py @@ -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,27 +39,28 @@ 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 not m in summaries: - summaries[m] = [] - summaries[m].append(line) + if m: + if not m in summaries: + summaries[m] = [] + summaries[m].append(line) self.descriptionDone = self.descriptionDone[:] for type in self.msgtypes: @@ -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: - if self.getProperty("urltest-%s" % type): - return FAILURE + try: + if self.getProperty("urltest-%s" % type): + return FAILURE + except KeyError: + pass if self.getProperty("urltest-total"): return WARNINGS return SUCCESS diff --git a/test/buildbot/master/ietfdb/master.cfg b/test/buildbot/master/ietfdb/master.cfg index c810e5836..f0bbb9a7f 100644 --- a/test/buildbot/master/ietfdb/master.cfg +++ b/test/buildbot/master/ietfdb/master.cfg @@ -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",