[systemd-devel] Scripting a server test

Lennart Poettering lennart at poettering.net
Thu Jun 18 10:55:28 PDT 2015


On Mon, 15.06.15 12:17, Johannes Ernst (johannes.ernst at gmail.com) wrote:

> This is a best-practice question.
> 
> I’d like to automate testing of a web application (running in a container) by running curl from the host. The logical sequence should be:
> 
> * boot container using local tar file or existing directory
> * wait until container is-system-running=true
> * on the container, execute a few commands
> * on the host, run curl against the container
> * tear down the container
> 
> I need to boot the container, and the image I need to use for this test brings up a login prompt at the console.
> 
> I’m thinking of doing something like:
> > machinectl import-tar foo.tar foo
> > machinectl start foo
> > ssh foo systemctl is-system-running

consider using "systemctl -M foo is-system-running".

Also: "systemd-run -M foo ...." to execute arbitrary commands in a
container, without the need of ssh.

> until satisfied
> > ssh foo some other commands
> > curl http://foo/ <http://foo/>…
> > machinectl poweroff foo
> > machinectl status foo
> until off
> 
> But I don’t like the “container import and registration” part of
> this, because my container is very ephemeral and might only live for
> a few minutes if the test passes.

There's no need to import it. You can put the tree wherever you want
and then point nspawn to it with --directory=. You can also simply
symlink the thing into /var/lib/machines...

> Alternatively I could create myself a “test at .service” which would be identical to systemd-nspawn at .service, except it would use the directory as the %I instead of the machine name, so I could start it like:
> > systemctl start test@/my/container/directory

The path would need escaping... I'd generally recommend just using the
final filename in the instance...

Also, you could probably even run nspawn with little else than
a systemd-run command line, as transient unit. Or you could run nspawn
in foreground....

> Opinions? I figure this is a common-enough scenario that there might be some opinions on this list ...

Well, you basically have a lot of options, you need to figure out
which ones work best for you ;-)

Lennart

-- 
Lennart Poettering, Red Hat


More information about the systemd-devel mailing list