Issue40

Title Create nightly build and nightly test
Priority wish Status resolved
Superseder Nosy List erez, gabi, jendrik, malte
Assigned To erez Keywords
Optional summary

Created on 2009-10-18.12:31:33 by erez, last changed by malte.

Messages
msg657 (view) Author: malte Date: 2010-11-01.22:28:09
Buildbot is set up now => resolved.
msg546 (view) Author: malte Date: 2010-10-11.21:18:33
I generated such a support dir, called "misc".

At the moment it contains the buildbot config, the uncrustify config and a
script I wrote a while ago to check our #include guard convention. BTW, I fixed
that a while ago across all source files, but it's now messed up again in quite
a few:

helmert@alfons:~/planning/trunk/downward/search$
../../misc/check-include-guard-convention.py *.h */*.h | grep ^False
False iterated_search.h #ifndef ITERATED_SEARCH_H_
False search_progress.h #ifndef SEARCHPROGRESS_H_
False learning/maximum_heuristic.h #ifndef MAXIMUM_HEURISTIC_H
False learning/PDB_state_space_sample.h #ifndef PDBSTATESPACESAMPLE_H_
False learning/probe_state_space_sample.h #ifndef PROBESTATESPACESAMPLE_H_
False learning/selective_max_heuristic.h #ifndef SELECTIVE_MAX_HEURISTIC_H_
False learning/state_space_sample.h #ifndef STATESPACESAMPLE_H_

Erez, can you fix that? Both the names of the guards should be different and the
#endif lines should be different. (See our coding conventions.)
msg532 (view) Author: erez Date: 2010-09-30.23:59:38
I like the support dir idea.
msg531 (view) Author: malte Date: 2010-09-30.19:31:17
I'd like to have it less visible too, but I'd prefer to have it in some
subdirectory instead of as a hidden file. Maybe a subdir scripts/buildbot/?
Other suggestions welcome. The cfg file for uncrustify should also be stored
away somewhere; maybe introduce a new "support" directory or similar for both?
msg530 (view) Author: gabi Date: 2010-09-30.15:50:50
Is it possible to make the buildbot configuration (in the repository) a hidden
file? And would anybody object?
msg471 (view) Author: malte Date: 2010-08-18.16:41:31
OK, running the master is no problem of course.
msg470 (view) Author: erez Date: 2010-08-18.16:40:05
The buildbot master does not perform any builds, that's what build slaves are 
for. Really.
The buildbot master just keeps track of what needs to be done, and has a very 
nice web interface. I can still run the build slave on my local machine.

Also, the trigger on update is easy to set up, there are instructions on how to 
do that (add something the the update hook of SVN)
msg469 (view) Author: malte Date: 2010-08-18.16:37:11
Hmm... problem with my previous message? Anyway, here it is again:

I'd rather not have it run on my local desktop due to the load this produces.
(The wiki, repositories and issue tracker are not so demanding, but builds and
stuff like that are.) Do you have a machine at Technion that might be used? We
could also use the gkigrid, but I'm not sure how happy the rest of the group
would be about that.

Instead of polling, I think it's better to be triggered on update. That's not
hard to setup, although we might wait with that until the switch to Mercurial
which will probably happen not too far in the future.
msg467 (view) Author: erez Date: 2010-08-18.16:25:08
I've got a builtbot (master & slave) running on my local machine.
It does the following:
A. Poll the repository every 10 minutes
B. Upon detecting a change:
  1. a 5 minute no-change timer for incremental build is triggered
  2. a 10 minute no-change timer for a clean build is triggered
C. Nightly test at 3:00 every night
D. Weekly test at 8:00 on Saturday

The tests use Jendrik's scripts. We should discuss exactly what to run, but it's 
easy enough to configure, and it also collects data (for now total time and 
expanded states, but this can also change).

TODO:
1. Run the buildbot master on alfons, so it can be publicly available (Malte - 
can you open non-standard ports?)
2. Decide on the exact configurations and problems that will run nightly/weekly
3. Find some nice way to display the collected results, and possibly have alerts 
on them
msg238 (view) Author: erez Date: 2010-02-15.11:13:13
Malte - please install buildbot, and I will provide the necessary configuration
files
msg148 (view) Author: erez Date: 2009-11-29.08:46:43
Here's what I think we should do - please let me know if you have any comments:
1. Quick (incremental) build - will run every time someone commits code, and
send an immediate e-mail if the build breaks.
2. Full build - will run every night. This will allow us to keep track of
warning counts, compilation time, etc.
3. Quick test - will run every night. A test suite which consists of 1 or 2
problems from each domain, which can be solved in up to 10 seconds, using
different configurations (which should cover different search algorithms). 
We will keep track of expanded states and time, and this will allow us to detect
significant changes in search behavior.
4. Performance test - will run every weekend. Like the quick test, but a few
more problems, which take up to about a minute each.

Basically we can define more test suites, but I think this should catch most
problems quickly enough.
msg143 (view) Author: erez Date: 2009-11-27.17:53:16
We'll start with creating an automatic build that will report whenever anyone 
checks in something that breaks the build (using buildbot).
Then we'll see how we can perform automatic unit testing and automatic performance  
testing.
msg88 (view) Author: malte Date: 2009-10-18.16:38:53
Sounds good. Personally, I'd separate this into two issues:

 1. Create an automated test suite. (Building the planner would be the
    most basic part of the test.)
 2. Have an automated way of running the test suite.

For the second part, maybe something like BuildBot
(http://en.wikipedia.org/wiki/BuildBot) could be used.
msg86 (view) Author: erez Date: 2009-10-18.12:31:33
This issue was suggested by Michael, and has 2 items:

1. Create a nightly build, with appropriate e-mail to anyone who breaks the code
2. Create a nightly test suite, to be run after each nightly build, to make sure
we don't introduce any bugs into the code. This would require running many
planner configurations on many problems, so we should think about how to do this
more efficiently.
History
Date User Action Args
2010-11-01 22:28:09maltesetstatus: chatting -> resolved
messages: + msg657
2010-10-11 21:18:33maltesetmessages: + msg546
2010-09-30 23:59:38erezsetmessages: + msg532
2010-09-30 19:31:18maltesetmessages: + msg531
2010-09-30 15:50:50gabisetmessages: + msg530
2010-08-18 16:41:31maltesetmessages: + msg471
2010-08-18 16:40:05erezsetmessages: + msg470
2010-08-18 16:37:11maltesetmessages: + msg469
2010-08-18 16:25:08erezsetnosy: + jendrik
messages: + msg467
2010-02-15 11:13:13erezsetmessages: + msg238
2009-11-29 08:46:43erezsetmessages: + msg148
2009-11-27 17:53:16erezsetassignedto: erez
messages: + msg143
2009-11-05 17:45:52gabisetnosy: + gabi
2009-10-18 16:38:53maltesetmessages: + msg88
2009-10-18 12:31:33erezcreate