[SCM] build.samba.org - branch master updated
Jelmer Vernooij
jelmer at samba.org
Fri Dec 3 21:10:57 MST 2010
The branch, master has been updated
via 4ac0aa7 Subunit diff.
from 2d615eb Fix image urls.
http://gitweb.samba.org/?p=build-farm.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit 4ac0aa7f50670346e22606e2b2eb1febdcca40f8
Author: jelmer at samba.org <jelmer at samba.org>
Date: Sat Dec 4 05:11:27 2010 +0100
Subunit diff.
-----------------------------------------------------------------------
Summary of changes:
buildfarm/build.py | 8 ++++----
buildfarm/tests/test_build.py | 14 +++++++-------
buildfarm/web/__init__.py | 20 +++++++++++++++++++-
import-and-analyse.py | 13 +++----------
4 files changed, 33 insertions(+), 22 deletions(-)
Changeset truncated at 500 lines:
diff --git a/buildfarm/build.py b/buildfarm/build.py
index 1c73cb2..4108ac0 100644
--- a/buildfarm/build.py
+++ b/buildfarm/build.py
@@ -581,7 +581,7 @@ class BuildResultStore(object):
raise NoSuchBuildError(None, None, None, None)
return ret
- def get_previous_revision(self, tree, host, compiler, revision):
+ def get_previous_build(self, tree, host, compiler, revision):
from buildfarm.sqldb import Cast
cur_build = self.get_build(tree, host, compiler, revision)
@@ -595,9 +595,9 @@ class BuildResultStore(object):
prev_build = result.first()
if prev_build is None:
raise NoSuchBuildError(tree, host, compiler, revision)
- return prev_build.revision
+ return prev_build
- def get_latest_revision(self, tree, host, compiler):
+ def get_latest_build(self, tree, host, compiler):
result = self.store.find(StormBuild,
StormBuild.tree == tree,
StormBuild.host == host,
@@ -606,4 +606,4 @@ class BuildResultStore(object):
build = result.first()
if build is None:
raise NoSuchBuildError(tree, host, compiler)
- return build.revision
+ return build
diff --git a/buildfarm/tests/test_build.py b/buildfarm/tests/test_build.py
index b3c7a45..6facb79 100755
--- a/buildfarm/tests/test_build.py
+++ b/buildfarm/tests/test_build.py
@@ -52,16 +52,16 @@ BUILD COMMIT REVISION: myrev
BUILD COMMIT REVISION: myotherrev
""")
self.x.upload_build(Build(path[:-4], "tdb", "charis", "cc"))
- self.assertRaises(NoSuchBuildError, self.x.get_previous_revision, "tdb", "charis", "cc", "unknown")
- self.assertRaises(NoSuchBuildError, self.x.get_previous_revision, "tdb", "charis", "cc", "myrev")
- self.assertEquals("myrev", self.x.get_previous_revision("tdb", "charis", "cc", "myotherrev"))
+ self.assertRaises(NoSuchBuildError, self.x.get_previous_build, "tdb", "charis", "cc", "unknown")
+ self.assertRaises(NoSuchBuildError, self.x.get_previous_build, "tdb", "charis", "cc", "myrev")
+ self.assertEquals("myrev", self.x.get_previous_build("tdb", "charis", "cc", "myotherrev").revision)
def test_get_latest_revision(self):
path = self.create_mock_logfile("tdb", "charis", "cc", "22", contents="""
BUILD COMMIT REVISION: myrev
""")
self.x.upload_build(Build(path[:-4], "tdb", "charis", "cc"))
- self.assertEquals("myrev", self.x.get_latest_revision("tdb", "charis", "cc"))
+ self.assertEquals("myrev", self.x.get_latest_build("tdb", "charis", "cc").revision)
def test_build_fname(self):
self.assertEquals(
@@ -160,11 +160,11 @@ BUILD COMMIT REVISION: myrev
build = Build(path[:-4], "tdb", "charis", "cc")
self.assertRaises(Exception, self.x.upload_build, build)
- def test_get_previous_revision(self):
- self.assertRaises(NoSuchBuildError, self.x.get_previous_revision, "tdb", "charis", "cc", "12")
+ def test_get_previous_build(self):
+ self.assertRaises(NoSuchBuildError, self.x.get_previous_build, "tdb", "charis", "cc", "12")
def test_get_latest_revision_none(self):
- self.assertRaises(NoSuchBuildError, self.x.get_latest_revision, "tdb", "charis", "cc")
+ self.assertRaises(NoSuchBuildError, self.x.get_latest_build, "tdb", "charis", "cc")
def test_get_old_builds_none(self):
self.assertEquals([],
diff --git a/buildfarm/web/__init__.py b/buildfarm/web/__init__.py
index f58cb9a..ebbbd36 100755
--- a/buildfarm/web/__init__.py
+++ b/buildfarm/web/__init__.py
@@ -466,7 +466,15 @@ class ViewBuildPage(BuildFarmPage):
yield "<div id='log'>"
- yield "<p><a href='%s/+subunit'>Subunit output</a></p>" % build_uri(myself, build)
+ yield "<p><a href='%s/+subunit'>Subunit output</a>" % build_uri(myself, build)
+ try:
+ previous_build = self.buildfarm.builds.get_previous_build(build.tree, build.host, build.compiler. build.revision)
+ except NoSuchBuildError:
+ pass
+ else:
+ yield ", <a href='%s/+subunit-diff/%s'>diff against previous</a>" % (
+ build_uri(myself, build), previous.log_checksum())
+ yield "</p>"
yield "<p><a href='%s/+stdout'>Standard output (as plain text)</a>, " % build_uri(myself, build)
yield "<a href='%s/+stderr'>Standard error (as plain text)</a>" % build_uri(myself, build)
yield "</p>"
@@ -1011,6 +1019,16 @@ class BuildFarmApp(object):
('Content-type', 'text/plain; charset=utf-8'),
('Content-Disposition', 'attachment; filename="%s.%s.%s-%s.err"' % (build.tree, build.host, build.compiler, build.revision))])
yield build.read_err().read()
+ elif subfn == "+subunit-diff":
+ start_response('200 OK', [
+ ('Content-type', 'text/plain; charset=utf-8')])
+ subunit_this = build.read_subunit().readlines()
+ other_build_checksum = wsgiref.util.shift_path_info(environ)
+ other_build = self.buildfarm.builds.get_by_checksum(other_build_checksum)
+ subunit_other = other_build.read_subunit().readlines()
+ import difflib
+ yield "".join(difflib.unified_diff(subunit_other, subunit_this))
+
elif subfn in ("", None):
start_response('200 OK', [
('Content-type', 'text/html; charset=utf-8')])
diff --git a/import-and-analyse.py b/import-and-analyse.py
index 921e156..2273b42 100755
--- a/import-and-analyse.py
+++ b/import-and-analyse.py
@@ -125,22 +125,15 @@ for build in buildfarm.get_new_builds():
try:
if opts.dry_run:
# Perhaps this is a dry run and rev is not in the database yet?
- prev_rev = buildfarm.builds.get_latest_revision(build.tree, build.host, build.compiler)
+ prev_build = buildfarm.builds.get_latest_build(build.tree, build.host, build.compiler)
else:
- prev_rev = buildfarm.builds.get_previous_revision(build.tree, build.host, build.compiler, rev)
+ prev_build = buildfarm.builds.get_previous_build(build.tree, build.host, build.compiler, rev)
except NoSuchBuildError:
if opts.verbose >= 1:
print "Unable to find previous build for %s,%s,%s" % (build.tree, build.host, build.compiler)
# Can't send a nastygram until there are 2 builds..
else:
- try:
- assert prev_rev is not None
- prev_build = buildfarm.builds.get_build(build.tree, build.host, build.compiler, prev_rev)
- except NoSuchBuildError:
- if opts.verbose >= 1:
- print "Previous build %s has disappeared" % prev_build
- else:
- check_and_send_mails(build, prev_build)
+ check_and_send_mails(build, prev_build)
if not opts.dry_run:
old_build.remove()
--
build.samba.org
More information about the samba-cvs
mailing list