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). Signed-off-by: Laine Stump <laine@xxxxxxxxx> --- 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(-) 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 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list