selftest: Write the nss_wrapper hosts file.
authorAndreas Schneider <asn@samba.org>
Thu, 27 Jun 2013 14:12:47 +0000 (16:12 +0200)
committerStefan Metzmacher <metze@samba.org>
Thu, 17 Apr 2014 12:56:06 +0000 (14:56 +0200)
Signed-off-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
selftest/selftest.pl
selftest/target/Samba3.pm
selftest/target/Samba4.pm

index dd964a3439ec186c3081d3b968c3bef5420bb5b6..5c35d8935524f9ecd022abc7609799ab626b9ed1 100755 (executable)
@@ -866,6 +866,7 @@ sub teardown_env($)
 
 # This 'global' file needs to be empty when we start
 unlink("$prefix_abs/dns_host_file");
+unlink("$prefix_abs/hosts");
 
 if ($opt_random_order) {
        require List::Util;
index 4b2fd28ec1b45cd0f35831e1d5f1a52efb9ae731..ed8faf9f74ca8aa630351e97dd4d4f94d59a68b5 100755 (executable)
@@ -641,6 +641,7 @@ sub check_or_start($$$$$) {
 
                $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_MODULE_SO_PATH} = $env_vars->{NSS_WRAPPER_MODULE_SO_PATH};
                $ENV{NSS_WRAPPER_MODULE_FN_PREFIX} = $env_vars->{NSS_WRAPPER_MODULE_FN_PREFIX};
 
@@ -697,6 +698,7 @@ sub check_or_start($$$$$) {
 
                $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_MODULE_SO_PATH} = $env_vars->{NSS_WRAPPER_MODULE_SO_PATH};
                $ENV{NSS_WRAPPER_MODULE_FN_PREFIX} = $env_vars->{NSS_WRAPPER_MODULE_FN_PREFIX};
 
@@ -753,6 +755,7 @@ sub check_or_start($$$$$) {
 
                $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_MODULE_SO_PATH} = $env_vars->{NSS_WRAPPER_MODULE_SO_PATH};
                $ENV{NSS_WRAPPER_MODULE_FN_PREFIX} = $env_vars->{NSS_WRAPPER_MODULE_FN_PREFIX};
 
@@ -921,6 +924,7 @@ sub provision($$$$$$)
        my $nss_wrapper_pl = "$ENV{PERL} $self->{srcdir}/lib/nss_wrapper/nss_wrapper.pl";
        my $nss_wrapper_passwd = "$privatedir/passwd";
        my $nss_wrapper_group = "$privatedir/group";
+       my $nss_wrapper_hosts = "$ENV{SELFTEST_PREFIX}/hosts";
 
        my $mod_printer_pl = "$ENV{PERL} $self->{srcdir}/source3/script/tests/printing/modprinter.pl";
 
@@ -1200,6 +1204,17 @@ domadmins:X:$gid_domadmins:
 
        close(GROUP);
 
+       ## hosts
+       my $hostname = lc($server);
+       unless (open(HOSTS, ">>$nss_wrapper_hosts")) {
+               warn("Unable to open $nss_wrapper_hosts");
+               return undef;
+       }
+       print HOSTS "${server_ip} ${hostname}.samba.example.com ${hostname}
+";
+       close(HOSTS);
+
+
        foreach my $evlog (@eventlog_list) {
                my $evlogtdb = "$eventlogdir/$evlog.tdb";
                open(EVENTLOG, ">$evlogtdb") or die("Unable to open $evlogtdb");
@@ -1208,6 +1223,7 @@ domadmins:X:$gid_domadmins:
 
        $ENV{NSS_WRAPPER_PASSWD} = $nss_wrapper_passwd;
        $ENV{NSS_WRAPPER_GROUP} = $nss_wrapper_group;
+       $ENV{NSS_WRAPPER_HOSTS} = $nss_wrapper_hosts;
 
         my $cmd = "UID_WRAPPER_ROOT=1 " . Samba::bindir_path($self, "smbpasswd")." -c $conffile -L -s -a $unix_name > /dev/null";
        unless (open(PWD, "|$cmd")) {
@@ -1251,6 +1267,7 @@ domadmins:X:$gid_domadmins:
        $ret{SOCKET_WRAPPER_DEFAULT_IFACE} = $swiface;
        $ret{NSS_WRAPPER_PASSWD} = $nss_wrapper_passwd;
        $ret{NSS_WRAPPER_GROUP} = $nss_wrapper_group;
+       $ret{NSS_WRAPPER_HOSTS} = $nss_wrapper_hosts;
        $ret{NSS_WRAPPER_MODULE_SO_PATH} = Samba::nss_wrapper_winbind_so_path($self);
        $ret{NSS_WRAPPER_MODULE_FN_PREFIX} = "winbind";
        $ret{LOCAL_PATH} = "$shrdir";
index 91b23a2bc53b09d34d9e754a77ce93de930d5efb..8408b334d5b4b5158cbccbd6aa9d2a68283654f1 100644 (file)
@@ -122,6 +122,7 @@ sub check_or_start($$$)
 
                $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_MODULE_SO_PATH} = $env_vars->{NSS_WRAPPER_MODULE_SO_PATH};
                $ENV{NSS_WRAPPER_MODULE_FN_PREFIX} = $env_vars->{NSS_WRAPPER_MODULE_FN_PREFIX};
 
@@ -176,6 +177,9 @@ sub wait_for_start($$)
 
        # Ensure we have the first RID Set before we start tests.  This makes the tests more reliable.
        if ($testenv_vars->{SERVER_ROLE} eq "domain controller" and not ($testenv_vars->{NETBIOS_NAME} eq "rodc")) {
+           # Add hosts file for name lookups
+           $ENV{NSS_WRAPPER_HOSTS} = $testenv_vars->{NSS_WRAPPER_HOSTS};
+
            print "waiting for working LDAP and a RID Set to be allocated\n";
            my $ldbsearch = Samba::bindir_path($self, "ldbsearch");
            my $count = 0;
@@ -525,6 +529,7 @@ sub provision_raw_prepare($$$$$$$$$$)
        $ctx->{ntp_signd_socket_dir} = "$prefix_abs/ntp_signd_socket";
        $ctx->{nsswrap_passwd} = "$ctx->{etcdir}/passwd";
        $ctx->{nsswrap_group} = "$ctx->{etcdir}/group";
+       $ctx->{nsswrap_hosts} = "$ENV{SELFTEST_PREFIX}/hosts";
 
        $ctx->{tlsdir} = "$ctx->{privatedir}/tls";
 
@@ -544,6 +549,7 @@ sub provision_raw_prepare($$$$$$$$$$)
        my @provision_options = ();
        push (@provision_options, "NSS_WRAPPER_PASSWD=\"$ctx->{nsswrap_passwd}\"");
        push (@provision_options, "NSS_WRAPPER_GROUP=\"$ctx->{nsswrap_group}\"");
+       push (@provision_options, "NSS_WRAPPER_HOSTS=\"$ctx->{nsswrap_hosts}\"");
        if (defined($ENV{GDB_PROVISION})) {
                push (@provision_options, "gdb --args");
                if (!defined($ENV{PYTHON})) {
@@ -686,6 +692,12 @@ nogroup:x:65534:nobody
        close(GRP);
         my $gid_rfc2307test = 65532;
 
+       my $hostname = lc($ctx->{hostname});
+       open(HOSTS, ">>$ctx->{nsswrap_hosts}");
+       print HOSTS "$ctx->{ipv4} ${hostname}.samba.example.com ${hostname}
+";
+       close(HOSTS);
+
        my $configuration = "--configfile=$ctx->{smb_conf}";
 
 #Ensure the config file is valid before we start
@@ -723,6 +735,7 @@ nogroup:x:65534:nobody
                SOCKET_WRAPPER_DEFAULT_IFACE => $ctx->{swiface},
                NSS_WRAPPER_PASSWD => $ctx->{nsswrap_passwd},
                NSS_WRAPPER_GROUP => $ctx->{nsswrap_group},
+               NSS_WRAPPER_HOSTS => $ctx->{nsswrap_hosts},
                SAMBA_TEST_FIFO => "$ctx->{prefix}/samba_test.fifo",
                SAMBA_TEST_LOG => "$ctx->{prefix}/samba_test.log",
                SAMBA_TEST_LOG_POS => 0,