selftest: Rework setting env variables for nmbd
authorTim Beale <timbeale@catalyst.net.nz>
Thu, 23 May 2019 03:47:46 +0000 (15:47 +1200)
committerAndrew Bartlett <abartlet@samba.org>
Fri, 24 May 2019 03:19:17 +0000 (03:19 +0000)
Instead of having a special $skip_resolv_conf parameter just for nmbd,
use the get_env_for_process() API and customize the hashmap returned.
Pass the customized hashmap in as an optional part of the daemon_ctx.

Signed-off-by: Tim Beale <timbeale@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
selftest/target/Samba.pm
selftest/target/Samba3.pm

index ebbd5847e0cef93303f1bab63abf722803cc772b..5a359fe6970d22593835009526d54096ef4ee6d0 100644 (file)
@@ -583,9 +583,11 @@ sub random_domain_sid()
 # sets the environment variables ready for running a given process
 sub set_env_for_process
 {
-       my ($proc_name, $env_vars, $skip_resolv_wrapper) = @_;
+       my ($proc_name, $env_vars, $proc_envs) = @_;
 
-       $proc_envs = get_env_for_process($proc_name, $env_vars, $skip_resolv_wrapper);
+       if (not defined($proc_envs)) {
+               $proc_envs = get_env_for_process($proc_name, $env_vars);
+       }
 
        foreach my $key (keys %{ $proc_envs }) {
                $ENV{$key} = $proc_envs->{$key};
@@ -594,7 +596,7 @@ sub set_env_for_process
 
 sub get_env_for_process
 {
-       my ($proc_name, $env_vars, $skip_resolv_wrapper) = @_;
+       my ($proc_name, $env_vars) = @_;
        my $proc_envs = {
                KRB5_CONFIG => $env_vars->{KRB5_CONFIG},
                KRB5CCNAME => "$env_vars->{KRB5_CCACHE}.$proc_name",
@@ -610,12 +612,10 @@ sub get_env_for_process
                ENVNAME => "$ENV{ENVNAME}.$proc_name",
        };
 
-       if (not defined($skip_resolv_wrapper)) {
-               if (defined($env_vars->{RESOLV_WRAPPER_CONF})) {
-                       $proc_envs->{RESOLV_WRAPPER_CONF} = $env_vars->{RESOLV_WRAPPER_CONF};
-               } else {
-                       $proc_envs->{RESOLV_WRAPPER_HOSTS} = $env_vars->{RESOLV_WRAPPER_HOSTS};
-               }
+       if (defined($env_vars->{RESOLV_WRAPPER_CONF})) {
+               $proc_envs->{RESOLV_WRAPPER_CONF} = $env_vars->{RESOLV_WRAPPER_CONF};
+       } else {
+               $proc_envs->{RESOLV_WRAPPER_HOSTS} = $env_vars->{RESOLV_WRAPPER_HOSTS};
        }
        return $proc_envs;
 }
index 7a99740334cfccabf250c59a8a3771deeb083cd3..59cf8e0055d954debba0dbc844fe2bd87e3feb0d 100755 (executable)
@@ -1270,12 +1270,15 @@ sub check_or_start($$$$$) {
        my @full_cmd = $self->make_bin_cmd($binary, $env_vars,
                                           $ENV{NMBD_OPTIONS}, $ENV{NMBD_VALGRIND},
                                           $ENV{NMBD_DONT_LOG_STDOUT});
+       my $nmbd_envs = Samba::get_env_for_process("nmbd", $env_vars);
+       delete $nmbd_envs->{RESOLV_WRAPPER_CONF};
+       delete $nmbd_envs->{RESOLV_WRAPPER_HOSTS};
        my %daemon_ctx = (
                NAME => "nmbd",
                BINARY_PATH => $binary,
                FULL_CMD => [ @full_cmd ],
                LOG_FILE => $env_vars->{NMBD_TEST_LOG},
-               NO_RESOLV => 1,
+               ENV_VARS => $nmbd_envs,
        );
        if ($nmbd ne "yes") {
                $daemon_ctx{SKIP_DAEMON} = 1;
@@ -1290,7 +1293,7 @@ sub check_or_start($$$$$) {
 
                SocketWrapper::set_default_iface($env_vars->{SOCKET_WRAPPER_DEFAULT_IFACE});
 
-               Samba::set_env_for_process($daemon_ctx{NAME}, $env_vars, $daemon_ctx{NO_RESOLV});
+               Samba::set_env_for_process($daemon_ctx{NAME}, $env_vars, $daemon_ctx{ENV_VARS});
 
                if (defined($daemon_ctx{SKIP_DAEMON})) {
                        $SIG{USR1} = $SIG{ALRM} = $SIG{INT} = $SIG{QUIT} = $SIG{TERM} = sub {