Hi list,
so since the beginning of this week I've been poking at the last failure [1]
in the nwfilter segment of the TCK suite. So, the errors come from libnl
although I haven't been able to extract what the true underlying issue is since
interface with ID '8' definitely exist on my system.
A bit of background (you can either clone the repo or look at the Perl script
attached), we're configuring the guest network interface as 'direct' with mode
VEPA. IIUC, for proper VEPA support you need a compliant external switch which
1) I don't have
2) upstream CI planned to run in a nested env won't have either.
The main issue lies in the test trying to set <virtualport> parameters on the
interface. I've tried with regular network interfaces, vlan-tagged interfaces
(as one of the other error messages complained about a missing vlan tag - which
is something VEPA switches supposedly do on their own), and SR-IOV VFs with no
luck. I'd be happy for any networking insights here, but given the setup
which had clearly been tested with specialized HW I'd suggest simply disabling
the test from the suite for upstream purposes - well, the correct approach
would be to introduce a new config option indicating that specialized HW is
necessary since currently the test case kind of abuses the config option
assigning a virtual interface directly to the guest which in this case is a
necessary condition, but not a sufficient one. However, with the Avocado<->TCK
joined work happening, I'd rather not spent more time with Perl than necessary.
[1]
virNetDevVPortProfileOpSetLink:823 : error during virtual port configuration of
ifindex 8: No such device or address
virNetDevVPortProfileOpCommon:958 : internal error: sending of
PortProfileRequest failed.
Thanks,
Erik
# -*- perl -*-
#
# Copyright (C) 2010 IBM Corp.
#
# This program is free software; You can redistribute it and/or modify
# it under the GNU General Public License as published by the Free
# Software Foundation; either version 2, or (at your option) any
# later version
#
# The file "LICENSE" distributed along with this file provides full
# details of the terms and conditions
#
=pod
=head1 NAME
nwfilter/300-vsitype.t - verify VSI informatio
=head1 DESCRIPTION
The test case validates that the corrrect VSI is set in the adjacent switch
=cut
use strict;
use warnings;
use Test::More;
use Sys::Virt::TCK;
use Test::Exception;
use File::Spec::Functions qw(catfile catdir rootdir);
my $tck = Sys::Virt::TCK->new();
my $conn = eval { $tck->setup(); };
BAIL_OUT "failed to setup test harness: $@" if $@;
END {
$tck->cleanup if $tck;
}
if ( ! -e '/usr/sbin/lldptool' ) {
$tck->cleanup if $tck;
eval "use Test::More skip_all => \"lldptool is not available\";";
} elsif (!$tck->get_host_network_device()) {
$tck->cleanup if $tck;
eval "use Test::More skip_all => \"no host net device configured\";";
} else {
eval "use Test::More tests => 4";
}
# create first domain and start it
my $xml = $tck->generic_domain(name => "tck", fullos => 1,
netmode => "vepa")->as_xml();
my $dom;
ok_domain(sub { $dom = $conn->define_domain($xml) }, "created persistent domain object");
diag "Start domain";
$dom->create;
ok($dom->get_id() > 0, "running domain has an ID > 0");
diag "Waiting 30 seconds for guest to finish booting";
sleep(30);
# ping guest first nic
my $mac = get_first_macaddress($dom);
diag "mac is $mac";
# check vsi information
diag "Verifying VSI information using lldptool";
my $lldptool = `/usr/sbin/lldptool -t -i eth2 -V vdp mode`;
diag $lldptool;
# check if instance is listed
ok($lldptool =~ "instance", "check instance");
ok($lldptool =~ $mac, "check mac as well");
shutdown_vm_gracefully($dom);
$dom->undefine();
exit 0;