[libvirt] [PATCH v2 2/5] Network: Add regression tests for the command line arguments
Michal Novotny
minovotn at redhat.com
Thu Apr 28 14:31:08 UTC 2011
On 04/27/2011 06:33 PM, Laine Stump wrote:
> On 04/01/2011 06:45 AM, Michal Novotny wrote:
>> Make: passed
>> Make check: passed
>> Make syntax-check: passed
>>
>> Hi,
>> this is the patch that is adding regression tests for the network
>> bridge driver command-line arguments similar way it is done for
>> QEMU driver. This is checking the built dnsmasq parameters (using
>> networkBuildDhcpDaemonCommandLine() function) and comparing them
>> to excepted arguments in the *.argv files.
>>
>> This has been tested and working fine.
>>
>> Michal
>
> Same comments about the commit message as in 1/5 - don't include stuff
> about what tests passed, salutations, signatures; *do* include a short
> sample of the XML.
>
>
>> Signed-off-by: Michal Novotny<minovotn at redhat.com>
>> ---
>> src/network/bridge_driver.c | 27 ++++-
>> src/network/bridge_driver.h | 3 +
>> tests/Makefile.am | 11 ++
>> tests/networkxml2argvdata/isolated-network.argv | 1 +
>> tests/networkxml2argvdata/isolated-network.xml | 11 ++
>> .../nat-network-dns-txt-record.argv | 1 +
>> .../nat-network-dns-txt-record.xml | 24 ++++
>> tests/networkxml2argvdata/nat-network.argv | 1 +
>> tests/networkxml2argvdata/nat-network.xml | 21 ++++
>> tests/networkxml2argvdata/netboot-network.argv | 1 +
>> tests/networkxml2argvdata/netboot-network.xml | 14 +++
>> .../networkxml2argvdata/netboot-proxy-network.argv | 1 +
>> .../networkxml2argvdata/netboot-proxy-network.xml | 13 ++
>> tests/networkxml2argvdata/routed-network.argv | 1 +
>> tests/networkxml2argvdata/routed-network.xml | 9 ++
>> tests/networkxml2argvtest.c | 119 ++++++++++++++++++++
>> 16 files changed, 255 insertions(+), 3 deletions(-)
>> create mode 100644 tests/networkxml2argvdata/isolated-network.argv
>> create mode 100644 tests/networkxml2argvdata/isolated-network.xml
>> create mode 100644 tests/networkxml2argvdata/nat-network-dns-txt-record.argv
>> create mode 100644 tests/networkxml2argvdata/nat-network-dns-txt-record.xml
>> create mode 100644 tests/networkxml2argvdata/nat-network.argv
>> create mode 100644 tests/networkxml2argvdata/nat-network.xml
>> create mode 100644 tests/networkxml2argvdata/netboot-network.argv
>> create mode 100644 tests/networkxml2argvdata/netboot-network.xml
>> create mode 100644 tests/networkxml2argvdata/netboot-proxy-network.argv
>> create mode 100644 tests/networkxml2argvdata/netboot-proxy-network.xml
>> create mode 100644 tests/networkxml2argvdata/routed-network.argv
>> create mode 100644 tests/networkxml2argvdata/routed-network.xml
>> create mode 100644 tests/networkxml2argvtest.c
>>
>> diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c
>> index 2e299f5..b6ce39d 100644
>> --- a/src/network/bridge_driver.c
>> +++ b/src/network/bridge_driver.c
>> @@ -613,11 +613,11 @@ cleanup:
>> return ret;
>> }
>>
>> -static int
>> -networkStartDhcpDaemon(virNetworkObjPtr network)
>> +int
>> +networkBuildDhcpDaemonCommandLine(virNetworkObjPtr network, virCommandPtr *cmdout,
>> + char *pidfile)
> If you make a function global, you should add it to a .syms file. In
> this case (as we just discussed on IRC with eblake) you should create a
> new src/libvirt_network.syms file and add it to that (then add that
> .syms file to the appropriate places in src/Makefile.am)
>
>> {
>> virCommandPtr cmd = NULL;
>> - char *pidfile = NULL;
> As patched, this will not compile - you removed pidfile from the new
> function, but left the assignment to it in. (actually, all of the
> directory and file creation items should be moved down into
> networkStartDhcpDaemon, so that networkBuildDhcpDaemonCommandLine
> doesn't have any side effects.)
>
>> int ret = -1, err, ii;
>> virNetworkIpDefPtr ipdef;
>>
>> @@ -666,6 +666,27 @@ networkStartDhcpDaemon(virNetworkObjPtr network)
>> goto cleanup;
>> }
>>
>> + if (cmdout)
>> + *cmdout = cmd;
>> +
>> + ret = 0;
>> +cleanup:
>> + if (ret != 0)
>
> The standard practice in libvirt is to use "ret < 0" rather than "ret != 0".
>
>
>> + virCommandFree(cmd);
>> + return ret;
>> +}
>> +
>> +static int
>> +networkStartDhcpDaemon(virNetworkObjPtr network)
>> +{
>> + virCommandPtr cmd = NULL;
>> + char *pidfile = NULL;
>> + int ret = -1;
>> +
>> + ret = networkBuildDhcpDaemonCommandLine(network,&cmd, pidfile);
>> + if (ret != 0)
> Again, ret < 0.
>
>> + goto cleanup;
>> +
>> if (virCommandRun(cmd, NULL)< 0)
>> goto cleanup;
>>
>> diff --git a/src/network/bridge_driver.h b/src/network/bridge_driver.h
>> index 32d2ae7..8d82b67 100644
>> --- a/src/network/bridge_driver.h
>> +++ b/src/network/bridge_driver.h
>> @@ -28,7 +28,10 @@
>> # include<config.h>
>>
>> # include "internal.h"
>> +# include "network_conf.h"
>> +# include "command.h"
>>
>> int networkRegister(void);
>> +int networkBuildDhcpDaemonCommandLine(virNetworkObjPtr network, virCommandPtr *cmdout, char *pidfile);
>>
>> #endif /* __VIR_NETWORK__DRIVER_H */
>> diff --git a/tests/Makefile.am b/tests/Makefile.am
>> index 5896442..a3f8d00 100644
>> --- a/tests/Makefile.am
>> +++ b/tests/Makefile.am
>> @@ -50,6 +50,7 @@ EXTRA_DIST = \
>> networkschematest \
>> networkxml2xmlin \
>> networkxml2xmlout \
>> + networkxml2argvdata \
> Yay for new tests!
>
>> nodedevschemadata \
>> nodedevschematest \
>> nodeinfodata \
>> @@ -104,6 +105,8 @@ endif
>>
>> check_PROGRAMS += networkxml2xmltest
>>
>> +check_PROGRAMS += networkxml2argvtest
>> +
>> check_PROGRAMS += nwfilterxml2xmltest
>>
>> check_PROGRAMS += storagevolxml2xmltest storagepoolxml2xmltest
>> @@ -191,6 +194,8 @@ endif
>>
>> TESTS += networkxml2xmltest
>>
>> +TESTS += networkxml2argvtest
>> +
>> TESTS += storagevolxml2xmltest storagepoolxml2xmltest
>>
>> TESTS += nodedevxml2xmltest
>> @@ -308,6 +313,12 @@ networkxml2xmltest_SOURCES = \
>> testutils.c testutils.h
>> networkxml2xmltest_LDADD = $(LDADDS)
>>
>> +networkxml2argvtest_SOURCES = \
>> + networkxml2argvtest.c \
>> + ../src/network/bridge_driver.c network/bridge_driver.h \
> Rather than adding the source files, you should be adding the .la file
> libvirt_network.la. See other .la file additions for the proper pattern
> to follow.
>
>> + testutils.c testutils.h
>> +networkxml2argvtest_LDADD = $(LDADDS)
>> +
>> nwfilterxml2xmltest_SOURCES = \
>> nwfilterxml2xmltest.c \
>> testutils.c testutils.h
>> diff --git a/tests/networkxml2argvdata/isolated-network.argv b/tests/networkxml2argvdata/isolated-network.argv
>> new file mode 100644
>> index 0000000..1c173db
>> --- /dev/null
>> +++ b/tests/networkxml2argvdata/isolated-network.argv
>> @@ -0,0 +1 @@
>> +/usr/sbin/dnsmasq --strict-order --bind-interfaces --pid-file=/var/run/libvirt/network/private.pid --conf-file= --except-interface lo --dhcp-option=3 --listen-address 192.168.152.1 --dhcp-range 192.168.152.2,192.168.152.254 --dhcp-leasefile=/var/lib/libvirt/dnsmasq/private.leases --dhcp-lease-max=253 --dhcp-no-override
>> diff --git a/tests/networkxml2argvdata/isolated-network.xml b/tests/networkxml2argvdata/isolated-network.xml
>> new file mode 100644
>> index 0000000..cc320a9
>> --- /dev/null
>> +++ b/tests/networkxml2argvdata/isolated-network.xml
>> @@ -0,0 +1,11 @@
>> +<network>
>> +<name>private</name>
>> +<uuid>81ff0d90-c91e-6742-64da-4a736edb9a9b</uuid>
>> +<bridge name='virbr2' stp='on' delay='0' />
>> +<mac address='52:54:00:17:3F:37'/>
>> +<ip address='192.168.152.1' netmask='255.255.255.0'>
>> +<dhcp>
>> +<range start='192.168.152.2' end='192.168.152.254' />
>> +</dhcp>
>> +</ip>
>> +</network>
>> diff --git a/tests/networkxml2argvdata/nat-network-dns-txt-record.argv b/tests/networkxml2argvdata/nat-network-dns-txt-record.argv
>> new file mode 100644
>> index 0000000..55dcf02
>> --- /dev/null
>> +++ b/tests/networkxml2argvdata/nat-network-dns-txt-record.argv
>> @@ -0,0 +1 @@
>> +/usr/sbin/dnsmasq --strict-order --bind-interfaces --pid-file=/var/run/libvirt/network/default.pid --conf-file= --except-interface lo --txt-record=example,example value --listen-address 192.168.122.1
>
> Does the argument to ==txt-record need to be quoted? (probably not
> needed, but it might help readability in the logs - will it *hurt*
> anything to quote it?
>
I was having issues with the --txt-record set with the quotes. There are
no quotes as you can see. And yes, unfortunately adding quoting does
hurt according to my testing :(
Michal
--
Michal Novotny <minovotn at redhat.com>, RHCE
Virtualization Team (xen userspace), Red Hat
More information about the libvir-list
mailing list