← Back to team overview

yellow team mailing list archive

lpsetup integration test thoughts from Francesco and me

 

Hi all.  Francesco and I had a conversation about lpsetup integration
and I wanted to record a summary for everyone to follow along, comment
on, and so on.

 * Testing via ephemeral lxc: Once lxc has the cache for a given OS, it
is very fast to make a new lxc.  Maybe an ephemeral lxc is not really a
win for this use case.

 * Testing via local lxc vs via ec2:  lxc will require nested lxcs, and
will thus require tools like lp-lxc-ip to work within one lxc to
describe a nested one.  We have no idea if this will work.  We know ec2
works.

 * Juju as a testing tool: we can use juju as an abstraction for testing
on ec2 or on lxc.  If we only use juju commands (juju ssh, juju scp, and
so on) in our test infrastructure, we could write tests to work on ec2,
and experiment with the same tests to work on lxc or any other juju back
end.

 * Installing via setup.py install: it's good for a quick test, but
things are different in deb intsall vs. setup.py install.  A real
integration test will ideally test with the deb.

 * Proposal for how we can get an integration/release story:
   * We create a lpsetup-experimental PPA
   * We create a recipe to build lpsetup as often as possible into the
lpsetup-experimental PPA (once a day or once every checkin)
   * We create an integration test suite for lpsetup that has a name
that nosetests does not pick up, and we make sure that it is packaged.
It expects to be able to run as root, and expects to be able to modify
the operating system in which it is run.  (Maybe this is a separately
packaged command also produced from the lpsetup tree, and when it is
installed you can run sudo lpsetup-selftest?)  When you run this suite,
it changes lpsetup to install lpsetup from the experimental PPA, not the
"official" PPA, when it creates containers.
   * Initial manual test story:
     * Create an EC2 machine
     * Install lpsetup-experimental PPA
     * Install lpsetup (or lpsetup-selftest package, which depends on
lpsetup?)
     * Run lpsetup-selftest.  If it passes, the current revision in the
experimental PPA can be copied to the official PPA as a real release
with some quick launchpad.net button pushes.
   * Later possible refinements:
     * Create a do-nothing juju charm to abstract creating the EC2 machine
     * Make the tests automated
     * Make the copying automated

Gary