[libvirt] [tck PATCH] Don't assume the domain's network interface tap device is named "vnet0"
Daniel P. Berrangé
berrange at redhat.com
Mon Jun 4 16:47:01 UTC 2018
On Mon, Jun 04, 2018 at 09:52:52AM -0400, Laine Stump wrote:
> Some of the tests perform operations on the tap device of the test
> domain's network interface. They mostly assume that this tap device is
> named "vnet0", which is the case if there is no other domain running
> on the host, but isn't true if some other domain was running.
>
> This patch adds a utility function
> NetworkHelpers::get_first_interface_target_dev($dom), which learns the
> name of the tap device for the first interface in the domain, and uses
> the result of that function instead of "vnet0".
>
> It's an ugly name, but follows the pattern of other function names in
> that file. It also is very specific (it could have been parameterized
> to get the tap device name of other interfaces, but we only ever need
> the first). On the other hand, it causes the tests in question to
> succeed on my host when they previously failed. (If anyone wants the
> function to be named differently or be more flexible, I'd be happy to
> do that).
This 3rd paragraph could probably be after the "---", ie no need for
it to be part of git history.
>
> Signed-off-by: Laine Stump <laine at laine.org>
> ---
> lib/Sys/Virt/TCK.pm | 3 ++-
> lib/Sys/Virt/TCK/NetworkHelpers.pm | 6 ++++++
> scripts/domain/180-interface-parameters.t | 6 ++++--
> scripts/nwfilter/100-ping-still-working.t | 3 ++-
> scripts/nwfilter/210-no-mac-spoofing.t | 3 ++-
> scripts/nwfilter/230-no-mac-broadcast.t | 3 ++-
> scripts/nwfilter/240-no-arp-spoofing.t | 3 ++-
> 7 files changed, 20 insertions(+), 7 deletions(-)
Reviewed-by: Daniel P. Berrangé <berrange at redhat.com>
>
> diff --git a/lib/Sys/Virt/TCK.pm b/lib/Sys/Virt/TCK.pm
> index ac9c125..29280f6 100644
> --- a/lib/Sys/Virt/TCK.pm
> +++ b/lib/Sys/Virt/TCK.pm
> @@ -821,11 +821,12 @@ sub generic_machine_domain {
> $dom->create();
>
> # Wait for the first boot to reach network setting
> + my $iface = get_first_interface_target_dev($dom);
> my $stats;
> my $tries = 0;
> do {
> sleep(10);
> - $stats = $dom->interface_stats("vnet0");
> + $stats = $dom->interface_stats($iface);
> $tries++;
> } while ($stats->{"tx_packets"} < 10 && $tries < 10);
>
> diff --git a/lib/Sys/Virt/TCK/NetworkHelpers.pm b/lib/Sys/Virt/TCK/NetworkHelpers.pm
> index 7bbce62..50ade0f 100644
> --- a/lib/Sys/Virt/TCK/NetworkHelpers.pm
> +++ b/lib/Sys/Virt/TCK/NetworkHelpers.pm
> @@ -10,6 +10,12 @@ sub get_first_macaddress {
> return $mac;
> }
>
> +sub get_first_interface_target_dev {
> + my $dom = shift;
> + my $targetdev = xpath($dom, "string(/domain/devices/interface[1]/target/\@dev)");
> + return $targetdev;
> +}
> +
> sub get_network_ip {
> my $conn = shift;
> my $netname = shift;
> diff --git a/scripts/domain/180-interface-parameters.t b/scripts/domain/180-interface-parameters.t
> index d7866c0..66c7ed6 100644
> --- a/scripts/domain/180-interface-parameters.t
> +++ b/scripts/domain/180-interface-parameters.t
> @@ -33,6 +33,7 @@ use warnings;
> use Test::More tests => 10;
>
> use Sys::Virt::TCK;
> +use Sys::Virt::TCK::NetworkHelpers;
> use Test::Exception;
> use File::stat;
>
> @@ -59,12 +60,13 @@ diag "Set/Get interface parameters";
> my %params = (Sys::Virt::Domain::BANDWIDTH_IN_AVERAGE=>1000, Sys::Virt::Domain::BANDWIDTH_IN_PEAK=>1001,
> Sys::Virt::Domain::BANDWIDTH_IN_BURST=>1002, Sys::Virt::Domain::BANDWIDTH_OUT_AVERAGE=>1003,
> Sys::Virt::Domain::BANDWIDTH_OUT_PEAK=>1004, Sys::Virt::Domain::BANDWIDTH_OUT_BURST=>1005);
> -lives_ok(sub {$dom->set_interface_parameters("vnet0", \%params)}, "Set vnet0 parameters");
> +my $iface = get_first_interface_target_dev($dom);
> +lives_ok(sub {$dom->set_interface_parameters($iface, \%params)}, "Set $iface parameters");
> for my $key (sort keys %params) {
> diag "Set $key => $params{$key} ";
> }
>
> -my $param = $dom->get_interface_parameters("vnet0", 0);
> +my $param = $dom->get_interface_parameters($iface, 0);
> my $in_average = $param->{Sys::Virt::Domain::BANDWIDTH_IN_AVERAGE};
> my $in_burst = $param->{Sys::Virt::Domain::BANDWIDTH_IN_BURST};
> my $in_peak = $param->{Sys::Virt::Domain::BANDWIDTH_IN_PEAK};
> diff --git a/scripts/nwfilter/100-ping-still-working.t b/scripts/nwfilter/100-ping-still-working.t
> index 1bbd7c5..12f2c7c 100644
> --- a/scripts/nwfilter/100-ping-still-working.t
> +++ b/scripts/nwfilter/100-ping-still-working.t
> @@ -55,11 +55,12 @@ $dom->create;
> ok($dom->get_id() > 0, "running domain has an ID > 0");
>
> diag "Waiting for guest to finish booting";
> +my $iface = get_first_interface_target_dev($dom);
> my $stats;
> my $tries = 0;
> do {
> sleep(10);
> - $stats = $dom->interface_stats("vnet0");
> + $stats = $dom->interface_stats($iface);
> $tries++;
> } while ($stats->{"tx_packets"} < 10 && $tries < 10);
>
> diff --git a/scripts/nwfilter/210-no-mac-spoofing.t b/scripts/nwfilter/210-no-mac-spoofing.t
> index 7b74f94..99c5058 100644
> --- a/scripts/nwfilter/210-no-mac-spoofing.t
> +++ b/scripts/nwfilter/210-no-mac-spoofing.t
> @@ -59,11 +59,12 @@ $dom->create;
> ok($dom->get_id() > 0, "running domain has an ID > 0");
>
> diag "Waiting for guest to finish booting";
> +my $iface = get_first_interface_target_dev($dom);
> my $stats;
> my $tries = 0;
> do {
> sleep(10);
> - $stats = $dom->interface_stats("vnet0");
> + $stats = $dom->interface_stats($iface);
> $tries++;
> } while ($stats->{"tx_packets"} < 10 && $tries < 10);
>
> diff --git a/scripts/nwfilter/230-no-mac-broadcast.t b/scripts/nwfilter/230-no-mac-broadcast.t
> index ee2d43f..b65b3fc 100644
> --- a/scripts/nwfilter/230-no-mac-broadcast.t
> +++ b/scripts/nwfilter/230-no-mac-broadcast.t
> @@ -85,11 +85,12 @@ $dom->create;
> ok($dom->get_id() > 0, "running domain has an ID > 0");
>
> diag "Waiting for guest to finish booting";
> +my $iface = get_first_interface_target_dev($dom);
> my $stats;
> my $tries = 0;
> do {
> sleep(10);
> - $stats = $dom->interface_stats("vnet0");
> + $stats = $dom->interface_stats($iface);
> $tries++;
> } while ($stats->{"tx_packets"} < 10 && $tries < 10);
>
> diff --git a/scripts/nwfilter/240-no-arp-spoofing.t b/scripts/nwfilter/240-no-arp-spoofing.t
> index 350b604..69851b6 100644
> --- a/scripts/nwfilter/240-no-arp-spoofing.t
> +++ b/scripts/nwfilter/240-no-arp-spoofing.t
> @@ -58,11 +58,12 @@ $dom->create;
> ok($dom->get_id() > 0, "running domain has an ID > 0");
>
> diag "Waiting for guest to finish booting";
> +my $iface = get_first_interface_target_dev($dom);
> my $stats;
> my $tries = 0;
> do {
> sleep(10);
> - $stats = $dom->interface_stats("vnet0");
> + $stats = $dom->interface_stats($iface);
> $tries++;
> } while ($stats->{"tx_packets"} < 10 && $tries < 10);
>
> --
> 2.14.4
>
Regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
More information about the libvir-list
mailing list