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
|
dnl
|
||||||
|
|
||||||
AC_DEFUN([rk_DB],[
|
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,
|
AC_ARG_WITH(berkeley-db,
|
||||||
AS_HELP_STRING([--with-berkeley-db],
|
AS_HELP_STRING([--with-berkeley-db],
|
||||||
[enable support for berkeley db @<:@default=check@:>@]),
|
[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_CHECK_LIB(lmdb, mdb_env_create, have_lmdb=yes; LMDBLIB="-llmdb"
|
||||||
AC_DEFINE(HAVE_LMDB, 1, [define if you have the LMDB library]))])])
|
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)
|
for db_type in unknown $db_type_preference; do
|
||||||
AS_IF([test "x$have_db1" = xyes -a "$db_type" = unknown], db_type=db1, db_type=unknown)
|
if eval test \"x\$have_${db_type}\" = xyes; then
|
||||||
AS_IF([test "x$have_lmdb" = xyes -a "$db_type" = unknown], db_type=lmdb, db_type=unknown)
|
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
|
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(NDBMLIB)dnl
|
AC_SUBST(NDBMLIB)dnl
|
||||||
AC_SUBST(db_type)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
|
#if HAVE_DB1 || HAVE_DB3
|
||||||
{ HDB_INTERFACE_VERSION, NULL, NULL, "db:", hdb_db_create},
|
{ HDB_INTERFACE_VERSION, NULL, NULL, "db:", hdb_db_create},
|
||||||
#endif
|
#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
|
#if HAVE_DB1
|
||||||
{ HDB_INTERFACE_VERSION, NULL, NULL, "mit-db:", hdb_mitdb_create},
|
{ HDB_INTERFACE_VERSION, NULL, NULL, "mit-db:", hdb_mitdb_create},
|
||||||
#endif
|
#endif
|
||||||
|
@@ -14,6 +14,7 @@ do_subst = sed -e 's,[@]srcdir[@],$(srcdir),g' \
|
|||||||
-e 's,[@]top_builddir[@],$(top_builddir),g' \
|
-e 's,[@]top_builddir[@],$(top_builddir),g' \
|
||||||
-e 's,[@]objdir[@],$(top_builddir)/tests/db,g' \
|
-e 's,[@]objdir[@],$(top_builddir)/tests/db,g' \
|
||||||
-e 's,[@]default_db_type[@],$(db_type),g' \
|
-e 's,[@]default_db_type[@],$(db_type),g' \
|
||||||
|
-e 's,[@]db_type_preference[@],$(db_type_preference),g' \
|
||||||
-e 's,[@]EGREP[@],$(EGREP),g'
|
-e 's,[@]EGREP[@],$(EGREP),g'
|
||||||
|
|
||||||
loaddump-db: loaddump-db.in Makefile
|
loaddump-db: loaddump-db.in Makefile
|
||||||
|
@@ -48,7 +48,7 @@ R=TEST.H5L.SE
|
|||||||
|
|
||||||
kadmin="${TESTS_ENVIRONMENT} ../../kadmin/kadmin -l"
|
kadmin="${TESTS_ENVIRONMENT} ../../kadmin/kadmin -l"
|
||||||
|
|
||||||
KRB5_CONFIG="${objdir}/krb5.conf"
|
KRB5_CONFIG="${objdir}/krb5.conf-${db_type}"
|
||||||
export KRB5_CONFIG
|
export KRB5_CONFIG
|
||||||
|
|
||||||
rm -f current-db*
|
rm -f current-db*
|
||||||
|
@@ -37,7 +37,10 @@
|
|||||||
srcdir="@srcdir@"
|
srcdir="@srcdir@"
|
||||||
objdir="@objdir@"
|
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
|
export KRB5_CONFIG
|
||||||
|
|
||||||
../../lib/hdb/test_dbinfo > dbinfo.out || exit 1
|
../../lib/hdb/test_dbinfo > dbinfo.out || exit 1
|
||||||
|
@@ -38,6 +38,18 @@ top_builddir="@top_builddir@"
|
|||||||
|
|
||||||
. ${top_builddir}/tests/bin/setup-env
|
. ${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: //'`
|
list=`${kdc} --builtin-hdb | sed 's/^builtin hdb backends: //'`
|
||||||
oldIFS="$IFS"
|
oldIFS="$IFS"
|
||||||
IPS=,
|
IPS=,
|
||||||
@@ -52,6 +64,7 @@ while [ $# != 0 ] ; do
|
|||||||
db4:*) exit 0 ;;
|
db4:*) exit 0 ;;
|
||||||
db3:*) exit 0 ;;
|
db3:*) exit 0 ;;
|
||||||
lmdb:*) exit 0 ;;
|
lmdb:*) exit 0 ;;
|
||||||
|
sqlite:*) exit 0 ;;
|
||||||
esac
|
esac
|
||||||
shift
|
shift
|
||||||
done
|
done
|
||||||
|
@@ -58,6 +58,7 @@ do_subst = $(heim_verbose)sed $(do_dlopen) \
|
|||||||
-e 's,[@]pwport[@],$(pwport),g' \
|
-e 's,[@]pwport[@],$(pwport),g' \
|
||||||
-e 's,[@]objdir[@],$(top_builddir)/tests/kdc,g' \
|
-e 's,[@]objdir[@],$(top_builddir)/tests/kdc,g' \
|
||||||
-e 's,[@]top_builddir[@],$(top_builddir),g' \
|
-e 's,[@]top_builddir[@],$(top_builddir),g' \
|
||||||
|
-e 's,[@]db_type[@],$(db_type),g' \
|
||||||
-e 's,[@]EGREP[@],$(EGREP),g'
|
-e 's,[@]EGREP[@],$(EGREP),g'
|
||||||
|
|
||||||
chmod = chmod
|
chmod = chmod
|
||||||
|
@@ -35,8 +35,7 @@ top_builddir="@top_builddir@"
|
|||||||
env_setup="@env_setup@"
|
env_setup="@env_setup@"
|
||||||
objdir="@objdir@"
|
objdir="@objdir@"
|
||||||
|
|
||||||
default_db_type=@default_db_type@
|
db_type=@db_type@
|
||||||
db_type=${1:-${default_db_type}}
|
|
||||||
|
|
||||||
. ${env_setup}
|
. ${env_setup}
|
||||||
|
|
||||||
@@ -175,6 +174,11 @@ sleep 2
|
|||||||
KRB5_CONFIG="${objdir}/krb5-slave.conf" \
|
KRB5_CONFIG="${objdir}/krb5-slave.conf" \
|
||||||
${kadmin} -l get host/bar@${R} > /dev/null 2>/dev/null && exit 1
|
${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"
|
echo "kill slave and remove log and database"
|
||||||
> iprop-stats
|
> iprop-stats
|
||||||
sh ${leaks_kill} ipropd-slave $ipds || exit 1
|
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
|
${iprop_log} last-version > master-last.tmp
|
||||||
cmp master-last.tmp slave-last.tmp || exit 1
|
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
|
exit $ec
|
||||||
|
@@ -72,14 +72,14 @@
|
|||||||
|
|
||||||
database = {
|
database = {
|
||||||
label = {
|
label = {
|
||||||
dbname = @objdir@/current-db@kdc@
|
dbname = @db_type@:@objdir@/current-db@kdc@
|
||||||
realm = TEST.H5L.SE
|
realm = TEST.H5L.SE
|
||||||
mkey_file = @objdir@/mkey.file
|
mkey_file = @objdir@/mkey.file
|
||||||
acl_file = @srcdir@/heimdal.acl
|
acl_file = @srcdir@/heimdal.acl
|
||||||
log_file = @objdir@/current@kdc@.log
|
log_file = @objdir@/current@kdc@.log
|
||||||
}
|
}
|
||||||
label2 = {
|
label2 = {
|
||||||
dbname = @objdir@/current-db@kdc@
|
dbname = @db_type@:@objdir@/current-db@kdc@
|
||||||
realm = TEST2.H5L.SE
|
realm = TEST2.H5L.SE
|
||||||
mkey_file = @objdir@/mkey.file
|
mkey_file = @objdir@/mkey.file
|
||||||
acl_file = @srcdir@/heimdal.acl
|
acl_file = @srcdir@/heimdal.acl
|
||||||
|
Reference in New Issue
Block a user