[SCM] build.samba.org - branch master updated
Jelmer Vernooij
jelmer at samba.org
Sat Aug 2 12:29:23 MDT 2014
The branch, master has been updated
via 0996a81 Fix whitespace, add basic tests for get_summary_builds.
via 9fe0dc1 Merge branch 'query4summarypage' of git://github.com/krishnatejaperannagari/build-farm into summary-optimization
via 9dee960 changes to reviews
via 0ca8317 query and conversion completed
from 338f129 Remove trailing whitespace.
http://gitweb.samba.org/?p=build-farm.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit 0996a81eab145e1f866ed1b03e043712a35ec2a5
Author: Jelmer Vernooij <jelmer at samba.org>
Date: Sat Aug 2 20:11:18 2014 +0200
Fix whitespace, add basic tests for get_summary_builds.
commit 9fe0dc147edce633cbf2cd333d1ba0d98f878394
Merge: 338f129aae35054dd350677b19170279549c22db 9dee960b26fa090b2d0fb8449430e95246f8998c
Author: Jelmer Vernooij <jelmer at samba.org>
Date: Sat Aug 2 20:03:58 2014 +0200
Merge branch 'query4summarypage' of git://github.com/krishnatejaperannagari/build-farm into summary-optimization
commit 9dee960b26fa090b2d0fb8449430e95246f8998c
Author: krishnatejaperannagari <krishnatejaperannagari at gmail.com>
Date: Tue Jul 1 16:13:53 2014 +0530
changes to reviews
Signed-off-by: krishnatejaperannagari <krishnatejaperannagari at gmail.com>
commit 0ca8317f8d3bfc552dc9859c2a8e5edd0f428a35
Author: krishnatejaperannagari <krishnatejaperannagari at gmail.com>
Date: Mon Jun 23 14:03:26 2014 +0530
query and conversion completed
Signed-off-by: krishnatejaperannagari <krishnatejaperannagari at gmail.com>
-----------------------------------------------------------------------
Summary of changes:
buildfarm/__init__.py | 21 +++++++++++++++++++++
buildfarm/build.py | 3 +--
buildfarm/tests/test_buildfarm.py | 19 +++++++++++++++++++
buildfarm/web/__init__.py | 11 +++++------
4 files changed, 46 insertions(+), 8 deletions(-)
Changeset truncated at 500 lines:
diff --git a/buildfarm/__init__.py b/buildfarm/__init__.py
index 7c4428e..52ac085 100644
--- a/buildfarm/__init__.py
+++ b/buildfarm/__init__.py
@@ -17,6 +17,7 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+from buildfarm.build import BuildStatus
from buildfarm.sqldb import distinct_builds, Cast, StormBuild, setup_schema, StormHostDatabase
from buildfarm.tree import Tree
from storm.database import create_database
@@ -143,6 +144,26 @@ class BuildFarm(object):
result = self._get_store().find(StormBuild)
return distinct_builds(result.order_by(Desc(StormBuild.upload_time)))
+ def get_summary_builds(self):
+ """Return last build age, status for each tree/host/compiler.
+
+ :return: iterator over tree, status
+ """
+ store = self._get_store()
+ return ((tree, BuildStatus.__deserialize__(status_str))
+ for (tree, status_str) in store.execute("""
+SELECT obd.tree, obd.status AS status_str
+FROM build obd
+INNER JOIN(
+ SELECT MAX(age) age, tree, host, compiler
+ FROM build
+ GROUP BY tree, host, compiler
+) ibd ON obd.age = ibd.age AND
+ obd.tree = ibd.tree AND
+ obd.host = ibd.host AND
+ obd.compiler = ibd.compiler;
+"""))
+
def get_tree_builds(self, tree):
result = self._get_store().find(StormBuild,
Cast(StormBuild.tree, "TEXT") == Cast(tree, "TEXT"))
diff --git a/buildfarm/build.py b/buildfarm/build.py
index fae37a1..1348a96 100644
--- a/buildfarm/build.py
+++ b/buildfarm/build.py
@@ -566,8 +566,7 @@ class BuildResultStore(object):
os.link(build.basename+".log", new_basename+".log")
if os.path.exists(build.basename+".err"):
os.link(build.basename+".err", new_basename+".err")
- new_build = StormBuild(new_basename, build.tree, build.host,
- build.compiler, rev)
+ new_build = StormBuild(new_basename, build.tree, build.host, build.compiler, rev)
new_build.checksum = build.log_checksum()
new_build.upload_time = build.upload_time
new_build.status_str = build.status().__serialize__()
diff --git a/buildfarm/tests/test_buildfarm.py b/buildfarm/tests/test_buildfarm.py
index d78ed68..9091bf8 100644
--- a/buildfarm/tests/test_buildfarm.py
+++ b/buildfarm/tests/test_buildfarm.py
@@ -119,6 +119,25 @@ class BuildFarmTests(BuildFarmTestCase):
self.assertEquals("12", builds[1].revision_details())
self.assertEquals("other", builds[1].tree)
+ def test_get_summary_builds_empty(self):
+ self.assertEquals([], list(self.x.get_summary_builds()))
+
+ def test_get_summary_builds(self):
+ path = self.upload_mock_logfile(self.x.builds, "other", "myhost", "cc",
+ "BUILD COMMIT REVISION: 12\n", mtime=1200)
+ path = self.upload_mock_logfile(self.x.builds, "trivial", "myhost", "cc",
+ "BUILD COMMIT REVISION: 13\n", mtime=1300)
+ path = self.upload_mock_logfile(self.x.builds, "trivial", "myhost", "cc",
+ "BUILD COMMIT REVISION: 42\n", mtime=4200)
+ builds = list(self.x.get_summary_builds())
+ self.assertEquals(2, len(builds))
+ self.assertEquals(4200, builds[0].upload_time)
+ self.assertEquals("42", builds[0].revision_details())
+ self.assertEquals("trivial", builds[0].tree)
+ self.assertEquals(1200, builds[1].upload_time)
+ self.assertEquals("12", builds[1].revision_details())
+ self.assertEquals("other", builds[1].tree)
+
def test_get_host_builds_empty(self):
self.assertEquals([], list(self.x.get_host_builds("myhost")))
diff --git a/buildfarm/web/__init__.py b/buildfarm/web/__init__.py
index b1f0fb4..0368022 100755
--- a/buildfarm/web/__init__.py
+++ b/buildfarm/web/__init__.py
@@ -727,16 +727,15 @@ class ViewSummaryPage(BuildFarmPage):
# output when we want
broken_table = ""
- builds = self.buildfarm.get_last_builds()
+ builds = self.buildfarm.get_summary_builds()
- for build in builds:
- host_count[build.tree]+=1
- status = build.status()
+ for tree, status in builds:
+ host_count[tree]+=1
if status.failed:
- broken_count[build.tree]+=1
+ broken_count[tree]+=1
if "panic" in status.other_failures:
- panic_count[build.tree]+=1
+ panic_count[tree]+=1
return (host_count, broken_count, panic_count)
def render_text(self, myself):
--
build.samba.org
More information about the samba-cvs
mailing list