[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