The branch, master has been updated via fb29f3a Fix implementation of get_previous_revision. from 92dcfd6 Use sqlite backed buildfarm in import-and-analyse.
http://gitweb.samba.org/?p=build-farm.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit fb29f3ae2b0622b3cf1a48008e7d1e856bfd4da7 Author: Jelmer Vernooij <jel...@samba.org> Date: Sat Nov 13 01:15:34 2010 +0100 Fix implementation of get_previous_revision. ----------------------------------------------------------------------- Summary of changes: buildfarm/data.py | 10 ++++++++-- buildfarm/tests/test_data.py | 13 +++++++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) Changeset truncated at 500 lines: diff --git a/buildfarm/data.py b/buildfarm/data.py index 451caa5..7e6497a 100644 --- a/buildfarm/data.py +++ b/buildfarm/data.py @@ -503,7 +503,12 @@ class SQLCachingBuildResultStore(BuildResultStore): self.db = db def get_previous_revision(self, tree, host, compiler, revision): - cursor = self.db.execute("SELECT commit_revision FROM build WHERE tree = ? AND host = ? AND compiler = ? AND commit_revision < ? ORDER BY id DESC LIMIT 1", (tree, host, compiler, revision)) + cursor = self.db.execute("SELECT id FROM build WHERE tree = ? AND host = ? AND compiler = ? AND commit_revision = ?", (tree, host, compiler, revision)) + row = cursor.fetchone() + if row is None: + raise NoSuchBuildError(tree, host, compiler, revision) + dbid = row[0] + cursor = self.db.execute("SELECT commit_revision FROM build WHERE tree = ? AND host = ? AND compiler = ? AND id < ? ORDER BY id DESC LIMIT 1", (tree, host, compiler, dbid)) row = cursor.fetchone() if row is None: raise NoSuchBuildError(tree, host, compiler, revision) @@ -511,4 +516,5 @@ class SQLCachingBuildResultStore(BuildResultStore): def upload_build(self, build): super(SQLCachingBuildResultStore, self).upload_build(build) - self.db.execute("INSERT INTO build (tree, revision, commit_revision, host, compiler, checksum, age, status) VALUES (?, ?, ?, ?, ?, ?, ?, ?)", (build.tree, build.revision, build.revision, build.host, build.compiler, build.log_checksum(), build.age_mtime(), repr(build.status()))) + rev, timestamp = build.revision_details() + self.db.execute("INSERT INTO build (tree, revision, commit_revision, host, compiler, checksum, age, status) VALUES (?, ?, ?, ?, ?, ?, ?, ?)", (build.tree, rev, rev, build.host, build.compiler, build.log_checksum(), timestamp, repr(build.status()))) diff --git a/buildfarm/tests/test_data.py b/buildfarm/tests/test_data.py index 4b60ad8..60f6597 100755 --- a/buildfarm/tests/test_data.py +++ b/buildfarm/tests/test_data.py @@ -168,6 +168,19 @@ class SQLCachingBuildResultStoreTests(BuildFarmTestCase,BuildResultStoreTestBase self.x = data.SQLCachingBuildResultStore( os.path.join(self.path, "data", "oldrevs")) + def test_get_previous_revision_result(self): + path = self.create_mock_logfile("tdb", "charis", "cc", contents=""" +BUILD COMMIT REVISION: myrev +""") + self.x.upload_build(data.Build(None, path[:-4], "tdb", "charis", "cc")) + path = self.create_mock_logfile("tdb", "charis", "cc", contents=""" +BUILD COMMIT REVISION: myotherrev +""") + self.x.upload_build(data.Build(None, path[:-4], "tdb", "charis", "cc")) + self.assertRaises(data.NoSuchBuildError, self.x.get_previous_revision, "tdb", "charis", "cc", "unknown") + self.assertRaises(data.NoSuchBuildError, self.x.get_previous_revision, "tdb", "charis", "cc", "myrev") + self.assertEquals("myrev", self.x.get_previous_revision("tdb", "charis", "cc", "myotherrev")) + class BuildStatusFromLogs(testtools.TestCase): -- build.samba.org