[Buildbot-devel] GSoC: Initial thoughts on the Graphs and Data Charts Project

Mikhail Sobolev mss at mawhrin.net
Mon Mar 9 19:17:07 UTC 2015


Hi Prasoon (I hope this is the correct first name),

I'd need to go more thoroughly through the ideas you listed, however first
thing I noticed that you do not mention 'metrics' feature of Buildbot that was
implemented quite some time.

The way I see it, this project would have a very close relationship with [1].

I'd appreciate if you checked these metrics related things and take them into
account.

-- 
Misha

[1] http://trac.buildbot.net/ticket/2459

On Mon, Mar 09, 2015 at 08:10:57PM +0530, Prasoon Shukla wrote:
>    Hi
>    I'm student developer and I would be applying for a student project under
>    Buildbot as a potential GSoC student. I have done a fair bit of work with
>    Python and have also contributed to a couple of FOSS projects and so, I
>    think I'll be able to work well with the Buildbot community.
>    Anyway, after setting up a development environment, I went through the
>    Buildbot documentation (along with skimming the relevant code). Once I was
>    comfortable with the architecture, I took a look at the projects and I
>    felt that project for "[1]Adding support for graphing data charts of build
>    statistics over time" is something I'd really like to do.
>    So, I read the bug report and after thinking it over for a while, I have a
>    few ideas that I's like to share. I'll quickly mention what the project
>    wants us to achieve for the benefit of others and then I'll write out my
>    ideas.
>    The project: The task is to provide context based graphs of the build
>    statistics. The actual statistic itself can be either something standard
>    (like build times for a builder over time) or something user-defined (such
>    as the generated binary size).
>    Okay so, here's what I'm thinking:
>    Firstly, we can divide all build statistics into the following two
>    categories:
> 
>      a. time-taken to accomplish certain task (e.g. time taken for a build)
> 
>      b. any other generalized measurement that is not a time measurement
>      (e.g. the size of a build)
> 
>    My reason for this kind of division will become clear in a bit. First, let
>    me elaborate further on these types:
> 
>      a. Measurements of time-taken to finish a task:
> 
>        This can be anything - the time for running the test suite, the time
>        taken during compilations or anything else that the user can think of
>        as long as it is a time measurement. For this type of statistics, the
>        user can just add a Step to the build. Then, buildbot can measure the
>        time taken for this step (for each build performed under any builder).
>        In fact. this measurement is already done by buildbot and can be
>        accessed using either the data API or JSON API. Displaying the data
>        will be rather elementary after this by simply running a bit of
>        javascript to parse the data and pass it to a graphing library such as
>        d3.js or chart.js.
> 
>      b. All other types of measurements:
> 
>        This is the more difficult of the two types since we do not have a
>        standard way of collecting the actual data. It is made further
>        difficult by the fact that we would like the user to be able to
>        measure any arbitrary statistic that any build can produce. A good way
>        of doing this (while allowing for maximum flexibility) is using steps.
>        We could add a new Step type which would run a user defined script
>        and then read the result of that script from stdout. This would allow
>        the user to do absolutely anything he/she desires within the script.
>        If the script runs successfully, it would return an exit code of 0 and
>        print it's numerical result to stdout. If it fails, it will return a
>        non zero exit code and we can show that the step failed in the build.
>        As for the graph, such a failed step will be a missing data-point in
>        the graph (shown in red to indicate failure). Further, we will need to
>        add such additional statistics (per builder) in the configuration
>        file. Using this data, we'll be able to produce graph for this
>        statistic. As far as storage is concerned, we can store it in the
>        existing database, creating a new table for each builder. The
>        statistics can be stored as a JSON string, mapping a build identifier
>        (for that builder, of course) to a build statistic. For displaying
>        this in a graph, we'll need to add methods to the python server that
>        can collect this data from the db and expose it to a JSON API so that
>        the browser can graph it.
> 
>    It should be clear now why I chose to divide the build stats into the
>    above mentioned categories - it simplifies a lot of work since Buildbot
>    can already gather and report time based data. Anyway, I believe that my
>    proposal above covers all possible types of statistics a user might want
>    to measure. Also, this proposal will need minimal changes to the exiting
>    codebase for its implementation. It will also be very little work on the
>    user's part.
>    So, that's the basic overview of my idea. Please let me know your
>    opinions/comments on this. Also, any questions are very welcome.
>    @Dustin: Tagging you since you you modified the bug last.
>    PS: In the meantime, I've tried to get my feet wet with the codebase by
>    submitting a small PR: [2]https://github.com/buildbot/buildbot/pull/1578.
>    I will try to make a few more patches before the final deadline. Or, if
>    the mentors want, I could even work on a small POC code for this project.
>    Prasoon Shukla
> 
> References
> 
>    Visible links
>    1. http://trac.buildbot.net/ticket/2461
>    2. https://github.com/buildbot/buildbot/pull/1578

> ------------------------------------------------------------------------------
> Dive into the World of Parallel Programming The Go Parallel Website, sponsored
> by Intel and developed in partnership with Slashdot Media, is your hub for all
> things parallel software development, from weekly thought leadership blogs to
> news, videos, case studies, tutorials and more. Take a look and join the 
> conversation now. http://goparallel.sourceforge.net/

> _______________________________________________
> 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