[SCM] build.samba.org - branch master updated

Jelmer Vernooij jelmer at samba.org
Fri Nov 12 17:14:43 MST 2010


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 <jelmer at 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


More information about the samba-cvs mailing list