summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source4/selftest/env/Samba3.pm76
1 files changed, 63 insertions, 13 deletions
diff --git a/source4/selftest/env/Samba3.pm b/source4/selftest/env/Samba3.pm
index 1e3b155a58..546556eff1 100644
--- a/source4/selftest/env/Samba3.pm
+++ b/source4/selftest/env/Samba3.pm
@@ -36,11 +36,14 @@ sub teardown_env($$)
my $smbdpid = read_pid($envvars, "smbd");
my $nmbdpid = read_pid($envvars, "nmbd");
+ my $winbinddpid = read_pid($envvars, "winbindd");
$self->stop_sig_term($smbdpid);
$self->stop_sig_term($nmbdpid);
+ $self->stop_sig_term($winbinddpid);
$self->stop_sig_kill($smbdpid);
$self->stop_sig_kill($nmbdpid);
+ $self->stop_sig_kill($winbinddpid);
return 0;
}
@@ -69,8 +72,13 @@ sub getlog_env_app($$$)
sub getlog_env($$)
{
my ($self, $envvars) = @_;
+ my $ret = "";
- return $self->getlog_env_app($envvars, "SMBD") . $self->getlog_env_app($envvars, "NMBD");
+ $ret .= $self->getlog_env_app($envvars, "SMBD");
+ $ret .= $self->getlog_env_app($envvars, "NMBD");
+ $ret .= $self->getlog_env_app($envvars, "WINBINDD");
+
+ return $ret;
}
sub check_env($$)
@@ -98,7 +106,10 @@ sub setup_dc($$)
my $vars = $self->provision($path, "dc");
- $self->check_or_start($vars, ($ENV{NMBD_MAXTIME} or 2700), ($ENV{SMBD_MAXTIME} or 2700));
+ $self->check_or_start($vars,
+ ($ENV{NMBD_MAXTIME} or 2700),
+ ($ENV{WINBINDD_MAXTIME} or 2700),
+ ($ENV{SMBD_MAXTIME} or 2700));
$self->wait_for_start($vars);
@@ -140,7 +151,7 @@ sub read_pid($$)
}
sub check_or_start($$$$) {
- my ($self, $env_vars, $nmbd_maxtime, $smbd_maxtime) = @_;
+ my ($self, $env_vars, $nmbd_maxtime, $winbindd_maxtime, $smbd_maxtime) = @_;
unlink($env_vars->{NMBD_TEST_LOG});
print "STARTING NMBD...";
@@ -148,20 +159,39 @@ sub check_or_start($$$$) {
if ($pid == 0) {
open STDOUT, ">$env_vars->{NMBD_TEST_LOG}";
open STDERR, '>&STDOUT';
-
+
+ $ENV{WINBINDD_SOCKET_DIR} = $env_vars->{WINBINDD_SOCKET_DIR};
+
$ENV{MAKE_TEST_BINARY} = $self->binpath("nmbd");
exec($self->binpath("timelimit"), $nmbd_maxtime, $self->binpath("nmbd"), "-F", "-S", "-d0", "--no-process-group", "-s", $env_vars->{SERVERCONFFILE}) or die("Unable to start nmbd: $!");
}
write_pid($env_vars, "nmbd", $pid);
print "DONE\n";
+ unlink($env_vars->{WINBINDD_TEST_LOG});
+ print "STARTING WINBINDD...";
+ my $pid = fork();
+ if ($pid == 0) {
+ open STDOUT, ">$env_vars->{WINBINDD_TEST_LOG}";
+ open STDERR, '>&STDOUT';
+
+ $ENV{WINBINDD_SOCKET_DIR} = $env_vars->{WINBINDD_SOCKET_DIR};
+
+ $ENV{MAKE_TEST_BINARY} = $self->binpath("winbindd");
+ exec($self->binpath("timelimit"), $winbindd_maxtime, $self->binpath("winbindd"), "-F", "-S", "-d0", "--no-process-group", "-s", $env_vars->{SERVERCONFFILE}) or die("Unable to start winbindd: $!");
+ }
+ write_pid($env_vars, "winbindd", $pid);
+ print "DONE\n";
+
unlink($env_vars->{SMBD_TEST_LOG});
print "STARTING SMBD...";
$pid = fork();
if ($pid == 0) {
open STDOUT, ">$env_vars->{SMBD_TEST_LOG}";
open STDERR, '>&STDOUT';
-
+
+ $ENV{WINBINDD_SOCKET_DIR} = $env_vars->{WINBINDD_SOCKET_DIR};
+
$ENV{MAKE_TEST_BINARY} = $self->binpath("smbd");
exec($self->binpath("timelimit"), $smbd_maxtime, $self->binpath("smbd"), "-F", "-S", "-d0" , "--no-process-group", "-s", $env_vars->{SERVERCONFFILE}) or die("Unable to start smbd: $!");
}
@@ -216,6 +246,8 @@ sub provision($$$)
my %ret = ();
my $server = "localhost2";
my $server_ip = "127.0.0.2";
+ my $domain = "SAMBA-TEST";
+
my $username = `PATH=/usr/ucb:$ENV{PATH} whoami`;
chomp $username;
my $password = "test";
@@ -223,14 +255,29 @@ sub provision($$$)
my $srcdir="$RealBin/..";
my $scriptdir="$srcdir/selftest";
my $prefix_abs = abs_path($prefix);
- my $shrdir="$prefix_abs/tmp";
+
+ my @dirs = ();
+
+ my $shrdir="$prefix_abs/share";
+ push(@dirs,$shrdir);
+
my $libdir="$prefix_abs/lib";
+ push(@dirs,$libdir);
+
my $piddir="$prefix_abs/pid";
- my $conffile="$libdir/server.conf";
+ push(@dirs,$piddir);
+
my $privatedir="$prefix_abs/private";
+ push(@dirs,$privatedir);
+
my $lockdir="$prefix_abs/lockdir";
+ push(@dirs,$lockdir);
+
my $logdir="$prefix_abs/logs";
- my $domain = "SAMBA-TEST";
+ push(@dirs,$logdir);
+
+ # this gets autocreated by winbindd
+ my $wbsockdir="$prefix_abs/winbindd";
##
## create the test directory layout
@@ -238,10 +285,9 @@ sub provision($$$)
mkdir($prefix_abs, 0777);
print "CREATE TEST ENVIRONMENT IN '$prefix'...";
system("rm -rf $prefix_abs/*");
- mkdir($_, 0777) foreach($privatedir,$libdir,$piddir,$lockdir,$logdir);
- my $tmpdir = "$prefix_abs/tmp";
- mkdir($tmpdir, 0777);
- chmod 0777, $tmpdir;
+ mkdir($_, 0777) foreach(@dirs);
+
+ my $conffile="$libdir/server.conf";
open(CONF, ">$conffile") or die("Unable to open $conffile");
print CONF "
@@ -283,8 +329,10 @@ sub provision($$$)
print CONF "
+ winbindd:socket dir = $wbsockdir
+
[tmp]
- path = $tmpdir
+ path = $shrdir
read only = no
smbd:sharedelay = 100000
map hidden = yes
@@ -321,6 +369,7 @@ print CONF "
$ret{SERVER_IP} = $server_ip;
$ret{NMBD_TEST_LOG} = "$prefix/nmbd_test.log";
+ $ret{WINBINDD_TEST_LOG} = "$prefix/winbindd_test.log";
$ret{SMBD_TEST_LOG} = "$prefix/smbd_test.log";
$ret{SERVERCONFFILE} = $conffile;
$ret{CONFIGURATION} ="-s $conffile";
@@ -330,6 +379,7 @@ print CONF "
$ret{NETBIOSNAME} = $server;
$ret{PASSWORD} = $password;
$ret{PIDDIR} = $piddir;
+ $ret{WINBINDD_SOCKET_DIR} = $wbsockdir;
return \%ret;
}