s4:selftest Add vampire_dc test environment
authorAndrew Bartlett <abartlet@samba.org>
Thu, 11 Mar 2010 23:36:12 +0000 (10:36 +1100)
committerKamen Mazdrashki <kamenim@samba.org>
Thu, 10 Jun 2010 22:22:08 +0000 (01:22 +0300)
This starts a domain controller, after running 'net vampire' to
populate it.

Andrew Bartlett

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

index 6ec429b6ce4284325ba93419be77c36295f75ef1..735ba95d70dd994d03adeea95f36a01dd230436e 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",
 
+       # rpc proxy controller stuff
+       "VAMPIRE_DC_SERVER",
+       "VAMPIRE_DC_SERVER_IP",
+       "VAMPIRE_DC_NETBIOSNAME",
+       "VAMPIRE_DC_NETBIOSALIAS",
+
        # server stuff
        "SERVER",
        "SERVER_IP",
index e82ccfdfab264d0aeff95d8bc47cc845a746199b..9ec0ed060d20352fe30d1a7ecc98a4102a8041bf 100644 (file)
@@ -909,6 +909,51 @@ 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};
+
+       return $ret;
+}
+
 sub provision_dc($$)
 {
        my ($self, $prefix) = @_;
@@ -1015,6 +1060,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");
@@ -1035,13 +1085,23 @@ sub setup_env($$$)
                        $ret->{RPC_PROXY_USERNAME} = $rpc_proxy_ret->{USERNAME};
                        $ret->{RPC_PROXY_PASSWORD} = $rpc_proxy_ret->{PASSWORD};
                }
+               if (not defined($self->{vars}->{vampire_dc})) {
+                       my $vampire_dc_ret = $self->setup_vampire_dc("$path/vampire_dc", $self->{vars}->{dc});
+
+                       $ret->{VAMPIRE_DC_SERVER} = $vampire_dc_ret->{SERVER};
+                       $ret->{VAMPIRE_DC_SERVER_IP} = $vampire_dc_ret->{SERVER_IP};
+                       $ret->{VAMPIRE_DC_NETBIOSNAME} = $vampire_dc_ret->{NETBIOSNAME};
+                       $ret->{VAMPIRE_DC_NETBIOSALIAS} = $vampire_dc_ret->{NETBIOSALIAS};
+                       $ret->{VAMPIRE_DC_USERNAME} = $vampire_dc_ret->{USERNAME};
+                       $ret->{VAMPIRE_DC_PASSWORD} = $vampire_dc_ret->{PASSWORD};
+               }
                return $ret;
        } else {
                die("Samba4 can't provide environment '$envname'");
        }
 }
 
-sub setup_member($$$$)
+sub setup_member($$$)
 {
        my ($self, $path, $dc_vars) = @_;
 
@@ -1056,7 +1116,7 @@ sub setup_member($$$$)
        return $env;
 }
 
-sub setup_rpc_proxy($$$$)
+sub setup_rpc_proxy($$$)
 {
        my ($self, $path, $dc_vars) = @_;
 
@@ -1087,6 +1147,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) = @_;