[V3dot10] Release team problems
Keith Hodges
keith_hodges at yahoo.co.uk
Mon Feb 19 23:40:23 UTC 2007
Pavel Krivanek wrote:
> Hi Keith,
>
> It may be good idea to have both approaches - maybe in two different
> test servers - one for release building and the second for harvesting
> of patches from Mantis that are mainly in the form of changesets. Or
> one complex sophisticated build&test system.
>
I had a quick look at your testing system again. I think that I used it
for some inspiration in the beginning. This may be why it looks almost
exactly the same in concept as mine, so I do not really think it is
necessary to have two separate systems when they are actually so similar.
It is good to look at it again, there are some further ideas for me to
see how I could simplify things a bit.
comparison:
download.py is a function for which I use ruby's rio library,
downloading a zip file and extracting the image and changes file should
in theory be a one liner with rio,
rio( 'http://server/image.zip' ).zip.each[ '*.image', '*.changes' ] >>
rio('dir')
Except that this didn't work as expected and so I have to use the shell
to execute unzip rather than rio's built in zip support.
The shell script in yours is a ruby script in mine. While yours is hard
wired, mine takes arguments from the command line via a yaml file, or a
wiki page with yaml in it. The arguments configure where to find the
image, the vm and to collate the outputs in a formally defined structure.
You supply a script to run tests on a class called BooleanTest, I add
functionality to SUnit in TestRunner, and a non GUI TestReporter class.
My TestReporter output is a little more complex in that it provides a
simple progress indication to the reader of the results file as it is
being generated.
I simply add one byte per test to the progress file, giving remote users
a progress indication, up until the 1000th test, then Apache displays
the size in K, which ruins this nice simple plan.
I have a Launcher class for processing commandline arguments, you supply
a script to the command line. When I run things with a script, my script
loads the launcher class and lets it do its stuff, Launcher is intended
to support, building, reporting, testing more building, and more
testing, in one step if desired.
My SUnit stuff has lots of suite defining, categorising, selecting and
filtering stuff in it too.
In practice now that I have a facility for triggering child-actions,
multi-step processes can now be divided up into single steps. The test
can be a child of the build, so in this case direct invocation of SUnit
is the only step and so Launcher is not really needed to process
multiple actions but it doesn't hurt.
Fixing AutoStart in KernelImage would give the same result, I have a
refactoring of AutoStart sitting on my broken laptop which contains
functionality equivalent to Launcher and tidies up all of the Auto
updates stuff that you removed.
> To enable processing of arguments by the
> ernelImage we have to solve
> this issue http://bugs.impara.de/view.php?id=4849.
Hmm, my implementation does not rely upon AutoStart, I hook into it if
it is there. I allow it to run a script at startup, and pass control
over to my stuff from there.
> Few months ago I created this very simple test system:
> http://weeklysqueak.wordpress.com/2006/10/07/a-simple-squeak-testing-server/
>
> Its advantage is that it doesn't need direct support for test server
> in the image.
>
Agreed, that was also a requirement for my implementation.
> -- Pavel
Keith
___________________________________________________________
All new Yahoo! Mail "The new Interface is stunning in its simplicity and ease of use." - PC Magazine
http://uk.docs.yahoo.com/nowyoucan.html
More information about the V3dot10
mailing list