The branch, master has been updated via ed1f580 Test upload_build. from 0d80220 Add tests for BuildFarm.get_build().
http://gitweb.samba.org/?p=build-farm.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit ed1f580fed5b2ca31fb0d879efdd291b4859084f Author: Jelmer Vernooij <jel...@samba.org> Date: Fri Nov 12 00:21:28 2010 +0100 Test upload_build. ----------------------------------------------------------------------- Summary of changes: buildfarm/__init__.py | 8 ++++++-- buildfarm/data.py | 34 +++++++++++++++++++--------------- buildfarm/tests/test_data.py | 15 +++++++++++++++ 3 files changed, 40 insertions(+), 17 deletions(-) Changeset truncated at 500 lines: diff --git a/buildfarm/__init__.py b/buildfarm/__init__.py index fdb197c..3bbfe4f 100644 --- a/buildfarm/__init__.py +++ b/buildfarm/__init__.py @@ -39,7 +39,11 @@ class Tree(object): def read_trees_from_conf(path): - """Read trees from a configuration file.""" + """Read trees from a configuration file. + + :param path: tree path + :return: Dictionary with trees + """ ret = {} cfp = ConfigParser.ConfigParser() cfp.readfp(open(path)) @@ -182,5 +186,5 @@ class CachingBuildFarm(BuildFarm): perc = super(CachingBuildFarm, self).lcov_status(tree) if not self.readonly: - util.FileSave(cachefile, ret) + util.FileSave(cachefile, perc) return perc diff --git a/buildfarm/data.py b/buildfarm/data.py index 0e09b13..26f2775 100644 --- a/buildfarm/data.py +++ b/buildfarm/data.py @@ -169,16 +169,13 @@ class Build(object): """A single build of a tree on a particular host using a particular compiler. """ - def __init__(self, store, tree, host, compiler, rev=None): + def __init__(self, store, basename, tree, host, compiler, rev=None): self._store = store + self.basename = basename self.tree = tree self.host = host self.compiler = compiler self.rev = rev - if rev is None: - self.basename = self._store.build_fname(self.tree, self.host, self.compiler) - else: - self.basename = self._store.build_fname(self.tree, self.host, self.compiler, self.rev) ################### # the mtime age is used to determine if builds are still happening @@ -365,10 +362,11 @@ class UploadBuildResultStore(object): return False def get_build(self, tree, host, compiler): - logf = self.build_fname(tree, host, compiler) + ".log" + basename = self.build_fname(tree, host, compiler) + logf = "%s.log" % basename if not os.path.exists(logf): raise NoSuchBuildError(tree, host, compiler) - return Build(self, tree, host, compiler) + return Build(self, basename, tree, host, compiler) class CachingUploadBuildResultStore(UploadBuildResultStore): @@ -386,10 +384,11 @@ class CachingUploadBuildResultStore(UploadBuildResultStore): return os.path.join(self.cachedir, "build.%s.%s.%s" % (tree, host, compiler)) def get_build(self, tree, host, compiler): - logf = self.build_fname(tree, host, compiler) + ".log" + basename = self.build_fname(tree, host, compiler) + logf = "%s.log" % basename if not os.path.exists(logf): raise NoSuchBuildError(tree, host, compiler) - return CachingBuild(self, tree, host, compiler) + return CachingBuild(self, basename, tree, host, compiler) class BuildResultStore(object): @@ -403,10 +402,11 @@ class BuildResultStore(object): self.path = path def get_build(self, tree, host, compiler, rev): - logf = self.build_fname(tree, host, compiler, rev) + ".log" + basename = self.build_fname(tree, host, compiler, rev) + logf = "%s.log" % basename if not os.path.exists(logf): raise NoSuchBuildError(tree, host, compiler, rev) - return Build(self, tree, host, compiler, rev) + return Build(self, basename, tree, host, compiler, rev) def build_fname(self, tree, host, compiler, rev): """get the name of the build file""" @@ -442,10 +442,13 @@ class BuildResultStore(object): if commit_rev is not None: rev = commit_rev + if not rev: + raise Exception("Unable to find revision in %r log" % build) + new_basename = self.build_fname(build.tree, build.host, build.compiler, rev) - os.rename(build.basename+".log", new_basename+".log") + os.link(build.basename+".log", new_basename+".log") if os.path.exists(build.basename+".err"): - os.rename(build.basename+".err", new_basename+".err") + os.link(build.basename+".err", new_basename+".err") # FIXME: # $st = $dbh->prepare("INSERT INTO build (tree, revision, commit_revision, host, compiler, checksum, age, status) VALUES (?, ?, ?, ?, ?, ?, ?, ?)") @@ -475,10 +478,11 @@ class CachingBuildResultStore(BuildResultStore): self.readonly = readonly def get_build(self, tree, host, compiler, rev): - logf = self.build_fname(tree, host, compiler, rev) + ".log" + basename = self.build_fname(tree, host, compiler, rev) + logf = "%s.log" % basename if not os.path.exists(logf): raise NoSuchBuildError(tree, host, compiler, rev) - return CachingBuild(self, tree, host, compiler, rev) + return CachingBuild(self, basename, tree, host, compiler, rev) def cache_fname(self, tree, host, compiler, rev): return os.path.join(self.cachedir, "build.%s.%s.%s-%s" % (tree, host, compiler, rev)) diff --git a/buildfarm/tests/test_data.py b/buildfarm/tests/test_data.py index 9a5f867..0559f8e 100755 --- a/buildfarm/tests/test_data.py +++ b/buildfarm/tests/test_data.py @@ -105,6 +105,21 @@ error3""") build = self.x.get_build("tdb", "charis", "cc", "12") self.assertEquals(3, build.err_count()) + def test_upload_build(self): + path = self.create_mock_logfile("tdb", "charis", "cc", contents=""" +BUILD COMMIT REVISION: myrev +""") + build = data.Build(None, path[:-4], "tdb", "charis", "cc") + self.x.upload_build(build) + uploaded_build = self.x.get_build("tdb", "charis", "cc", "myrev") + self.assertEquals(uploaded_build.log_checksum(), build.log_checksum()) + + def test_upload_build_no_rev(self): + path = self.create_mock_logfile("tdb", "charis", "cc", contents=""" +""") + build = data.Build(None, path[:-4], "tdb", "charis", "cc") + self.assertRaises(Exception, self.x.upload_build, build) + class BuildResultStoreTests(BuildFarmTestCase,BuildResultStoreTestBase): -- build.samba.org