On Thu, Oct 07, 2010 at 02:07:23PM +0200, Gerhard Stenzel wrote:
On Wed, 2010-10-06 at 12:52 +0100, Daniel P. Berrange wrote:
> I don't like this approach. JUst add an optional parameter
> to the build_domain methods
>
> my $mode = @_ ? shift : "bridge";
>
>
> eg so it default to traditional bridging, but you can pass
> in 'vepa' if you desire to change it. Or something like
> that.
Thanks for the feedback. The changes are in the attached new versions of
the patches. It would be great if you could push at least
modify_library_functions.patch to the git.
--
Best regards,
Gerhard Stenzel,
-----------------------------------------------------------------------------------------------------------------------------------
IBM Deutschland Research & Development GmbH
Vorsitzender des Aufsichtsrats: Martin Jetter
Geschäftsführung: Dirk Wittkopp
Sitz der Gesellschaft: Böblingen
Registergericht: Amtsgericht Stuttgart, HRB 243294
Index: libvirt-tck/scripts/nwfilter/300-vsitype.t
===================================================================
--- /dev/null
+++ libvirt-tck/scripts/nwfilter/300-vsitype.t
@@ -0,0 +1,71 @@
+# -*- 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 tests => 3;
+
+use Sys::Virt::TCK;
+use Sys::Virt::TCK::NetworkHelpers;
+use Test::Exception;
+use Net::SSH::Perl;
+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;
+}
Since most systems won't yet have lldptool present, you should
surround the entire test from here onwards in a big 'SKIP : {}'
block. eg
SKIP: {
skip "lldptool not present", 3 unless -e "/usr/sbin/lldptool";
.....
+
+# creating domain
+my $dom1;
+my $dom_name ="tck8021Qbgtest";
+
+# speficy mode="vepa" for a direct interface
+$dom1 = prepare_test_disk_and_vm($tck, $conn, $dom_name, "vepa");
+$dom1->create();
+
+ok($dom1->get_id() > 0, "running domain has an ID > 0");
+my $xml = $dom1->get_xml_description;
+diag $xml;
+my $mac1 = get_first_macaddress($dom1);
+diag "mac is $mac1";
+
+sleep(30);
+
+# 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 =~ $mac1, "check mac as well");
+
+
+shutdown_vm_gracefully($dom1);
+
+exit 0;
};
This will ensure that the TCK simply skips over the test
rather than showing a failure
Index: libvirt-tck/lib/Sys/Virt/TCK/DomainBuilder.pm
===================================================================
--- libvirt-tck.orig/lib/Sys/Virt/TCK/DomainBuilder.pm
+++ libvirt-tck/lib/Sys/Virt/TCK/DomainBuilder.pm
@@ -410,8 +410,25 @@ sub as_xml {
$w->emptyTag("mac",
address => $interface->{mac});
- $w->emptyTag("source",
- network => $interface->{source});
+
+ if( $interface->{dev}) {
+ $w->emptyTag("source",
+ dev => $interface->{dev},
+ mode => $interface->{mode});
+ } else {
+ $w->emptyTag("source",
+ network => $interface->{source});
+ }
+ if( $interface->{virtualport}) {
+ $w->startTag("virtualport",
+ type => $interface->{virtualport});
+ $w->emptyTag("parameters",
+ managerid => '1',
+ typeid => '2',
+ typeidversion => '3',
+ instanceid => '40000000-0000-0000-0000-000000000000');
+ $w->endTag("virtualport");
+ }
$w->emptyTag("model",
type => $interface->{model});
if( $interface->{filterref}) {
Index: libvirt-tck/lib/Sys/Virt/TCK/NetworkHelpers.pm
===================================================================
--- libvirt-tck.orig/lib/Sys/Virt/TCK/NetworkHelpers.pm
+++ libvirt-tck/lib/Sys/Virt/TCK/NetworkHelpers.pm
@@ -42,6 +42,7 @@ sub build_cdrom_ks_image {
sub build_domain{
my $tck = shift;
my $domain_name = shift;
+ my $mode = @_ ? shift : "bridge";
my $guest;
my $mac = "52:54:00:11:11:11";
@@ -50,10 +51,19 @@ sub build_domain{
my $filterref = "clean-traffic";
my $network = "network";
my $source = "default";
+ my $dev = "eth2";
+ my $virtualport;
my ($cdrom, $ksurl) = build_cdrom_ks_image($tck);
my $guest = $tck->generic_domain($domain_name);
+
+ # change the type of network connection for 802.1Qbg tests
+ if ($mode eq "vepa") {
+ $network ="direct";
+ $virtualport = "802.1Qbg";
+ }
+
# We want a bigger disk than normal
$guest->rmdisk();
my $diskpath = $tck->create_sparse_disk("nwfilter",
"main.img", 2048);
@@ -79,12 +89,23 @@ sub build_domain{
} else {
diag "Do normal boot";
$guest->clear_kernel_initrd_cmdline();
- $guest->interface(type => $network,
- source => $source,
- model => $model,
- mac => $mac,
- filterref => $filterref);
+ if ($mode eq "vepa") {
+ $guest->interface(type => $network,
+ source => $source,
+ model => $model,
+ mac => $mac,
+ dev => $dev,
+ mode => $mode,
+ virtualport => $virtualport);
+ } else {
+ $guest->interface(type => $network,
+ source => $source,
+ model => $model,
+ mac => $mac,
+ filterref => $filterref);
+ }
}
+
# common configuration
$guest->maxmem("524288");
$guest->memory("524288");
@@ -111,8 +132,9 @@ sub prepare_test_disk_and_vm{
my $tck = shift;
my $conn = shift;
my $domain_name = shift;
+ my $mode = @_ ? shift : "bridge";
- my ($guest, $need_install) = build_domain($tck, $domain_name);
+ my ($guest, $need_install) = build_domain($tck, $domain_name, $mode);
if ($need_install) {
my $dom = $conn->define_domain($guest->as_xml);
diag "Starting installation domain";
@@ -129,7 +151,7 @@ sub prepare_test_disk_and_vm{
diag " .. done";
}
- ($guest, $need_install) = build_domain($tck, $domain_name);
+ ($guest, $need_install) = build_domain($tck, $domain_name, $mode);
if ($need_install) {
die "guest install appears to have failed";
}
This all looks fine now.
Daniel
--
|: Red Hat, Engineering, London -o-
http://people.redhat.com/berrange/ :|
|:
http://libvirt.org -o-
http://virt-manager.org -o-
http://deltacloud.org :|
|:
http://autobuild.org -o-
http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|