[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [libvirt] [libvirt-tck] [RFC] 802.1Qbg test scripts



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;
+}
+
+# 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;
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";
     }

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]