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

Jelmer Vernooij jelmer at samba.org
Tue Nov 2 02:19:05 MDT 2010


The branch, master has been updated
       via  9e71906 Raise NoSuchBuildError rather than silently pretending files are empty.
       via  d72af4e add tests for read_log/read_err.
      from  d273a3a Add more tests, consistent parameter ordering.

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


- Log -----------------------------------------------------------------
commit 9e719068ee4f96cb991876e662c86d58b1a98799
Author: Jelmer Vernooij <jelmer at samba.org>
Date:   Tue Nov 2 09:19:30 2010 +0100

    Raise NoSuchBuildError rather than silently pretending files are empty.

commit d72af4e7d026f8d3d8bc06d6a98ac0058cb2ca70
Author: Jelmer Vernooij <jelmer at samba.org>
Date:   Tue Nov 2 09:08:53 2010 +0100

    add tests for read_log/read_err.

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

Summary of changes:
 buildfarm/data.py            |   18 +++++++++++-------
 buildfarm/tests/__init__.py  |   12 +++++++++---
 buildfarm/tests/test_data.py |   13 +++++++++++++
 web/build.py                 |   23 ++++++++++++-----------
 4 files changed, 45 insertions(+), 21 deletions(-)


Changeset truncated at 500 lines:

diff --git a/buildfarm/data.py b/buildfarm/data.py
index 8458c58..d083698 100644
--- a/buildfarm/data.py
+++ b/buildfarm/data.py
@@ -167,7 +167,7 @@ class BuildResultStore(object):
             return time.time() - st.st_ctime
 
     def build_revision_details(self, tree, host, compiler, rev=None):
-        """get the svn revision of build"""
+        """get the revision of build"""
         file = self.build_fname(tree, host, compiler, rev)
         cachef = self.cache_fname(tree, host, compiler, rev)
 
@@ -183,7 +183,7 @@ class BuildResultStore(object):
             st1 = os.stat("%s.log" % file)
         except OSError:
             # File does not exist
-            return "NO SUCH FILE"
+            raise NoSuchBuildError(tree, host, compiler, rev)
 
         try:
             st2 = os.stat("%s.revision" % cachef)
@@ -306,7 +306,7 @@ class BuildResultStore(object):
             st1 = os.stat("%s.log" % file)
         except OSError:
             # No such file
-            return "Unknown Build"
+            raise NoSuchBuildError(tree, host, compiler, rev)
 
         try:
             st2 = os.stat(cachefile)
@@ -394,7 +394,7 @@ class BuildResultStore(object):
             st1 = os.stat(file)
         except OSError:
             # File does not exist
-            return ""
+            raise NoSuchBuildError(tree, self.LCOVHOST, "lcov")
         try:
             st2 = os.stat(cachefile)
         except OSError:
@@ -446,11 +446,15 @@ class BuildResultStore(object):
 
         return ret
 
-    def read_log(self, tree, host, compiler, rev):
+    def read_log(self, tree, host, compiler, rev=None):
         """read full log file"""
-        return util.FileLoad(self.build_fname(tree, host, compiler, rev)+".log")
+        f = open(self.build_fname(tree, host, compiler, rev)+".log", "r")
+        try:
+            return f.read()
+        finally:
+            f.close()
 
-    def read_err(self, tree, host, compiler, rev):
+    def read_err(self, tree, host, compiler, rev=None):
         """read full err file"""
         return util.FileLoad(self.build_fname(tree, host, compiler, rev)+".err")
 
diff --git a/buildfarm/tests/__init__.py b/buildfarm/tests/__init__.py
index ec4f3fc..130c3b9 100644
--- a/buildfarm/tests/__init__.py
+++ b/buildfarm/tests/__init__.py
@@ -25,17 +25,23 @@ class BuildFarmTestCase(TestCase):
     """Test case class that provides a build farm data directory and convenience methods.
     """
 
-    def create_mock_logfile(self, tree, host, compiler, rev=None):
+    def create_mock_logfile(self, tree, host, compiler, rev=None, 
+            kind="stdout", contents="FOO"):
         basename = "build.%s.%s.%s" % (tree, host, compiler)
         if rev:
             basename += "-%s" % rev
             path = os.path.join(self.path, "data", "oldrevs", basename + "-%s" % rev)
         else:
             path = os.path.join(self.path, "data", "upload", basename)
-        path += ".log"
+        if kind == "stdout":
+            path += ".log"
+        elif kind == "stderr":
+            path += ".err"
+        else:
+            raise ValueError("Unknown log kind %r" % kind)
         f = open(path, 'w+')
         try:
-            f.write("foo\n")
+            f.write(contents)
         finally:
             f.close()
         return path
diff --git a/buildfarm/tests/test_data.py b/buildfarm/tests/test_data.py
index 778620f..d265125 100755
--- a/buildfarm/tests/test_data.py
+++ b/buildfarm/tests/test_data.py
@@ -78,3 +78,16 @@ class BuildResultStoreTests(BuildFarmTestCase):
     def test_build_age_ctime_nonexistant(self):
         self.assertRaises(data.NoSuchBuildError, self.x.build_age_ctime, "tdb",
             "charis", "cc")
+
+    def test_read_log(self):
+        path = self.create_mock_logfile("tdb", "charis", "cc",
+            contents="This is what a log file looks like.")
+        log = self.x.read_log("tdb", "charis", "cc")
+        self.assertEquals("This is what a log file looks like.", log)
+
+    def test_read_err(self):
+        path = self.create_mock_logfile("tdb", "charis", "cc",
+            kind="stderr",
+            contents="This is what an stderr file looks like.")
+        log = self.x.read_err("tdb", "charis", "cc")
+        self.assertEquals("This is what an stderr file looks like.", log)
diff --git a/web/build.py b/web/build.py
index a17eba6..df583aa 100755
--- a/web/build.py
+++ b/web/build.py
@@ -129,15 +129,12 @@ def view_summary(myself, output_type):
     for host in hosts:
         for compiler in compilers:
             for tree in trees:
-                status = build_status(myself, tree, host, compiler, "")
-                if status.startswith("Unknown Build"):
-                    continue
                 try:
-                    age_mtime = db.build_age_mtime(tree, host, compiler)
+                    status = build_status(myself, tree, host, compiler)
                 except data.NoSuchBuildError:
-                    pass
-                else:
-                    host_count[tree]+=1
+                    continue
+                age_mtime = db.build_age_mtime(tree, host, compiler)
+                host_count[tree]+=1
 
                 if "status failed" in status:
                     broken_count[tree]+=1
@@ -168,7 +165,11 @@ def view_summary(myself, output_type):
             else:
                     yield "<td>"
             yield "%d</td>" % panic_count[tree]
-            yield "<td>%s</td>" % db.lcov_status(tree)
+            try:
+                lcov_data = db.lcov_status(tree)
+            except data.NoSuchBuildError:
+                lcov_data = ""
+            yield "<td>%s</td>" % lcov_data
             yield "</tr>"
 
     if output_type == 'text':
@@ -240,12 +241,12 @@ def view_recent_builds(myself, tree, sort_by):
 
     for host in hosts:
         for compiler in compilers:
-            status = build_status(myself, tree, host, compiler)
             try:
-                age_mtime = db.build_age_mtime(tree, host, compiler)
+                status = build_status(myself, tree, host, compiler)
             except data.NoSuchBuildError:
                 pass
             else:
+                age_mtime = db.build_age_mtime(tree, host, compiler)
                 age_ctime = db.build_age_ctime(tree, host, compiler)
                 revision = db.build_revision(tree, host, compiler)
                 revision_time = db.build_revision_time(tree, host, compiler)
@@ -462,7 +463,7 @@ def view_host(myself, output_type, *requested_hosts):
                 else:
                     age_ctime = db.build_age_ctime(tree, host, compiler)
                     warnings = db.err_count(tree, host, compiler)
-                    status = build_status(myself, tree, host, compiler, "")
+                    status = build_status(myself, tree, host, compiler)
                     if row == 0:
                         if output_type == 'text':
                             yield "%-12s %-10s %-10s %-10s %-10s\n" % (


-- 
build.samba.org


More information about the samba-cvs mailing list