summaryrefslogtreecommitdiff
path: root/selftest/target
diff options
context:
space:
mode:
authorJamie McClymont <jamiemcclymont@catalyst.net.nz>2017-12-08 15:20:36 +1300
committerAndrew Bartlett <abartlet@samba.org>2017-12-20 08:50:25 +0100
commit676261fa08273114b888bb46f65de3de091b615b (patch)
tree38a8acd1c5996e321ce6bc6c87e0cb5a97c4c6f7 /selftest/target
parentaf005fcc845ae3cd233dcb929fe774f38aaf38d8 (diff)
downloadsamba-676261fa08273114b888bb46f65de3de091b615b.tar.gz
selftest: replace global with explicit environment variables
This patch removes setting of NSS_WRAPPER and RESOLV_WRAPPER variables globally in Samba3.pm (because setting them persistently/globally can create hidden ordering dependencies). Instead, they are set on subprocesses as required, which appears to be the following two places (aside from those places where they are already set explicitly): * calls to createuser in provision * calls to wbinfo --ping-dc in wait_for_start Signed-off-by: Jamie McClymont <jamiemcclymont@catalyst.net.nz> Reviewed-by: Garming Sam <garming@catalyst.net.nz> Reviewed-by: Andrew Bartlett <abartlet@samba.org> Autobuild-User(master): Andrew Bartlett <abartlet@samba.org> Autobuild-Date(master): Wed Dec 20 08:50:26 CET 2017 on sn-devel-144
Diffstat (limited to 'selftest/target')
-rwxr-xr-xselftest/target/Samba3.pm41
1 files changed, 27 insertions, 14 deletions
diff --git a/selftest/target/Samba3.pm b/selftest/target/Samba3.pm
index 229435dda74..c9888c2dca3 100755
--- a/selftest/target/Samba3.pm
+++ b/selftest/target/Samba3.pm
@@ -1374,10 +1374,16 @@ sub check_or_start($$$$$) {
return $self->wait_for_start($env_vars, $nmbd, $winbindd, $smbd);
}
-sub createuser($$$$)
+sub createuser($$$$$)
{
- my ($self, $username, $password, $conffile) = @_;
+ my ($self, $username, $password, $conffile, $env) = @_;
my $cmd = "UID_WRAPPER_ROOT=1 " . Samba::bindir_path($self, "smbpasswd")." -c $conffile -L -s -a $username > /dev/null";
+
+ keys %$env;
+ while(my($var, $val) = each %$env) {
+ $cmd = "$var=\"$val\" $cmd";
+ }
+
unless (open(PWD, "|$cmd")) {
warn("Unable to set password for $username account\n$cmd");
return undef;
@@ -1399,6 +1405,7 @@ sub provision($$$$$$$$$)
my $swiface = Samba::get_interface($server);
my %ret = ();
+ my %createuser_env = ();
my $server_ip = "127.0.0.$swiface";
my $server_ipv6 = sprintf("fd00:0000:0000:0000:0000:0000:5357:5f%02x", $swiface);
@@ -2242,21 +2249,21 @@ force_user:x:$gid_force_user:
close(EVENTLOG);
}
- $ENV{NSS_WRAPPER_PASSWD} = $nss_wrapper_passwd;
- $ENV{NSS_WRAPPER_GROUP} = $nss_wrapper_group;
- $ENV{NSS_WRAPPER_HOSTS} = $nss_wrapper_hosts;
- $ENV{NSS_WRAPPER_HOSTNAME} = "${hostname}.samba.example.com";
+ $createuser_env{NSS_WRAPPER_PASSWD} = $nss_wrapper_passwd;
+ $createuser_env{NSS_WRAPPER_GROUP} = $nss_wrapper_group;
+ $createuser_env{NSS_WRAPPER_HOSTS} = $nss_wrapper_hosts;
+ $createuser_env{NSS_WRAPPER_HOSTNAME} = "${hostname}.samba.example.com";
if ($ENV{SAMBA_DNS_FAKING}) {
- $ENV{RESOLV_WRAPPER_CONF} = $resolv_conf;
+ $createuser_env{RESOLV_WRAPPER_CONF} = $resolv_conf;
} else {
- $ENV{RESOLV_WRAPPER_HOSTS} = $dns_host_file;
+ $createuser_env{RESOLV_WRAPPER_HOSTS} = $dns_host_file;
}
- createuser($self, $unix_name, $password, $conffile) || die("Unable to create user");
- createuser($self, "force_user", $password, $conffile) || die("Unable to create force_user");
- createuser($self, "smbget_user", $password, $conffile) || die("Unable to create smbget_user");
- createuser($self, "user1", $password, $conffile) || die("Unable to create user1");
- createuser($self, "user2", $password, $conffile) || die("Unable to create user2");
+ createuser($self, $unix_name, $password, $conffile, \%createuser_env) || die("Unable to create user");
+ createuser($self, "force_user", $password, $conffile, \%createuser_env) || die("Unable to create force_user");
+ createuser($self, "smbget_user", $password, $conffile, \%createuser_env) || die("Unable to create smbget_user");
+ createuser($self, "user1", $password, $conffile, \%createuser_env) || die("Unable to create user1");
+ createuser($self, "user2", $password, $conffile, \%createuser_env) || die("Unable to create user2");
open(DNS_UPDATE_LIST, ">$prefix/dns_update_list") or die("Unable to open $$prefix/dns_update_list");
print DNS_UPDATE_LIST "A $server. $server_ip\n";
@@ -2350,9 +2357,15 @@ sub wait_for_start($$$$$)
if ($winbindd eq "yes") {
print "checking for winbindd\n";
my $count = 0;
+ my $cmd = "";
+ $cmd .= "SELFTEST_WINBINDD_SOCKET_DIR='$envvars->{SELFTEST_WINBINDD_SOCKET_DIR}' ";
+ $cmd .= "NSS_WRAPPER_PASSWD='$envvars->{NSS_WRAPPER_PASSWD}' ";
+ $cmd .= "NSS_WRAPPER_GROUP='$envvars->{NSS_WRAPPER_GROUP}' ";
+ $cmd .= Samba::bindir_path($self, "wbinfo") . " --ping-dc";
+
do {
- $ret = system("SELFTEST_WINBINDD_SOCKET_DIR=" . $envvars->{SELFTEST_WINBINDD_SOCKET_DIR} . " " . Samba::bindir_path($self, "wbinfo") . " --ping-dc");
if ($ret != 0) {
+ $ret = system($cmd);
sleep(1);
}
$count++;