Hi,

On Tue, Jun 07, 2016 at 10:30:57AM +0300, Samuli Seppänen wrote:
> 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.

In particular for *that* example: no way unit testing would have found
that - "full connection testing with multiple remotes and tunnel connection
issues on the first tunnel" would have been needed.

Unit testing might have found the issue that on closing of the WFP in
master, the handle wasn't NULLed, so a second close call would have 
caused a crash - if someone had thought of adding a test case for
"call close twice!" *and* ran this on windows.

Unit testing is good, but has no chance to find "full program test"
failures in certain combinations of options and remotes - which is 
what t_client is there for, but even that one wouldn't have caught the
WFP thing as it's fairly hard to test for that.

> > 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.

Haven't we been here before?

 - add testing branches to the github repo for (semi-)trusted developers
 - teach buildbot to use the github repo
 - enable (semi-)trusted developers to push their "I want this tested!"
   code to github/openvpn/testing-<user>/ and have buildbot test it

we can't open this to the world, as the t_client tests need sudo 
privileges, so anyone who can push a patch to a testing tree can run
arbitrary commands on the buildslaves ("just build whatever you want
into something called 'openvpn' and run that with sudo from t_client") -
so, (semi-)trusted developers only.

(This *should* have been discussed last monday, but it slipped off the
agenda)


> > 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.

I'm not seeing who is going to maintain all these VMs so every developer
can run the full suite across all OSes...

gert
-- 
USENET is *not* the non-clickable part of WWW!
                                                           //www.muc.de/~gert/
Gert Doering - Munich, Germany                             g...@greenie.muc.de
fax: +49-89-35655025                        g...@net.informatik.tu-muenchen.de

Attachment: signature.asc
Description: PGP signature

Reply via email to