[pypy-svn] r58453 - pypy/build/bot2/pypybuildbot

pedronis at codespeak.net pedronis at codespeak.net
Sat Sep 27 15:27:45 CEST 2008


Author: pedronis
Date: Sat Sep 27 15:27:43 2008
New Revision: 58453

Modified:
   pypy/build/bot2/pypybuildbot/summary.py
Log:
- slicing/querying results by recentrev and/or branch
- links using this in the summary page itself



Modified: pypy/build/bot2/pypybuildbot/summary.py
==============================================================================
--- pypy/build/bot2/pypybuildbot/summary.py	(original)
+++ pypy/build/bot2/pypybuildbot/summary.py	Sat Sep 27 15:27:43 2008
@@ -181,6 +181,7 @@
 
     def __init__(self):
         self.sections = []
+        self.cur_branch=None
 
     def make_longrepr_url_for(self, outcome_set, namekey):
         cachekey, namekey = outcome_set.get_key_namekey(namekey)
@@ -205,9 +206,16 @@
             anchors.append(html.a(text, href=url))
         return anchors
 
-    def add_title(self, title):
-        self.sections.append(html.h2(title))
-        
+    def start_branch(self, branch):
+        self.cur_branch = branch
+        branch_anchor = html.a(branch, href="/summary?branch=%s" % branch)
+        self.sections.append(html.h2(branch_anchor))
+
+    def _rev_anchor(self, rev):
+        rev_anchor = html.a(str(rev), href="/summary?branch=%s&recentrev=%d" %
+                            (self.cur_branch, rev))
+        return rev_anchor
+                            
     def add_section(self, outcome_sets):
         revs = sorted(outcome_set.revision for outcome_set in outcome_sets)
         by_rev = sorted((outcome_set.revision, outcome_set) for outcome_set
@@ -220,7 +228,7 @@
         for rev, outcome_set in by_rev:
             count_failures = len(outcome_set.failed)
             count_skipped = len(outcome_set.skipped)
-            line = ["%s %d" % (bars(),rev)]
+            line = [bars(), ' ', self._rev_anchor(rev)]
             line.append((align-len(line[0]))*" ")
             line.append(self.make_stdio_anchors_for(outcome_set))
             line.append('\n')
@@ -314,6 +322,24 @@
         return obj.getProperty(name)
     except KeyError:
         return default
+
+def make_test(lst):
+    if lst is None:
+        return lambda v: True
+    else:
+        membs = set(lst)
+        return lambda v: v in membs
+
+def make_subst(v1, v2):
+    def subst(v):
+        if v == v1:
+            return v2
+        return v
+    return subst
+
+trunk_name = make_subst(None, "<trunk>")
+trunk_value = make_subst("<trunk>", None)
+
     
 class Summary(HtmlResource):
 
@@ -332,14 +358,21 @@
             for rev in sorted(revs.keys())[:-cutnum]:
                 del revs[rev]
 
-    def recentRevisions(self, status):
+    def recentRevisions(self, status, only_recentrevs=None, only_branches=None):
+        test_rev = make_test(only_recentrevs)
+        test_branch = make_test(only_branches)
+        
         branches = {}
 
         for builderName in status.getBuilderNames():
             builderStatus = status.getBuilder(builderName)
             for build in builderStatus.generateFinishedBuilds(num_builds=5*N):
                 branch = getProp(build, 'branch')
+                if not test_branch(branch):
+                    continue
                 got_rev = getProp(build, 'got_revision', None)
+                if not test_rev(got_rev):
+                    continue
 
                 revs, no_revision_builds = branches.setdefault(branch,
                                                                ({}, []))
@@ -364,16 +397,23 @@
         status = self.getStatus(request)
 
         page = SummaryPage()
+        #page.sections.append(repr(request.args))
         
-        branches = self.recentRevisions(status)
+        only_branches = request.args.get('branch', None)
+        only_recentrevs = request.args.get('recentrev', None)
+        if only_branches is not None:
+            only_branches = map(trunk_value, only_branches)
+        
+        branches = self.recentRevisions(status,
+                                        only_recentrevs=only_recentrevs,
+                                        only_branches=only_branches)
 
         for branch, (revs, no_revision_builds) in sorted(branches.iteritems()):
             outcome_sets = []
             for rev, by_build in revs.items():
                 outcome_sets.append(GatherOutcomeSet(by_build))
-            if branch is None:
-                branch = "<trunk>"
-            page.add_title(branch)
+            branch = trunk_name(branch)
+            page.start_branch(branch)
             page.add_section(outcome_sets)
             page.add_no_revision_builds(status, no_revision_builds)
 



More information about the Pypy-commit mailing list