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

Jelmer Vernooij jelmer at samba.org
Sun Nov 21 17:20:39 MST 2010


The branch, master has been updated
       via  f0b686e Fixes for distinct builds.
      from  131284c Fix formatting.

http://gitweb.samba.org/?p=build-farm.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit f0b686e7287ea9acc67054a5fb705906cbac2d06
Author: Jelmer Vernooij <jelmer at samba.org>
Date:   Mon Nov 22 01:18:51 2010 +0100

    Fixes for distinct builds.

-----------------------------------------------------------------------

Summary of changes:
 buildfarm/__init__.py             |    9 +++++++--
 buildfarm/sqldb.py                |   19 +++++++++++++------
 buildfarm/tests/test_buildfarm.py |    4 ++--
 3 files changed, 22 insertions(+), 10 deletions(-)


Changeset truncated at 500 lines:

diff --git a/buildfarm/__init__.py b/buildfarm/__init__.py
index d5a4aa4..509b024 100644
--- a/buildfarm/__init__.py
+++ b/buildfarm/__init__.py
@@ -141,7 +141,9 @@ class BuildFarm(object):
     def get_new_builds(self):
         hostnames = set([host.name for host in self.hostdb.hosts()])
         for build in self.upload_builds.get_new_builds():
-            if build.tree in self.trees and build.compiler in self.compilers and build.host in hostnames:
+            if (build.tree in self.trees and
+                build.compiler in self.compilers and
+                build.host in hostnames):
                 yield build
 
     def get_last_builds(self):
@@ -160,9 +162,12 @@ class BuildFarm(object):
 
     def get_host_builds(self, host):
         from buildfarm import data
+        ret = []
         for compiler in self.compilers:
             for tree in sorted(self.trees.keys()):
                 try:
-                    yield self.get_build(tree, host, compiler)
+                    ret.append(self.get_build(tree, host, compiler))
                 except data.NoSuchBuildError:
                     pass
+        ret.sort(reverse=True)
+        return ret
diff --git a/buildfarm/sqldb.py b/buildfarm/sqldb.py
index 28f6d8d..5019310 100644
--- a/buildfarm/sqldb.py
+++ b/buildfarm/sqldb.py
@@ -240,6 +240,16 @@ class StormCachingBuildResultStore(BuildResultStore):
         return ret
 
 
+def distinct_builds(builds):
+    done = set()
+    for build in builds:
+        key = (build.tree, build.compiler, build.host)
+        if key in done:
+            continue
+        done.add(key)
+        yield build
+
+
 class StormCachingBuildFarm(BuildFarm):
 
     def __init__(self, path=None, store=None, timeout=0.5):
@@ -265,18 +275,15 @@ class StormCachingBuildFarm(BuildFarm):
 
     def get_host_builds(self, host):
         result = self._get_store().find(StormBuild, StormBuild.host == host)
-        return result.group_by(StormBuild.compiler, StormBuild.tree)
+        return distinct_builds(result.order_by(Desc(StormBuild.upload_time)))
 
     def get_tree_builds(self, tree):
         result = self._get_store().find(StormBuild, StormBuild.tree == tree)
-        return result.group_by(StormBuild.host, StormBuild.compiler).order_by(
-            Desc(StormBuild.upload_time))
+        return distinct_builds(result.order_by(Desc(StormBuild.upload_time)))
 
     def get_last_builds(self):
         result = self._get_store().find(StormBuild)
-        return result.group_by(
-            StormBuild.tree, StormBuild.compiler, StormBuild.host).order_by(
-                Desc(StormBuild.upload_time))
+        return distinct_builds(result.order_by(Desc(StormBuild.upload_time)))
 
     def commit(self):
         self.store.commit()
diff --git a/buildfarm/tests/test_buildfarm.py b/buildfarm/tests/test_buildfarm.py
index a2af72a..a988be3 100644
--- a/buildfarm/tests/test_buildfarm.py
+++ b/buildfarm/tests/test_buildfarm.py
@@ -89,14 +89,14 @@ class BuildFarmTestBase(object):
         self.assertEquals([], list(self.x.get_tree_builds("trival")))
 
     def test_get_tree_builds(self):
-        path = self.upload_mock_logfile(self.x.builds, "tdb", "myhost", "cc",
+        path = self.upload_mock_logfile(self.x.builds, "tdb", "myhost", "gcc",
             stdout_contents="BUILD COMMIT REVISION: 12\n", mtime=1200)
         path = self.upload_mock_logfile(self.x.builds, "tdb", "myhost", "cc",
             stdout_contents="BUILD COMMIT REVISION: 13\n", mtime=1300)
         path = self.upload_mock_logfile(self.x.builds, "tdb", "myhost", "cc",
             stdout_contents="BUILD COMMIT REVISION: 42\n", mtime=4200)
         builds = list(self.x.get_tree_builds("tdb"))
-        self.assertEquals(["42", "13", "12"], [x.revision for x in builds])
+        self.assertEquals(["42", "12"], [x.revision for x in builds])
 
     def test_get_last_builds(self):
         path = self.upload_mock_logfile(self.x.builds, "other", "myhost", "cc",


-- 
build.samba.org


More information about the samba-cvs mailing list