Initial work on vde support.
authorJelmer Vernooij <jelmer@samba.org>
Tue, 19 Feb 2008 20:51:09 +0000 (21:51 +0100)
committerJelmer Vernooij <jelmer@samba.org>
Tue, 19 Feb 2008 20:51:09 +0000 (21:51 +0100)
(This used to be commit 9b0dcac0bd805c3e1741448167b461c3fa0e33fd)

source4/selftest/selftest.pl
source4/selftest/target/Kvm.pm

index c17e790f63e631b401f4e061b0e320281ec1f3fa..996b982e06ba748979d20b0b05ebde51f683f6cd 100755 (executable)
@@ -452,7 +452,7 @@ if ($opt_target eq "samba4") {
                if ($opt_socket_wrapper);
        require target::Kvm;
        die("No image specified") unless ($opt_image);
-       $target = new Kvm($opt_image);
+       $target = new Kvm($opt_image, undef);
 }
 
 sub read_test_regexes($)
index 253f3b53af09b6a4235e6a134ffdf121b6a4d4a0..3b17a2909c6dce67463f2ef8d4fe9ba31f4b3d0a 100644 (file)
@@ -11,9 +11,10 @@ use FindBin qw($RealBin);
 use POSIX;
 
 sub new($$$$) {
-       my ($classname, $dc_image) = @_;
+       my ($classname, $dc_image, $vdesocket) = @_;
        my $self = { 
                dc_image => $dc_image,
+               vdesocket => $vdesocket,
        };
        bless $self;
        return $self;
@@ -60,8 +61,10 @@ sub teardown_env($$)
 
        kill 9, $envvars->{KVM_PID};
 
-       print "Killing dhcpd instance $envvars->{DHCPD_PID}\n";
-       kill 9, $envvars->{DHCPD_PID};
+       if (defined($envvars->{DHCPD_PID})) {
+               print "Killing dhcpd instance $envvars->{DHCPD_PID}\n";
+               kill 9, $envvars->{DHCPD_PID};
+       }
 
        return 0;
 }
@@ -105,11 +108,22 @@ sub start($$$)
                $opts .= " -loadvm $ENV{KVM_SNAPSHOT}";
        }
 
-       my ($ifup_script, $dhcpd_pidfile, $ip_address) = $self->write_kvm_ifup($path, "192.168.9");
+       my $netopts;
+       my $dhcp_pid;
+       my $ip_address;
+
+       if ($self->{vdesocket}) {
+               $netopts = "vde,socket=$self->{vdesocket}";
+       } else {
+               my $ifup_script, $dhcpd_pidfile;
+               ($ifup_script, $dhcpd_pidfile, $ip_address) = $self->write_kvm_ifup($path, "192.168.9");
+               $netopts = "tap,script=$ifup_script";
+               $dhcp_pid = read_pidfile($dhcpd_pidfile);
+       }
 
-       system("kvm -name \"Samba 4 Test Subject\" $opts -monitor unix:$path/kvm.monitor,server,nowait -daemonize -pidfile $pidfile -snapshot $image -net nic -net tap,script=$ifup_script");
+       system("kvm -name \"Samba 4 Test Subject\" $opts -monitor unix:$path/kvm.monitor,server,nowait -daemonize -pidfile $pidfile -snapshot $image -net nic -net $netopts");
 
-       return (read_pidfile($pidfile), read_pidfile($dhcpd_pidfile), $ip_address);
+       return (read_pidfile($pidfile), $dhcp_pid, $ip_address);
 }
 
 sub setup_env($$$)