Skip to content
This repository has been archived by the owner on Jul 13, 2021. It is now read-only.

Automated testing #8

wants to merge 4 commits into
base: 1.0.4-branch
Choose a base branch


Copy link

@wmanley wmanley commented Jun 11, 2012

This branch includes adding systemd socket activation support and a simple set of automated tests which rely on such support. These tests have already been useful for finding a long standing bug in polipo (see 100ed99).

I believe automated tests are a great way to make maintainership less intimidating as with a sufficiently developed test suite less domain knowledge is required to maintain the software. You could make the argument that the domain knowledge is then encoded in the tests.

Although this branch introduces systemd socket activation support it does not introduce any dependency on systemd, it just implements the LISTEN_FDS interface. This is a completely independent implementation of the systemd interface that avoids including sd_daemon.{c,h} so no systemd code is included. Indeed, I don't even use polipo with systemd, I just needed a way of passing an already existing listening socket to polipo so decided to re-use an existing interface for that purpose.

This helps to centralise the error handling and the onward call chain.
This is preparation for adding systemd socket passing support
With this patch there is a single function which will create the
listening socket.  This patch is in preparation for adding system socket
passing support which can be encapsulated in a similar function.
Adding systemd support allows spawning polipo in parallel with the services
that depend on polipo.

The caller (spawner) owns the sockets, then spawns polipo and tells polipo
which sockets it has to use. (Before this change, you'd have to spawn polipo,
ask it which sockets it's using, and only then spawn the services that depend
on polipo.)

With socket passing the listening socket is passed to polipo as file
descriptor 3 and the environment variables are set according to:

    LISTEN_PID=[polipo pid]

before exec()ing polipo
Test cases consist of pairs of .header and .payload files.  These are
generated by capturing HTTP sessions with curl.  If the data should be
cached the files are placed in the expect_cache directory.  If they
shouldn't be cached they are placed in the expect_uncached directory.
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
None yet
None yet

Successfully merging this pull request may close these issues.

None yet

1 participant