Before I release RelStorage 1.1, I believe I should set up a complete test environment. The test environment will test different versions of Python, ZODB, the supported databases, and the supported database adapters.
I started by installing buildbot, hoping it would solve most of the problem for me. However, I wanted a builder that would check out two things, ZODB and RelStorage, and install them both; there is no obvious way to do that in buildbot. So I uninstalled buildbot and decided to write scripts instead. Maybe I’ll figure out how to make buildbot run my scripts later.
Using Linux-VServer, which I already have set up, I will set up 3 new virtual servers and name them after birds that honk when you annoy them. “goose1” will be 32 bit Debian Etch with Python 2.4, PostgreSQL 8.1, MySQL, Oracle 10g XE, and cx_Oracle 4.x. “goose2” will be 32 bit Debian Lenny with Python 2.5, PostgreSQL 8.3, MySQL, Oracle 10g XE, and pre-release cx_Oracle 5. “goose3” will be 64 bit Debian Lenny with Python 2.5, PostgreSQL 8.3, and MySQL. Each of the servers will test several combinations of RelStorage checkouts (the trunk, the 1.0 branch, and the 1.1 branch) and ZODB checkouts (the 3.7 and 3.8 branches at least) with all of the installed databases.
This will not test all possible combinations, but should be enough to catch a lot of problems early. Combinations that I would classify as unimportant at this time include 64 bit Python 2.4 (since Python 2.5 supports 64 bit much better) and Oracle on a 64 bit host (since 10g XE only comes in 32 bit).
My memory on buildbot (as I brain-dumped it to the repoze blog[1])
is that it allows pretty arbitrary customization of the set of
steps to be run for a given configuration. E.g., you could have
a builder with steps like:
– create a virtualenv
– check out ZODB into ‘src/ZODB’
– check out RelStorage into ‘src/RelStorage’
– run ‘setup.py develop’ in ‘src/ZODB’
– run ‘setup.py test’ in ‘src/RelStorage’
or you could have a buildout which did all this for you: the
buildbot would just check out the buildout and run it (I’m pretty
sure this is how the Zope3 KGS buildbot works).
Thanks Tres, those notes will help a lot. I assume you intended to link to:
http://blog.repoze.org/continuous_integration_via_buildbot-20080214.html
cool stuff. did you had any success on your tests to share with us?