[Buildbot-devel] refresh property for the waterfall display

Mark Pauley mpauley at apple.com
Fri Jun 9 05:43:46 UTC 2006


I completely agree, and I'd like to say that it should (eventually)  
be taken a step further and ajax-ified.  I want to see the waterfall  
update in a similar fashion to the digg.com diggspy feature.  The new  
stuff should just appear asynchronously, I knows its possible, I done  
seen it :D  I really want to look into this when I get a chance.

The waterfall view could use a good pimping out in general (the  
current default view is bland, I copied webkit's css for my own  
buildmaster so that I don't go blind quite as quickly).  Another  
issue I've been running up against is what happens when you have too  
many builders to fit on a single page...

I'm open to ideas on that one, along with some way of viewing the log  
of a test step in a meaningful way (like only displaying the failures  
or disclosure triangles or something).

I know someone else also requested an "admin" view where you could  
open a page and get a terminal or cmd.exe prompt or something on the  
buildslave...  that would be peachy too.

_Mark

On Jun 8, 2006, at 10:31 PM, Neal Norwitz wrote:

> Ideally the refresh would be based on the next expected event +/- some
> interval with suitable min and max.  That would minimize useless
> refreshes and get you the info in a reasonably short time span,
> assuming the calc of next event is half decent.
>
> n
> --
>
> On 6/7/06, Mark Pauley <mpauley at apple.com> wrote:
>>
>> I actually added this and ported it forward to the latest released  
>> buildbot
>> source.
>>
>> I'm too busy to do more at this very moment, but if someone would  
>> like to
>> write a test and submit this to the integration gods:
>>
>>
>>
>> Index: buildbot/buildbot/status/html.py
>> ===================================================================
>> RCS file:
>> /cvsroot/buildbot/buildbot/buildbot/status/html.py,v
>> retrieving revision 1.84
>> diff -U3 -r1.84 html.py
>> --- buildbot/buildbot/status/html.py    21 May 2006
>> 21:28:26 -0000      1.84
>> +++ buildbot/buildbot/status/html.py    7 Jun 2006 22:18:41
>> -0000
>> @@ -144,6 +144,7 @@
>>  class HtmlResource(Resource):
>>      css = None
>> +    refresh = None
>>      contentType = "text/html; charset=UTF-8"
>>      def render(self, request):
>>          data = self.content(request)
>> @@ -163,6 +164,9 @@
>>                  ' xml:lang="en">\n')
>>          data += "<head>\n"
>>          data += "  <title>" + self.title + "</title>\n"
>> +        if self.refresh:
>> +            data += '  <meta http-equiv="refresh" '
>> +            data += 'content="' + self.refresh + '"/>\n'
>>          if self.css:
>>              # TODO: use some sort of relative link up to the root  
>> page, so
>>              # this css can be used from child pages too
>> @@ -321,8 +325,7 @@
>>          b = self.build
>>          buildbotURL = self.status.getBuildbotURL()
>>          projectName = self.status.getProjectName()
>> -        data = '<div class="title"><a
>> href="%s">%s</a></div>\n'%(buildbotURL,
>> -
>> projectName)
>> +        data = "<a href=\"%s\">%s</a>\n" % (buildbotURL,  
>> projectName)
>>          # the color in the following line gives python-mode trouble
>>          data += ("<h1>Build <a href=\"%s\">%s</a>:#%d</h1>\n"
>>                   "<h2>Reason:</h2>\n%s\n"
>> @@ -1060,7 +1063,8 @@
>>      """This builds the main status page, with the waterfall  
>> display, and
>>      all child pages."""
>>      title = "BuildBot"
>> -    def __init__(self, status, changemaster, categories, css=None):
>> +    def __init__(self, status, changemaster, categories, css=None,
>> +                 refresh=None):
>>          HtmlResource.__init__(self)
>>          self.status = status
>>          self.changemaster = changemaster
>> @@ -1069,6 +1073,7 @@
>>          if p:
>>              self.title = "BuildBot: %s" % p
>>          self.css = css
>> +       self.refresh = refresh
>>      def body(self, request):
>>          "This method builds the main waterfall display."
>> @@ -1539,7 +1544,8 @@
>>      favicon = None
>>      robots_txt = None
>> -    def __init__(self, status, control, changemaster, categories,  
>> css):
>> +    def __init__(self, status, control, changemaster, categories,  
>> css,
>> +                 refresh):
>>          """
>>          @type  status:       L{buildbot.status.builder.Status}
>>          @type  control:      L{buildbot.master.Control}
>> @@ -1551,8 +1557,9 @@
>>          self.changemaster = changemaster
>>          self.categories = categories
>>          self.css = css
>> +       self.refresh = refresh
>>          waterfall = WaterfallStatusResource(self.status,  
>> changemaster,
>> -                                            categories, css)
>> +                                            categories, css,  
>> refresh)
>>          self.putChild("", waterfall)
>>      def render(self, request):
>> @@ -1630,7 +1637,7 @@
>>      def __init__(self, http_port=None, distrib_port=None,  
>> allowForce=True,
>>                   categories=None, css=buildbot_css,  
>> favicon=buildbot_icon,
>> -                 robots_txt=None):
>> +                refresh=None, robots_txt=None):
>>          """To have the buildbot run its own web server, pass a  
>> port number
>> to
>>          C{http_port}. To have it run a web.distrib server
>> @@ -1679,6 +1686,10 @@
>>                          Defaults to the buildbot/buildbot.png image
>> provided
>>                          in the distribution. Can be set to None  
>> to avoid
>>                          using a favicon at all.
>> +
>> +        @type  refresh: string
>> +        @param refresh: if set, emit a meta refresh tag in the  
>> head of page
>> +
>>          @type  robots_txt: string
>>          @param robots_txt: if set, provide the pathname of a  
>> robots.txt
>> file.
>> @@ -1705,6 +1716,7 @@
>>          self.categories = categories
>>          self.css = css
>>          self.favicon = favicon
>> +       self.refresh = refresh
>>          self.robots_txt = robots_txt
>>      def __repr__(self):
>> @@ -1730,7 +1742,7 @@
>>              control = None
>>          change_svc = self.parent.change_svc
>>          sr = StatusResource(status, control, change_svc,  
>> self.categories,
>> -                            self.css)
>> +                            self.css, self.refresh)
>>          sr.favicon = self.favicon
>>          sr.robots_txt = self.robots_txt
>>          self.site = server.Site(sr)
>>
>>
>>
>>
>>
>>
>>
>>
>> On Jun 6, 2006, at 9:20 AM, Fred Drake wrote:
>>
>> On 6/6/06, Alexander Lorenz <lorenz at testingtech.de> wrote:
>> an also nice-to-have would be a refresh property for the waterfall
>> display (perhaps with a time value in seconds) , so you can watch the
>> build progressing without having to press the refresh button   
>> endlessly
>> to see if  a step already finished and so on ...
>>
>> Indeed!  Then I wouldn't need to install Opera just to get the
>> "Refresh every..." feature.  ;-)
>>
>>
>>   -Fred
>>
>> --
>> Fred L. Drake, Jr.    <fdrake at gmail.com>
>> "Every sin is the result of a collaboration." --Lucius Annaeus Seneca
>>
>>
>> _______________________________________________
>> Buildbot-devel mailing list
>> Buildbot-devel at lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/buildbot-devel
>>
>>
>>  _Mark
>>
>>
>>
>>
>> _______________________________________________
>> Buildbot-devel mailing list
>> Buildbot-devel at lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/buildbot-devel
>>
>>
>>
>>
>
>
> _______________________________________________
> Buildbot-devel mailing list
> Buildbot-devel at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/buildbot-devel





More information about the devel mailing list