[SCM] build.samba.org - branch master updated

Jelmer Vernooij jelmer at samba.org
Sat Nov 6 12:14:15 MDT 2010


The branch, master has been updated
       via  7adca02 Add convenience class for build status.
       via  9ea3ef1 Merge build_status_from_logs tests.
      from  448ed75 Add my copyright

http://gitweb.samba.org/?p=build-farm.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 7adca02a235bd96ef30eb7182f817192ccd5b7f4
Author: Jelmer Vernooij <jelmer at samba.org>
Date:   Sat Nov 6 19:14:45 2010 +0100

    Add convenience class for build status.

commit 9ea3ef139887c465afa08fa68f670072f25a706c
Author: Jelmer Vernooij <jelmer at samba.org>
Date:   Sat Nov 6 18:58:35 2010 +0100

    Merge build_status_from_logs tests.

-----------------------------------------------------------------------

Summary of changes:
 buildfarm/data.py            |   16 +++++-
 buildfarm/tests/test_data.py |  101 +++++++++++++++++++++---------------------
 web/build.py                 |   12 ++---
 3 files changed, 68 insertions(+), 61 deletions(-)


Changeset truncated at 500 lines:

diff --git a/buildfarm/data.py b/buildfarm/data.py
index 0e1e94f..2bbbd74 100644
--- a/buildfarm/data.py
+++ b/buildfarm/data.py
@@ -29,6 +29,16 @@ import time
 import util
 
 
+class BuildStatus(object):
+
+    def __init__(self, stages, other_failures):
+        self.stages = stages
+        self.other_failures = other_failures
+
+    def __str__(self):
+        return repr((self.stages, self.other_failures))
+
+
 def check_dir_exists(kind, path):
     if not os.path.isdir(path):
         raise Exception("%s directory %s does not exist" % (kind, path))
@@ -86,7 +96,7 @@ def build_status_from_logs(log, err):
     else:
         sstatus = None
 
-    return ((cstatus, bstatus, istatus, tstatus, sstatus), other_failures)
+    return BuildStatus((cstatus, bstatus, istatus, tstatus, sstatus), other_failures)
 
 
 def lcov_extract_percentage(text):
@@ -274,12 +284,12 @@ class CachingBuild(Build):
             st2 = None
 
         if st2 and st1.st_ctime <= st2.st_mtime:
-            return eval(util.FileLoad(cachefile))
+            return BuildStatus(*eval(util.FileLoad(cachefile)))
 
         ret = super(CachingBuild, self).status()
 
         if not self._store.readonly:
-            util.FileSave(cachefile, repr(ret))
+            util.FileSave(cachefile, str(ret))
 
         return ret
 
diff --git a/buildfarm/tests/test_data.py b/buildfarm/tests/test_data.py
index 6ef0a18..b566c73 100755
--- a/buildfarm/tests/test_data.py
+++ b/buildfarm/tests/test_data.py
@@ -32,47 +32,6 @@ class NonexistantTests(unittest.TestCase):
         self.assertRaises(
             Exception, data.BuildResultStore, "somedirthatdoesn'texist", None)
 
-class BuildStatusFromLogs(testtools.TestCase):
-
-
-    def test_build_status_from_logs(self):
-        log = """
-TEST STATUS:1
-"""
-        res = data.build_status_from_logs(log, "")
-        self.assertEquals(res[0][3], 1)
-        log = """
-TEST STATUS:  1
-"""
-        res = data.build_status_from_logs(log, "")
-        self.assertEquals(res[0][3], 1)
-        log = """
-CONFIGURE STATUS: 2
-TEST STATUS:  1
-CC_CHECKER STATUS:	2
-"""
-        res = data.build_status_from_logs(log, "")
-        self.assertEquals(res[0][4], 2)
-        log = """
-CONFIGURE STATUS: 2
-ACTION PASSED: test
-CC_CHECKER STATUS:	2
-"""
-        res = data.build_status_from_logs(log, "")
-        self.assertEquals(res[0][4], 2)
-        self.assertEquals(res[0][3], 255)
-        log = """
-CONFIGURE STATUS: 2
-ACTION PASSED: test
-testsuite-success: toto
-testsuite-failure: foo
-testsuite-failure: bar
-testsuite-failure: biz
-CC_CHECKER STATUS:	2
-"""
-        res = data.build_status_from_logs(log, "")
-        self.assertEquals(res[0][0], 2)
-        self.assertEquals(res[0][3], 3)
 
 class ReadTreesFromConfTests(testtools.TestCase):
 
@@ -213,23 +172,63 @@ error3""")
         self.assertTrue(self.x.has_host("charis"))
 
 
-
-class LogParserTests(unittest.TestCase):
+class BuildStatusFromLogs(testtools.TestCase):
 
     def test_nothing(self):
-        self.assertEquals(((None, None, None, None, None), set()),
-            data.build_status_from_logs("", ""))
+        s = data.build_status_from_logs("", "")
+        self.assertEquals((None, None, None, None, None), s.stages)
+        self.assertEquals(set(), s.other_failures)
 
     def test_disk_full(self):
-        self.assertEquals(((None, None, None, None, None), set(["disk full"])),
+        self.assertEquals(set(["disk full"]),
             data.build_status_from_logs("foo\nbar\nNo space left on device\nla\n",
-                ""))
-        self.assertEquals(((None, None, None, None, None), set(["disk full"])),
+                "").other_failures)
+        self.assertEquals(set(["disk full"]),
             data.build_status_from_logs(
-                "", "foo\nbar\nNo space left on device\nla\n"))
+                "", "foo\nbar\nNo space left on device\nla\n").other_failures)
 
     def test_timeout(self):
-        self.assertEquals(((None, None, None, None, None), set(["timeout"])),
+        self.assertEquals(set(["timeout"]),
             data.build_status_from_logs("foo\nbar\nmaximum runtime exceeded\nla\n",
-                ""))
+                "").other_failures)
+
+    def test_status(self):
+        log = """
+TEST STATUS:1
+"""
+        res = data.build_status_from_logs(log, "")
+        self.assertEquals(res.stages[3], 1)
+        log = """
+TEST STATUS:  1
+"""
+        res = data.build_status_from_logs(log, "")
+        self.assertEquals(res.stages[3], 1)
+        log = """
+CONFIGURE STATUS: 2
+TEST STATUS:  1
+CC_CHECKER STATUS:	2
+"""
+        res = data.build_status_from_logs(log, "")
+        self.assertEquals(res.stages[4], 2)
+        log = """
+CONFIGURE STATUS: 2
+ACTION PASSED: test
+CC_CHECKER STATUS:	2
+"""
+        res = data.build_status_from_logs(log, "")
+        self.assertEquals(res.stages[4], 2)
+        self.assertEquals(res.stages[3], 255)
+        log = """
+CONFIGURE STATUS: 2
+ACTION PASSED: test
+testsuite-success: toto
+testsuite-failure: foo
+testsuite-failure: bar
+testsuite-failure: biz
+CC_CHECKER STATUS:	2
+"""
+        res = data.build_status_from_logs(log, "")
+        self.assertEquals(res.stages[0], 2)
+        self.assertEquals(res.stages[3], 3)
+
 
diff --git a/web/build.py b/web/build.py
index 7c4c44a..0c22141 100755
--- a/web/build.py
+++ b/web/build.py
@@ -80,7 +80,6 @@ def build_link(myself, tree, host, compiler, rev, status):
 
 
 def html_build_status(status):
-    ((cstatus, bstatus, istatus, tstatus, sstatus), other_failures) = status
     def span(classname, contents):
         return "<span class=\"%s\">%s</span>" % (classname, contents)
 
@@ -92,15 +91,14 @@ def html_build_status(status):
         else:
             return span("status failed", st)
     ostatus = ""
-    if "panic" in other_failures:
+    if "panic" in status.other_failures:
         ostatus += "/"+span("status panic", "PANIC")
-    if "disk full" in other_failures:
+    if "disk full" in status.other_failures:
         ostatus += "/"+span("status failed", "disk full")
-    if "timeout" in other_failures:
+    if "timeout" in status.other_failures:
         ostatus += "/"+span("status failed", "timeout")
-    if sstatus is not None:
-        ostatus += "/"+span("status checker", sstatus)
-    return "%s/%s/%s/%s%s" % (span_status(cstatus), span_status(bstatus), span_status(istatus), span_status(tstatus), ostatus)
+    bstatus = "/".join([span_status(s) for s in status.stages])
+    return bstatus + ostatus
 
 
 def build_status(myself, tree, host, compiler, rev=None):


-- 
build.samba.org


More information about the samba-cvs mailing list