From 357a5946bab220c6af9f243c88d733da2a5fe0bd Mon Sep 17 00:00:00 2001 From: Tom Yu Date: Fri, 18 Jun 2010 19:41:48 +0000 Subject: [PATCH] only test t_locate_kdc if known-good DNS name is present 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 target_version: 1.8.3 tags: pullup git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@24138 dc483132-0cff-0310-8789-dd5450dbe970 --- src/configure.in | 5 +++++ src/lib/krb5/os/Makefile.in | 26 ++++++++++++++++++++------ 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/src/configure.in b/src/configure.in index b74fb8d1e..1d86f9770 100644 --- a/src/configure.in +++ b/src/configure.in @@ -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 diff --git a/src/lib/krb5/os/Makefile.in b/src/lib/krb5/os/Makefile.in index 0852e144b..7709b2802 100644 --- a/src/lib/krb5/os/Makefile.in +++ b/src/lib/krb5/os/Makefile.in @@ -192,7 +192,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 \ @@ -201,17 +203,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 -- 2.26.2