pull up r24138 from trunk
authorTom Yu <tlyu@mit.edu>
Tue, 20 Jul 2010 22:28:41 +0000 (22:28 +0000)
committerTom Yu <tlyu@mit.edu>
Tue, 20 Jul 2010 22:28:41 +0000 (22:28 +0000)
 ------------------------------------------------------------------------
 r24138 | tlyu | 2010-06-18 15:41:48 -0400 (Fri, 18 Jun 2010) | 13 lines

 ticket: 6744
 subject: only test t_locate_kdc if known-good DNS name is present
 target_version: 1.8.3
 tags: pullup

Running "make check" while offline or on a firewalled network may
result in failure in lib/krb5/os because the invocation of
t_locate_kdc requires that the DNS servers for ATHENA.MIT.EDU be
reachable.  Autodetect DNS utilities "dig" and "nslookup", and use
them to check for existence of the known-good DNS name.  Also
parameterize the test so that the known-good DNS name can be
overridden on the make command line.

ticket: 6744
version_fixed: 1.8.3
status: resolved

git-svn-id: svn://anonsvn.mit.edu/krb5/branches/krb5-1-8@24195 dc483132-0cff-0310-8789-dd5450dbe970

src/configure.in
src/lib/krb5/os/Makefile.in

index d4647cb79b15e71ffe399d20980d83b23cc025ff..e353065963f8144daf602422e9797436d6bb434b 100644 (file)
@@ -662,6 +662,11 @@ int main () {
 AC_MSG_RESULT($ac_cv_printf_positional)
 
 
+# for t_locate_kdc test
+
+AC_PATH_PROG(DIG, dig, false)
+AC_PATH_PROG(NSLOOKUP, nslookup, false)
+
 # for kadmin
 
 AC_PROG_YACC
index 6a1ffd13fdd0edadbd0e76881ce24e8a7500d7ba..4da3ebf7f73c52b846c97944a03c28ab07206fae 100644 (file)
@@ -189,7 +189,9 @@ lclint-localaddr: localaddr.c
        $(LCLINT) $(LCLINTOPTS) $(CPPFLAGS) $(LOCALINCLUDES) $(DEFS) \
                -DTEST $(srcdir)/localaddr.c
 
-check-unix:: $(TEST_PROGS)
+check-unix:: check-unix-stdconf check-unix-locate check-unix-antoln
+
+check-unix-stdconf:: t_std_conf
        KRB5_CONFIG=$(srcdir)/td_krb5.conf ; export KRB5_CONFIG ;\
        $(KRB5_RUN_ENV) $(VALGRIND) ./t_std_conf  -d -s NEW.DEFAULT.REALM -d \
                -k IGGY.ORG -k DEFAULT_REALM.TST \
@@ -198,17 +200,29 @@ check-unix:: $(TEST_PROGS)
                -r pgp.good.idea -r no_domain > test.out
        cmp test.out $(srcdir)/ref_std_conf.out
        $(RM) test.out
-       KRB5_CONFIG=$(srcdir)/td_krb5.conf ; export KRB5_CONFIG ;\
-       if test "$(OFFLINE)" != yes; then \
-         $(KRB5_RUN_ENV) $(VALGRIND) ./t_locate_kdc ATHENA.MIT.EDU; \
+
+# The following can be overriden on the make command line if needed:
+LOCREALM = ATHENA.MIT.EDU
+SRVNAME = _kerberos._udp.athena.mit.edu.
+DIGPAT = '^_kerberos.*srv'
+NSPAT = '^_kerberos.*service'
+DIG = @DIG@
+NSLOOKUP = @NSLOOKUP@
+
+check-unix-locate:: t_locate_kdc
+       if [ "$(OFFLINE)" = no ] && \
+           $(DIG) $(SRVNAME) srv | grep -i $(DIGPAT) || \
+           $(NSLOOKUP) -q=srv $(SRVNAME) | grep -i $(NSPAT); then \
+           KRB5_CONFIG=$(srcdir)/td_krb5.conf ; export KRB5_CONFIG ;\
+           $(KRB5_RUN_ENV) $(VALGRIND) ./t_locate_kdc $(LOCREALM); \
        else \
-         echo SKIPPING t_locate_kdc TEST WHILE OFFLINE; \
+           echo '*** WARNING: skipped t_locate_kdc test: known DNS name not found'; \
        fi
 
 #
 # Do some aname-to-lname testing.
 #
-check-unix::
+check-unix-antoln:: t_an_to_ln
        echo '[libdefaults]' > ./t_an.conf
        echo '  default_realm = r' >> ./t_an.conf
        echo '[realms]' >> ./t_an.conf