The branch, master has been updated via 9e6974d Make build_status_from_logs take files rather than huge strings. from 5471061 Remove updating of samba-docs and lorikeet. Move samba-web and build-farm to git.
http://gitweb.samba.org/?p=build-farm.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit 9e6974dc5ba1e112a1c35893858e9d90d9ba4961 Author: Jelmer Vernooij <jel...@samba.org> Date: Mon Nov 8 23:33:11 2010 +0100 Make build_status_from_logs take files rather than huge strings. ----------------------------------------------------------------------- Summary of changes: buildfarm/data.py | 26 ++++++++++++++------------ buildfarm/tests/test_data.py | 22 +++++++++++++--------- 2 files changed, 27 insertions(+), 21 deletions(-) Changeset truncated at 500 lines: diff --git a/buildfarm/data.py b/buildfarm/data.py index 5fe1fea..0b30cdc 100644 --- a/buildfarm/data.py +++ b/buildfarm/data.py @@ -48,6 +48,7 @@ def check_dir_exists(kind, path): def build_status_from_logs(log, err): """get status of build""" + log = log.read() m = re.search("TEST STATUS:(\s*\d+)", log) other_failures = set() if m: @@ -89,7 +90,7 @@ def build_status_from_logs(log, err): if m: other_failures.add("panic") - if "No space left on device" in err or "No space left on device" in log: + if "No space left on device" in log: other_failures.add("disk full") if "maximum runtime exceeded" in log: @@ -101,6 +102,11 @@ def build_status_from_logs(log, err): if m: stages = stages + (int(m.group(1).strip()),) + # Scan err file for specific + for l in err: + if "No space left on device" in l: + other_failures.add("disk full") + return BuildStatus(stages, other_failures) @@ -217,19 +223,15 @@ class Build(object): :return: tuple with build status """ - - f = self.read_log() + log = self.read_log() try: - log = f.read() - finally: - f.close() - f = self.read_err() - try: - err = f.read() + err = self.read_err() + try: + return build_status_from_logs(log, err) + finally: + err.close() finally: - f.close() - - return build_status_from_logs(log, err) + log.close() def err_count(self): """get status of build""" diff --git a/buildfarm/tests/test_data.py b/buildfarm/tests/test_data.py index 6184a64..7db834d 100755 --- a/buildfarm/tests/test_data.py +++ b/buildfarm/tests/test_data.py @@ -15,6 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +from cStringIO import StringIO import os import tempfile import testtools @@ -178,48 +179,51 @@ error3""") class BuildStatusFromLogs(testtools.TestCase): + def parse_logs(self, log, err): + return data.build_status_from_logs(StringIO(log), StringIO(err)) + def test_nothing(self): - s = data.build_status_from_logs("", "") + s = self.parse_logs("", "") self.assertEquals((None, None, None, None), s.stages) self.assertEquals(set(), s.other_failures) def test_disk_full(self): self.assertEquals(set(["disk full"]), - data.build_status_from_logs("foo\nbar\nNo space left on device\nla\n", + self.parse_logs("foo\nbar\nNo space left on device\nla\n", "").other_failures) self.assertEquals(set(["disk full"]), - data.build_status_from_logs( + self.parse_logs( "", "foo\nbar\nNo space left on device\nla\n").other_failures) def test_timeout(self): self.assertEquals(set(["timeout"]), - data.build_status_from_logs("foo\nbar\nmaximum runtime exceeded\nla\n", + self.parse_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, "") + res = self.parse_logs(log, "") self.assertEquals(res.stages[3], 1) log = """ TEST STATUS: 1 """ - res = data.build_status_from_logs(log, "") + res = self.parse_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, "") + res = self.parse_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, "") + res = self.parse_logs(log, "") self.assertEquals(res.stages[4], 2) self.assertEquals(res.stages[3], 255) log = """ @@ -231,7 +235,7 @@ testsuite-failure: bar testsuite-failure: biz CC_CHECKER STATUS: 2 """ - res = data.build_status_from_logs(log, "") + res = self.parse_logs(log, "") self.assertEquals(res.stages[0], 2) self.assertEquals(res.stages[3], 3) -- build.samba.org