Add --with-db-type-preference config param
This commit is contained in:
21
cf/db.m4
21
cf/db.m4
@@ -4,6 +4,11 @@ dnl tests for various db libraries
|
||||
dnl
|
||||
|
||||
AC_DEFUN([rk_DB],[
|
||||
AC_ARG_WITH(db-type-preference,
|
||||
AS_HELP_STRING([--with-db-type-preference],
|
||||
[specify HDB backend DB type preference as whitespace-separated list]),
|
||||
[db_type_preference="$withval"],
|
||||
[db_type_preference="db3 db1 lmdb sqlite"])
|
||||
AC_ARG_WITH(berkeley-db,
|
||||
AS_HELP_STRING([--with-berkeley-db],
|
||||
[enable support for berkeley db @<:@default=check@:>@]),
|
||||
@@ -136,9 +141,18 @@ AS_IF([test "x$enable_mdb_db" != xno],
|
||||
AC_CHECK_LIB(lmdb, mdb_env_create, have_lmdb=yes; LMDBLIB="-llmdb"
|
||||
AC_DEFINE(HAVE_LMDB, 1, [define if you have the LMDB library]))])])
|
||||
|
||||
AS_IF([test "x$have_db3" = xyes -a "$db_type" = unknown], db_type=db3, db_type=unknown)
|
||||
AS_IF([test "x$have_db1" = xyes -a "$db_type" = unknown], db_type=db1, db_type=unknown)
|
||||
AS_IF([test "x$have_lmdb" = xyes -a "$db_type" = unknown], db_type=lmdb, db_type=unknown)
|
||||
for db_type in unknown $db_type_preference; do
|
||||
if eval test \"x\$have_${db_type}\" = xyes; then
|
||||
break
|
||||
fi
|
||||
db_type=unknown
|
||||
done
|
||||
|
||||
AS_IF([test "x$have_db3" = xyes -a "$db_type" = unknown], db_type=db3, db_type="$db_type")
|
||||
AS_IF([test "x$have_db1" = xyes -a "$db_type" = unknown], db_type=db1, db_type="$db_type")
|
||||
AS_IF([test "x$have_lmdb" = xyes -a "$db_type" = unknown], db_type=lmdb, db_type="$db_type")
|
||||
|
||||
echo "CHECK: db_type=$db_type" > /dev/tty
|
||||
|
||||
if test "$enable_ndbm_db" != "no"; then
|
||||
|
||||
@@ -252,4 +266,5 @@ AC_SUBST(LMDBLIB)dnl
|
||||
AC_SUBST(NDBMLIB)dnl
|
||||
AC_SUBST(NDBMLIB)dnl
|
||||
AC_SUBST(db_type)dnl
|
||||
AC_SUBST(db_type_preference)dnl
|
||||
])
|
||||
|
@@ -67,6 +67,12 @@ static struct hdb_method methods[] = {
|
||||
#if HAVE_DB1 || HAVE_DB3
|
||||
{ HDB_INTERFACE_VERSION, NULL, NULL, "db:", hdb_db_create},
|
||||
#endif
|
||||
#if HAVE_DB1
|
||||
{ HDB_INTERFACE_VERSION, NULL, NULL, "db1:", hdb_db_create},
|
||||
#endif
|
||||
#if HAVE_DB3
|
||||
{ HDB_INTERFACE_VERSION, NULL, NULL, "db3:", hdb_db_create},
|
||||
#endif
|
||||
#if HAVE_DB1
|
||||
{ HDB_INTERFACE_VERSION, NULL, NULL, "mit-db:", hdb_mitdb_create},
|
||||
#endif
|
||||
|
@@ -14,6 +14,7 @@ do_subst = sed -e 's,[@]srcdir[@],$(srcdir),g' \
|
||||
-e 's,[@]top_builddir[@],$(top_builddir),g' \
|
||||
-e 's,[@]objdir[@],$(top_builddir)/tests/db,g' \
|
||||
-e 's,[@]default_db_type[@],$(db_type),g' \
|
||||
-e 's,[@]db_type_preference[@],$(db_type_preference),g' \
|
||||
-e 's,[@]EGREP[@],$(EGREP),g'
|
||||
|
||||
loaddump-db: loaddump-db.in Makefile
|
||||
|
@@ -48,7 +48,7 @@ R=TEST.H5L.SE
|
||||
|
||||
kadmin="${TESTS_ENVIRONMENT} ../../kadmin/kadmin -l"
|
||||
|
||||
KRB5_CONFIG="${objdir}/krb5.conf"
|
||||
KRB5_CONFIG="${objdir}/krb5.conf-${db_type}"
|
||||
export KRB5_CONFIG
|
||||
|
||||
rm -f current-db*
|
||||
|
@@ -37,7 +37,10 @@
|
||||
srcdir="@srcdir@"
|
||||
objdir="@objdir@"
|
||||
|
||||
KRB5_CONFIG="${objdir}/krb5.conf"
|
||||
default_db_type=@default_db_type@
|
||||
db_type=${1:-${default_db_type}}
|
||||
|
||||
KRB5_CONFIG="${objdir}/krb5.conf-${db_type}"
|
||||
export KRB5_CONFIG
|
||||
|
||||
../../lib/hdb/test_dbinfo > dbinfo.out || exit 1
|
||||
|
@@ -38,6 +38,18 @@ top_builddir="@top_builddir@"
|
||||
|
||||
. ${top_builddir}/tests/bin/setup-env
|
||||
|
||||
if [ $# != 0 ]; then
|
||||
for type in "$@"; do
|
||||
for have_type in \
|
||||
`${kdc} --builtin-hdb | sed 's/^builtin hdb backends: //'`; do
|
||||
if [ "$type" = "$have_type" ]; then
|
||||
exit 0
|
||||
fi
|
||||
done
|
||||
done
|
||||
exit 1
|
||||
fi
|
||||
|
||||
list=`${kdc} --builtin-hdb | sed 's/^builtin hdb backends: //'`
|
||||
oldIFS="$IFS"
|
||||
IPS=,
|
||||
@@ -52,6 +64,7 @@ while [ $# != 0 ] ; do
|
||||
db4:*) exit 0 ;;
|
||||
db3:*) exit 0 ;;
|
||||
lmdb:*) exit 0 ;;
|
||||
sqlite:*) exit 0 ;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
@@ -58,6 +58,7 @@ do_subst = $(heim_verbose)sed $(do_dlopen) \
|
||||
-e 's,[@]pwport[@],$(pwport),g' \
|
||||
-e 's,[@]objdir[@],$(top_builddir)/tests/kdc,g' \
|
||||
-e 's,[@]top_builddir[@],$(top_builddir),g' \
|
||||
-e 's,[@]db_type[@],$(db_type),g' \
|
||||
-e 's,[@]EGREP[@],$(EGREP),g'
|
||||
|
||||
chmod = chmod
|
||||
|
@@ -35,8 +35,7 @@ top_builddir="@top_builddir@"
|
||||
env_setup="@env_setup@"
|
||||
objdir="@objdir@"
|
||||
|
||||
default_db_type=@default_db_type@
|
||||
db_type=${1:-${default_db_type}}
|
||||
db_type=@db_type@
|
||||
|
||||
. ${env_setup}
|
||||
|
||||
@@ -175,6 +174,11 @@ sleep 2
|
||||
KRB5_CONFIG="${objdir}/krb5-slave.conf" \
|
||||
${kadmin} -l get host/bar@${R} > /dev/null 2>/dev/null && exit 1
|
||||
|
||||
# See note below in LMDB sanity checking
|
||||
echo "Re-add host"
|
||||
${kadmin} -l add --random-key --use-defaults host/foo@${R} || exit 1
|
||||
${kadmin} -l add --random-key --use-defaults host/bar@${R} || exit 1
|
||||
|
||||
echo "kill slave and remove log and database"
|
||||
> iprop-stats
|
||||
sh ${leaks_kill} ipropd-slave $ipds || exit 1
|
||||
@@ -337,4 +341,14 @@ ${iprop_log} last-version > slave-last.tmp
|
||||
${iprop_log} last-version > master-last.tmp
|
||||
cmp master-last.tmp slave-last.tmp || exit 1
|
||||
|
||||
if [ "$db_type" = lmdb ]; then
|
||||
# Sanity check that we have the same number of principals at the HDB
|
||||
# and LMDB levels.
|
||||
#
|
||||
echo "checking that principals in DB == entries in LMDB"
|
||||
princs=`${kadmin} -l list '*' | wc -l`
|
||||
entries=`mdb_stat -n current-db.mdb | grep 'Entries:' | awk '{print $2}'`
|
||||
[ "`expr 1 + "$princs"`" -eq "$entries" ] || exit 1
|
||||
fi
|
||||
|
||||
exit $ec
|
||||
|
@@ -72,14 +72,14 @@
|
||||
|
||||
database = {
|
||||
label = {
|
||||
dbname = @objdir@/current-db@kdc@
|
||||
dbname = @db_type@:@objdir@/current-db@kdc@
|
||||
realm = TEST.H5L.SE
|
||||
mkey_file = @objdir@/mkey.file
|
||||
acl_file = @srcdir@/heimdal.acl
|
||||
log_file = @objdir@/current@kdc@.log
|
||||
}
|
||||
label2 = {
|
||||
dbname = @objdir@/current-db@kdc@
|
||||
dbname = @db_type@:@objdir@/current-db@kdc@
|
||||
realm = TEST2.H5L.SE
|
||||
mkey_file = @objdir@/mkey.file
|
||||
acl_file = @srcdir@/heimdal.acl
|
||||
|
Reference in New Issue
Block a user