mydir=tests
BUILDTOP=$(REL)..
SUBDIRS = resolve asn.1 create hammer verify gssapi dejagnu shlib \
	gss-threads misc mkeystash_compat

RUN_SETUP = @KRB5_RUN_ENV@ KRB5_KDC_PROFILE=kdc.conf KRB5_CONFIG=krb5.conf
KRB5_RUN_ENV= @KRB5_RUN_ENV@
PROG_LIBPATH=-L$(TOPLIBD)
PROG_RPATH=$(KRB5_LIBDIR)

TEST_DB = ./testdb
TEST_REALM = FOO.TEST.REALM
TEST_MKEY = footes
TEST_NUM = 65
TEST_DEPTH = 5
TEST_PREFIX = "foo bar"

KADMIN_OPTS= -d $(TEST_DB) -r $(TEST_REALM) -P $(TEST_MKEY)
KTEST_OPTS= $(KADMIN_OPTS) -p $(TEST_PREFIX) -n $(TEST_NUM) -D $(TEST_DEPTH)

hist: hist.o $(KDB5_DEPLIBS) $(KADMSRV_DEPLIBS) $(KRB5_BASE_DEPLIBS)
	$(CC_LINK) -o $@ hist.o $(KDB5_LIBS) $(KADMSRV_LIBS) $(KRB5_BASE_LIBS)

check-unix:: kdb_check

kdc.conf: Makefile
	rm -rf kdc.conf
	@echo "[realms]" > kdc.conf
	@echo "$(TEST_REALM) = {" >> kdc.conf
	@echo "  key_stash_file = `pwd`/stash_file" >> kdc.conf
	@echo "}" >> kdc.conf

krb5.conf: Makefile
	cat $(top_srcdir)/config-files/krb5.conf > krb5.new
	echo "[dbmodules]" >> krb5.new
	echo " db_module_dir = `pwd`/../plugins/kdb" >> krb5.new
	mv krb5.new krb5.conf

kdb_check: kdc.conf krb5.conf
	$(RM) $(TEST_DB)*
	$(RUN_SETUP) $(VALGRIND) ../kadmin/dbutil/kdb5_util $(KADMIN_OPTS) create -W
	$(RUN_SETUP) $(VALGRIND) ../tests/create/kdb5_mkdums $(KTEST_OPTS) 
	$(RUN_SETUP) $(VALGRIND) ../tests/verify/kdb5_verify $(KTEST_OPTS) 
	$(RUN_SETUP) $(VALGRIND) ../kadmin/dbutil/kdb5_util $(KADMIN_OPTS) dump $(TEST_DB).dump
	$(RUN_SETUP) $(VALGRIND) ../kadmin/dbutil/kdb5_util $(KADMIN_OPTS) dump -ov $(TEST_DB).ovdump
	$(RUN_SETUP) $(VALGRIND) ../kadmin/dbutil/kdb5_util $(KADMIN_OPTS) destroy -f
	@echo "====> NOTE!"
	@echo "The following 'create' command is needed due to a change"
	@echo "in functionality caused by DAL integration.  See ticket 3973."
	@echo ====
	$(RUN_SETUP) $(VALGRIND) ../kadmin/dbutil/kdb5_util $(KADMIN_OPTS) create -W
	$(RUN_SETUP) $(VALGRIND) ../kadmin/dbutil/kdb5_util $(KADMIN_OPTS) load $(TEST_DB).dump 
	$(RUN_SETUP) $(VALGRIND) ../kadmin/dbutil/kdb5_util $(KADMIN_OPTS) load -update -ov $(TEST_DB).ovdump 
	$(RUN_SETUP) $(VALGRIND) ../tests/verify/kdb5_verify $(KTEST_OPTS) 
	$(RUN_SETUP) $(VALGRIND) ../kadmin/dbutil/kdb5_util $(KADMIN_OPTS) dump $(TEST_DB).dump2
	$(RUN_SETUP) $(VALGRIND) ../kadmin/dbutil/kdb5_util $(KADMIN_OPTS) dump -ov $(TEST_DB).ovdump2
	sort $(TEST_DB).dump > $(TEST_DB).sort
	sort $(TEST_DB).dump2 > $(TEST_DB).sort2
	sort $(TEST_DB).ovdump > $(TEST_DB).ovsort
	sort $(TEST_DB).ovdump2 > $(TEST_DB).ovsort2
	cmp $(TEST_DB).sort $(TEST_DB).sort2
	cmp $(TEST_DB).ovsort $(TEST_DB).ovsort2
	$(RUN_SETUP) $(VALGRIND) ../kadmin/dbutil/kdb5_util $(KADMIN_OPTS) destroy -f
	$(RM) $(TEST_DB)* stash_file

check-pytests:: hist
	$(RUNPYTEST) $(srcdir)/t_general.py $(PYTESTFLAGS)
	$(RUNPYTEST) $(srcdir)/t_iprop.py $(PYTESTFLAGS)
	$(RUNPYTEST) $(srcdir)/t_anonpkinit.py $(PYTESTFLAGS)
	$(RUNPYTEST) $(srcdir)/t_lockout.py $(PYTESTFLAGS)
	$(RUNPYTEST) $(srcdir)/t_kadm5_hook.py $(PYTESTFLAGS)
	$(RUNPYTEST) $(srcdir)/t_kdb_locking.py $(PYTESTFLAGS)
	$(RUNPYTEST) $(srcdir)/t_keyrollover.py $(PYTESTFLAGS)
	$(RUNPYTEST) $(srcdir)/t_allowed_keysalts.py $(PYTESTFLAGS)
	$(RUNPYTEST) $(srcdir)/t_renew.py $(PYTESTFLAGS)
	$(RUNPYTEST) $(srcdir)/t_renprinc.py $(PYTESTFLAGS)
	$(RUNPYTEST) $(srcdir)/t_ccache.py $(PYTESTFLAGS)
	$(RUNPYTEST) $(srcdir)/t_stringattr.py $(PYTESTFLAGS)
	$(RUNPYTEST) $(srcdir)/t_sesskeynego.py $(PYTESTFLAGS)
	$(RUNPYTEST) $(srcdir)/t_crossrealm.py $(PYTESTFLAGS)
	$(RUNPYTEST) $(srcdir)/t_referral.py $(PYTESTFLAGS)
	$(RUNPYTEST) $(srcdir)/t_skew.py $(PYTESTFLAGS)
	$(RUNPYTEST) $(srcdir)/t_keytab.py $(PYTESTFLAGS)
	$(RUNPYTEST) $(srcdir)/t_pwhist.py $(PYTESTFLAGS)
	$(RUNPYTEST) $(srcdir)/t_kadmin_acl.py $(PYTESTFLAGS)
#	$(RUNPYTEST) $(srcdir)/kdc_realm/kdcref.py $(PYTESTFLAGS)
	$(RUNPYTEST) $(srcdir)/t_cve-2012-1014.py $(PYTESTFLAGS)
	$(RUNPYTEST) $(srcdir)/t_cve-2012-1015.py $(PYTESTFLAGS)

clean::
	$(RM) krb5.conf kdc.conf
	$(RM) -rf kdc_realm/sandbox
