[Dnsmasq-discuss] [PATCH] dnsmasq unit tests!
Geert Stappers
stappers at stappers.nl
Tue May 12 21:51:53 BST 2020
On Mon, May 04, 2020 at 05:02:38PM +0200, Petr Menšík wrote:
> Hello everyone,
>
> we have merged support for multiple IPv6 addresses to our release in
> RHEL. We tried to ensure it does not break anything and we failed.
>
> I made already some dnsmasq tests in separate repository [1], running in
> network namespaces. There are two kinds of tests. Simple shell backed
> bats tests in bash. bats and bash packages are required to run them.
> Second kind are few tests in beakerlib [2], which is test framework used
> in Fedora and RHEL testing. They exist and can test few things.
>
> But now, I have accomplished creating few unit tests [3] for dnsmasq.
> They are kind of hack, but they should allow basic testing of options
> working. I used cmocka library. Dnsmasq is not very well prepared for
> unit testing, but some parts can be tested. It is much easier to test
> just code, without providing fake network configuration. I want to use
> it to ensure no change in DHCP breaks expected behaviour. It is much
> easier to prepare code changes than full fledged functional test,
> emulating real request over network.
>
> I would love if you could try it and tell me what you think about it.
I think it is great to have unittests.
> I am attaching squished patch, separate commits are at our github [3].
> If someone would like to add some test, please create a pull request!
>
> If you would like to try it:
> git clone -b unittests https://github.com/InfrastructureServices/dnsmasq.git
> cd dnsmasq
> make
> cd tests
> make
> ./option_test
> ./dhcp_test
>
> Since these are related to dnsmasq internals, I think merge to master
> would be nice eventually. Some parts of dnsmasq should be adjusted for
> easier testing, I have to prepare some changes. It might be starting
> block to ensure new releases do not break existing functionality.
>
> Any opinions would be appreciated too.
<quote from="Harry Callahan" skipped="yes"/>
> Cheers,
> Petr
>
> 1. https://github.com/InfrastructureServices/dnsmasq-tests
> 2. https://github.com/beakerlib/beakerlib
> 3. https://github.com/InfrastructureServices/dnsmasq/tree/unittests/tests
>
> Petr Menšík
> Software Engineer
Be aware that I'm a "sysadmin", not a programmer ...
> >From 9395cc84f93c63573ba28e4e349c44adb5dbb34d Mon Sep 17 00:00:00 2001
> From: =?UTF-8?q?Petr=20Men=C5=A1=C3=ADk?= <pemensik at redhat.com>
> Date: Mon, 4 May 2020 16:26:17 +0200
> Subject: [PATCH] Create unittests with dhcp and option tests
> MIME-Version: 1.0
> Content-Type: text/plain; charset=UTF-8
> Content-Transfer-Encoding: 8bit
>
> diff --git a/Makefile b/Makefile
> index 78e25f0..e390745 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -24,7 +24,7 @@ MANDIR = $(PREFIX)/share/man
> LOCALEDIR = $(PREFIX)/share/locale
> BUILDDIR = $(SRC)
> DESTDIR =
> -CFLAGS = -Wall -W -O2
> +CFLAGS = -Wall -W -O2 -ggdb
How does that effect the regular builds?
> LDFLAGS =
> COPTS =
> RPM_OPT_FLAGS =
....
<screenshot says="stappers takes a deeper dive">
stappers at alpaca:~/src/dnsmasq
$ git am unittests.patch
Patch format detection failed.
stappers at alpaca:~/src/dnsmasq
$ git am < unittests.patch
Applying: Create unittests with dhcp and option tests
/home/stappers/src/dnsmasq/.git/rebase-apply/patch:469: trailing
whitespace.
/home/stappers/src/dnsmasq/.git/rebase-apply/patch:535: trailing
whitespace.
/* Min buffer size: we check after adding each record, so there must
* be
/home/stappers/src/dnsmasq/.git/rebase-apply/patch:538: trailing
whitespace.
This might be increased is EDNS packet size if greater than the
minimum. */
/home/stappers/src/dnsmasq/.git/rebase-apply/patch:541: trailing
whitespace.
/home/stappers/src/dnsmasq/.git/rebase-apply/patch:610: trailing
whitespace.
size_t answer_auth(struct dns_header *header, char *limit, size_t qlen,
time_t now, union mysockaddr *peer_addr,
warning: squelched 1 whitespace error
warning: 6 lines add whitespace errors.
stappers at alpaca:~/src/dnsmasq
$
</screenshot>
To be continued ...
More information about the Dnsmasq-discuss
mailing list