[SCM] build.samba.org - branch master updated
Jelmer Vernooij
jelmer at samba.org
Thu Nov 11 16:20:40 MST 2010
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 <jelmer at 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
More information about the samba-cvs
mailing list