selftest: Refactor duplicated code to set ENV vars
authorTim Beale <timbeale@catalyst.net.nz>
Mon, 20 May 2019 23:27:45 +0000 (11:27 +1200)
committerAndrew Bartlett <abartlet@samba.org>
Fri, 24 May 2019 03:19:17 +0000 (03:19 +0000)
Whenever we started a process, we basically used the same code to setup
the ENV variables.

The s4 ENVNAME may now be slightly different in the child process that
runs samba (i.e. '$testenv.samba'), but that ENV var did not appeared to
be used much.

I'm not sure if the current difference in $skip_resolv_wrapper logic for
nmbd was deliberate or accidental, but I've preserved the logic for now.

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

index 38b38669dac95e61f07c06270535aade6422eb28..ebbd5847e0cef93303f1bab63abf722803cc772b 100644 (file)
@@ -580,6 +580,46 @@ sub random_domain_sid()
        return $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) = @_;
+
+       $proc_envs = get_env_for_process($proc_name, $env_vars, $skip_resolv_wrapper);
+
+       foreach my $key (keys %{ $proc_envs }) {
+               $ENV{$key} = $proc_envs->{$key};
+       }
+}
+
+sub get_env_for_process
+{
+       my ($proc_name, $env_vars, $skip_resolv_wrapper) = @_;
+       my $proc_envs = {
+               KRB5_CONFIG => $env_vars->{KRB5_CONFIG},
+               KRB5CCNAME => "$env_vars->{KRB5_CCACHE}.$proc_name",
+               SELFTEST_WINBINDD_SOCKET_DIR => $env_vars->{SELFTEST_WINBINDD_SOCKET_DIR},
+               NMBD_SOCKET_DIR => $env_vars->{NMBD_SOCKET_DIR},
+               NSS_WRAPPER_PASSWD => $env_vars->{NSS_WRAPPER_PASSWD},
+               NSS_WRAPPER_GROUP => $env_vars->{NSS_WRAPPER_GROUP},
+               NSS_WRAPPER_HOSTS => $env_vars->{NSS_WRAPPER_HOSTS},
+               NSS_WRAPPER_HOSTNAME => $env_vars->{NSS_WRAPPER_HOSTNAME},
+               NSS_WRAPPER_MODULE_SO_PATH => $env_vars->{NSS_WRAPPER_MODULE_SO_PATH},
+               NSS_WRAPPER_MODULE_FN_PREFIX => $env_vars->{NSS_WRAPPER_MODULE_FN_PREFIX},
+               UID_WRAPPER_ROOT => "1",
+               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};
+               }
+       }
+       return $proc_envs;
+}
+
 my @exported_envvars = (
        # domain stuff
        "DOMAIN",
index a9c554fc50e7322897e486e061f7d9f21ff81045..1996386bbac0481a1cf34010fefa20f17e10ffd0 100755 (executable)
@@ -1251,20 +1251,8 @@ sub check_or_start($$$$$) {
 
                SocketWrapper::set_default_iface($env_vars->{SOCKET_WRAPPER_DEFAULT_IFACE});
 
-               $ENV{KRB5_CONFIG} = $env_vars->{KRB5_CONFIG};
-               $ENV{KRB5CCNAME} = "$env_vars->{KRB5_CCACHE}.nmbd";
-               $ENV{SELFTEST_WINBINDD_SOCKET_DIR} = $env_vars->{SELFTEST_WINBINDD_SOCKET_DIR};
-               $ENV{NMBD_SOCKET_DIR} = $env_vars->{NMBD_SOCKET_DIR};
-
-               $ENV{NSS_WRAPPER_PASSWD} = $env_vars->{NSS_WRAPPER_PASSWD};
-               $ENV{NSS_WRAPPER_GROUP} = $env_vars->{NSS_WRAPPER_GROUP};
-               $ENV{NSS_WRAPPER_HOSTS} = $env_vars->{NSS_WRAPPER_HOSTS};
-               $ENV{NSS_WRAPPER_HOSTNAME} = $env_vars->{NSS_WRAPPER_HOSTNAME};
-               $ENV{NSS_WRAPPER_MODULE_SO_PATH} = $env_vars->{NSS_WRAPPER_MODULE_SO_PATH};
-               $ENV{NSS_WRAPPER_MODULE_FN_PREFIX} = $env_vars->{NSS_WRAPPER_MODULE_FN_PREFIX};
-               $ENV{UID_WRAPPER_ROOT} = "1";
-
-               $ENV{ENVNAME} = "$ENV{ENVNAME}.nmbd";
+               my $skip_resolv_wrapper = 1;
+               Samba::set_env_for_process("nmbd", $env_vars, $skip_resolv_wrapper);
 
                if ($nmbd ne "yes") {
                        $SIG{USR1} = $SIG{ALRM} = $SIG{INT} = $SIG{QUIT} = $SIG{TERM} = sub {
@@ -1311,25 +1299,7 @@ sub check_or_start($$$$$) {
 
                SocketWrapper::set_default_iface($env_vars->{SOCKET_WRAPPER_DEFAULT_IFACE});
 
-               $ENV{KRB5_CONFIG} = $env_vars->{KRB5_CONFIG};
-               $ENV{KRB5CCNAME} = "$env_vars->{KRB5_CCACHE}.winbindd";
-               $ENV{SELFTEST_WINBINDD_SOCKET_DIR} = $env_vars->{SELFTEST_WINBINDD_SOCKET_DIR};
-               $ENV{NMBD_SOCKET_DIR} = $env_vars->{NMBD_SOCKET_DIR};
-
-               $ENV{NSS_WRAPPER_PASSWD} = $env_vars->{NSS_WRAPPER_PASSWD};
-               $ENV{NSS_WRAPPER_GROUP} = $env_vars->{NSS_WRAPPER_GROUP};
-               $ENV{NSS_WRAPPER_HOSTS} = $env_vars->{NSS_WRAPPER_HOSTS};
-               $ENV{NSS_WRAPPER_HOSTNAME} = $env_vars->{NSS_WRAPPER_HOSTNAME};
-               $ENV{NSS_WRAPPER_MODULE_SO_PATH} = $env_vars->{NSS_WRAPPER_MODULE_SO_PATH};
-               $ENV{NSS_WRAPPER_MODULE_FN_PREFIX} = $env_vars->{NSS_WRAPPER_MODULE_FN_PREFIX};
-               if (defined($env_vars->{RESOLV_WRAPPER_CONF})) {
-                       $ENV{RESOLV_WRAPPER_CONF} = $env_vars->{RESOLV_WRAPPER_CONF};
-               } else {
-                       $ENV{RESOLV_WRAPPER_HOSTS} = $env_vars->{RESOLV_WRAPPER_HOSTS};
-               }
-               $ENV{UID_WRAPPER_ROOT} = "1";
-
-               $ENV{ENVNAME} = "$ENV{ENVNAME}.winbindd";
+               Samba::set_env_for_process("winbindd", $env_vars);
 
                if ($winbindd ne "yes") {
                        $SIG{USR1} = $SIG{ALRM} = $SIG{INT} = $SIG{QUIT} = $SIG{TERM} = sub {
@@ -1376,25 +1346,7 @@ sub check_or_start($$$$$) {
 
                SocketWrapper::set_default_iface($env_vars->{SOCKET_WRAPPER_DEFAULT_IFACE});
 
-               $ENV{KRB5_CONFIG} = $env_vars->{KRB5_CONFIG};
-               $ENV{KRB5CCNAME} = "$env_vars->{KRB5_CCACHE}.smbd";
-               $ENV{SELFTEST_WINBINDD_SOCKET_DIR} = $env_vars->{SELFTEST_WINBINDD_SOCKET_DIR};
-               $ENV{NMBD_SOCKET_DIR} = $env_vars->{NMBD_SOCKET_DIR};
-
-               $ENV{NSS_WRAPPER_PASSWD} = $env_vars->{NSS_WRAPPER_PASSWD};
-               $ENV{NSS_WRAPPER_GROUP} = $env_vars->{NSS_WRAPPER_GROUP};
-               $ENV{NSS_WRAPPER_HOSTS} = $env_vars->{NSS_WRAPPER_HOSTS};
-               $ENV{NSS_WRAPPER_HOSTNAME} = $env_vars->{NSS_WRAPPER_HOSTNAME};
-               $ENV{NSS_WRAPPER_MODULE_SO_PATH} = $env_vars->{NSS_WRAPPER_MODULE_SO_PATH};
-               $ENV{NSS_WRAPPER_MODULE_FN_PREFIX} = $env_vars->{NSS_WRAPPER_MODULE_FN_PREFIX};
-               if (defined($env_vars->{RESOLV_WRAPPER_CONF})) {
-                       $ENV{RESOLV_WRAPPER_CONF} = $env_vars->{RESOLV_WRAPPER_CONF};
-               } else {
-                       $ENV{RESOLV_WRAPPER_HOSTS} = $env_vars->{RESOLV_WRAPPER_HOSTS};
-               }
-               $ENV{UID_WRAPPER_ROOT} = "1";
-
-               $ENV{ENVNAME} = "$ENV{ENVNAME}.smbd";
+               Samba::set_env_for_process("smbd", $env_vars);
 
                if ($smbd ne "yes") {
                        $SIG{USR1} = $SIG{ALRM} = $SIG{INT} = $SIG{QUIT} = $SIG{TERM} = sub {
index 448241aed0974247dec56973c6de90cab67f35b1..3b68fec12cedbe31bec4748e57b00e278dd92260 100755 (executable)
@@ -126,30 +126,16 @@ sub check_or_start($$$)
 
                SocketWrapper::set_default_iface($env_vars->{SOCKET_WRAPPER_DEFAULT_IFACE});
 
-               $ENV{KRB5_CONFIG} = $env_vars->{KRB5_CONFIG};
-               $ENV{KRB5CCNAME} = "$env_vars->{KRB5_CCACHE}.samba";
+               # setup common samba env variables
+               Samba::set_env_for_process("samba", $env_vars);
+
+               # setup additional env variables for s4
+               $ENV{RESOLV_CONF} = $env_vars->{RESOLV_CONF};
+               $ENV{UID_WRAPPER} = "1";
+
                if (defined($ENV{MITKRB5})) {
                        $ENV{KRB5_KDC_PROFILE} = $env_vars->{MITKDC_CONFIG};
                }
-               $ENV{SELFTEST_WINBINDD_SOCKET_DIR} = $env_vars->{SELFTEST_WINBINDD_SOCKET_DIR};
-               $ENV{NMBD_SOCKET_DIR} = $env_vars->{NMBD_SOCKET_DIR};
-
-               $ENV{NSS_WRAPPER_PASSWD} = $env_vars->{NSS_WRAPPER_PASSWD};
-               $ENV{NSS_WRAPPER_GROUP} = $env_vars->{NSS_WRAPPER_GROUP};
-               $ENV{NSS_WRAPPER_HOSTS} = $env_vars->{NSS_WRAPPER_HOSTS};
-               $ENV{NSS_WRAPPER_HOSTNAME} = $env_vars->{NSS_WRAPPER_HOSTNAME};
-               $ENV{NSS_WRAPPER_MODULE_SO_PATH} = $env_vars->{NSS_WRAPPER_MODULE_SO_PATH};
-               $ENV{NSS_WRAPPER_MODULE_FN_PREFIX} = $env_vars->{NSS_WRAPPER_MODULE_FN_PREFIX};
-
-               if (defined($env_vars->{RESOLV_WRAPPER_CONF})) {
-                       $ENV{RESOLV_WRAPPER_CONF} = $env_vars->{RESOLV_WRAPPER_CONF};
-               } else {
-                       $ENV{RESOLV_WRAPPER_HOSTS} = $env_vars->{RESOLV_WRAPPER_HOSTS};
-               }
-               $ENV{RESOLV_CONF} = $env_vars->{RESOLV_CONF};
-
-               $ENV{UID_WRAPPER} = "1";
-               $ENV{UID_WRAPPER_ROOT} = "1";
 
                $ENV{MAKE_TEST_BINARY} = Samba::bindir_path($self, "samba");
                my @preargs = ();