summaryrefslogtreecommitdiff
path: root/selftest/target/Samba4.pm
diff options
context:
space:
mode:
authorAndrew Bartlett <abartlet@samba.org>2010-03-12 10:36:12 +1100
committerAndrew Bartlett <abartlet@samba.org>2010-06-16 09:57:51 +1000
commit697cd139782a8337c1979442fc5d5705e748aa3f (patch)
treeea0ad15ef05b947e3af08c5be613194f659779dd /selftest/target/Samba4.pm
parentec6839ac26ee54c501e3377d446cf9884175034e (diff)
downloadsamba-697cd139782a8337c1979442fc5d5705e748aa3f.tar.gz
samba-697cd139782a8337c1979442fc5d5705e748aa3f.tar.bz2
samba-697cd139782a8337c1979442fc5d5705e748aa3f.zip
s4:selftest Add vampire_dc test environment
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
Diffstat (limited to 'selftest/target/Samba4.pm')
-rw-r--r--selftest/target/Samba4.pm77
1 files changed, 75 insertions, 2 deletions
diff --git a/selftest/target/Samba4.pm b/selftest/target/Samba4.pm
index 343834cb45..0bc9c005e5 100644
--- a/selftest/target/Samba4.pm
+++ b/selftest/target/Samba4.pm
@@ -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) = @_;