s4:selftest Add vampire_dc test environment
authorAndrew Bartlett <abartlet@samba.org>
Thu, 11 Mar 2010 23:36:12 +0000 (10:36 +1100)
committerAndrew Bartlett <abartlet@samba.org>
Tue, 15 Jun 2010 23:57:51 +0000 (09:57 +1000)
This starts a domain controller, after running 'net vampire' to
populate it.  We don't use it as the 'all' environment yet, as the
rest of the code isn't quite ready to handle it.

Andrew Bartlett

selftest/selftest.pl
selftest/target/Samba4.pm

index 6ec429b6ce4284325ba93419be77c36295f75ef1..668afbe65355df57eb4201365646f3efeb36f9cd 100755 (executable)
@@ -767,18 +767,24 @@ my @exported_envvars = (
        "DC_NETBIOSNAME",
        "DC_NETBIOSALIAS",
 
-       # domain controller stuff
+       # domain member
        "MEMBER_SERVER",
        "MEMBER_SERVER_IP",
        "MEMBER_NETBIOSNAME",
        "MEMBER_NETBIOSALIAS",
 
-       # domain controller stuff
+       # rpc proxy controller stuff
        "RPC_PROXY_SERVER",
        "RPC_PROXY_SERVER_IP",
        "RPC_PROXY_NETBIOSNAME",
        "RPC_PROXY_NETBIOSALIAS",
 
+       # domain controller stuff for Vampired DC
+       "VAMPIRE_DC_SERVER",
+       "VAMPIRE_DC_SERVER_IP",
+       "VAMPIRE_DC_NETBIOSNAME",
+       "VAMPIRE_DC_NETBIOSALIAS",
+
        # server stuff
        "SERVER",
        "SERVER_IP",
index 343834cb453eb3033fc2f6e9127e78da36a0fe0b..0bc9c005e58a86844ab4112641661f535b02afd5 100644 (file)
@@ -905,6 +905,58 @@ sub provision_rpc_proxy($$$)
        return $ret;
 }
 
+sub provision_vampire_dc($$$)
+{
+       my ($self, $prefix, $dcvars) = @_;
+       print "PROVISIONING VAMPIRE DC...";
+
+       # We do this so that we don't run the provision.  That's the job of 'net vampire'.
+       my $ctx = $self->provision_raw_prepare($prefix, "domain controller",
+                                              "localvampiredc", "localvampiredc5", 5, $dcvars->{PASSWORD},
+                                              $dcvars->{SERVER_IP});
+
+       $ctx->{smb_conf_extra_options} = "
+       max xmit = 32K
+       server max protocol = SMB2
+
+[sysvol]
+       path = $ctx->{lockdir}/sysvol
+       read only = yes
+
+[netlogon]
+       path = $ctx->{lockdir}/sysvol/$ctx->{dnsname}/scripts
+       read only = no
+
+";
+
+       my $ret = $self->provision_raw_step1($ctx);
+
+       $ret or die("Unable to prepare test env");
+
+       my $net = $self->bindir_path("net");
+       my $cmd = "";
+       $cmd .= "SOCKET_WRAPPER_DEFAULT_IFACE=\"$ret->{SOCKET_WRAPPER_DEFAULT_IFACE}\" ";
+       $cmd .= "KRB5_CONFIG=\"$ret->{KRB5_CONFIG}\" ";
+       $cmd .= "$net vampire $ret->{CONFIGURATION} $dcvars->{DOMAIN} --realm=$dcvars->{REALM}";
+       $cmd .= " -U$dcvars->{DC_USERNAME}\%$dcvars->{DC_PASSWORD}";
+
+       system($cmd) == 0 or die("Join failed\n$cmd");
+
+       $ret->{VAMPIRE_DC_SERVER} = $ret->{SERVER};
+       $ret->{VAMPIRE_DC_SERVER_IP} = $ret->{SERVER_IP};
+       $ret->{VAMPIRE_DC_NETBIOSNAME} = $ret->{NETBIOSNAME};
+       $ret->{VAMPIRE_DC_NETBIOSALIAS} = $ret->{NETBIOSALIAS};
+
+       $ret->{DC_SERVER} = $dcvars->{DC_SERVER};
+       $ret->{DC_SERVER_IP} = $dcvars->{DC_SERVER_IP};
+       $ret->{DC_NETBIOSNAME} = $dcvars->{DC_NETBIOSNAME};
+       $ret->{DC_NETBIOSALIAS} = $dcvars->{DC_NETBIOSALIAS};
+       $ret->{DC_USERNAME} = $dcvars->{DC_USERNAME};
+       $ret->{DC_PASSWORD} = $dcvars->{DC_PASSWORD};
+
+       return $ret;
+}
+
 sub provision_dc($$)
 {
        my ($self, $prefix) = @_;
@@ -1011,6 +1063,11 @@ sub setup_env($$$)
                        $self->setup_dc("$path/dc");
                }
                return $self->setup_rpc_proxy("$path/rpc_proxy", $self->{vars}->{dc});
+       } elsif ($envname eq "vampire_dc") {
+               if (not defined($self->{vars}->{dc})) {
+                       $self->setup_dc("$path/dc");
+               }
+               return $self->setup_vampire_dc("$path/vampire_dc", $self->{vars}->{dc});
        } elsif ($envname eq "member") {
                if (not defined($self->{vars}->{dc})) {
                        $self->setup_dc("$path/dc");
@@ -1037,7 +1094,7 @@ sub setup_env($$$)
        }
 }
 
-sub setup_member($$$$)
+sub setup_member($$$)
 {
        my ($self, $path, $dc_vars) = @_;
 
@@ -1052,7 +1109,7 @@ sub setup_member($$$$)
        return $env;
 }
 
-sub setup_rpc_proxy($$$$)
+sub setup_rpc_proxy($$$)
 {
        my ($self, $path, $dc_vars) = @_;
 
@@ -1083,6 +1140,22 @@ sub setup_dc($$)
        return $env;
 }
 
+sub setup_vampire_dc($$$)
+{
+       my ($self, $path, $dc_vars) = @_;
+
+       my $env = $self->provision_vampire_dc($path, $dc_vars);
+
+       $self->check_or_start($env,
+               ($ENV{SMBD_MAXTIME} or 7500));
+
+       $self->wait_for_start($env);
+
+       $self->{vars}->{vampire_dc} = $env;
+
+       return $env;
+}
+
 sub stop($)
 {
        my ($self) = @_;