[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