IMO, the unit testing patches shouldn't have been merged into the
release branch

I agree. This patch was in retrospective clearly not ready for a release
branch. A lot of people spend time to hot fix a broken build.

My root cause analysis boils down to:

   Developers cannot detect multi-platform (build/run) issues with an
appropriate effort (or at all).

This is probably correct: the codebase is complex enough to cause breakage on many types of changes, no matter how carefully the code is reviewed. This is often because of the sheer number of options and their invisible interplay. A recent example is the recent persist-tun / WFP filtering issue, which slipped through all testing and review.

Regression testing using unit tests could possibly help us prevent this type of breakages.

We already have discussed solutions to this:

1) Enable developers to run the “authoritative” buildslave tests before
submitting patches

The buildmaster can trigger manual builds from a different branch (e.g. "staging/somebody"). Access to the buildmaster can be granted selectively to trusted core developers. Non-trivial patches from other people should probably be tested by one of these core developers before pushing them to "master". Or we can just accept the fact that "master" might be broken occasionally and fix the problems promptly.

2) Provide developers tooling to quickly (preferred: locally) run
iterations while developing

The Vagrant approach is nice because it will eventually allow developers to run a fairly extensive smoketests on several various operating systems with minimal effort:

<https://github.com/OpenVPN/openvpn/pull/45>

Right now the OS coverage is fairly minimal, but more variants can be added easily, and we're not limited to Linux/Ubuntu like with Travis.

#1 will need some processes & tooling by the current  maintainers.
#2 will be taken care of with the Vagrant based integration tests.

Opinions?

In addition to #1 and #2 we have Travis-CI smoke-testing in the pipeline:

<https://github.com/OpenVPN/openvpn/pull/52>

Travis-CI gives us some confidence on the quality of GitHub PRs, but it's test matrix is much narrower than that of Buildbot, so it's definitely not a panacea.

The only real way to test the more tricky corner-cases is to make it as easy as possible to use Git "master" -based builds. For Windows this is already covered by the Windows "buildslave" and the snapshots it generates. I can setup apt repositories with Debian/Ubuntu builds based on Git "master", but right now I don't have enough time to commit to that.

--
Samuli Seppänen
Community Manager
OpenVPN Technologies, Inc

irc freenode net: mattock

Reply via email to