mirror of
https://github.com/samba-team/samba.git
synced 2024-12-24 21:34:56 +03:00
r25842: Start working on test for loading dso's in ldb.
(This used to be commit d41ed7ca8d
)
This commit is contained in:
parent
f86dca4d4b
commit
f017f87107
@ -202,3 +202,5 @@ rpc_server/lsa/proto.h
|
||||
torture/winbind/proto.h
|
||||
source/rpc_server/lsa/proto.h
|
||||
source/torture/winbind/proto.h
|
||||
source/lib/ldb/tdbtest.ldb
|
||||
source/lib/ldb/tdbtest.ldb
|
||||
|
@ -32,9 +32,11 @@ POPT_OBJ = @POPT_OBJ@
|
||||
|
||||
LDAP_LIBS = @LDAP_LIBS@
|
||||
|
||||
SHLIBEXT = @SHLIBEXT@
|
||||
|
||||
CFLAGS=-g -I$(srcdir)/include -Iinclude -I$(srcdir) -I$(srcdir)/.. \
|
||||
$(POPT_CFLAGS) $(TALLOC_CFLAGS) $(TDB_CFLAGS) \
|
||||
-DLIBDIR=\"$(libdir)\" -DSHLIBEXT=\"@SHLIBEXT@\" -DUSE_MMAP=1 @CFLAGS@
|
||||
-DLIBDIR=\"$(libdir)\" -DSHLIBEXT=\"$(SHLIBEXT)\" -DUSE_MMAP=1 @CFLAGS@
|
||||
|
||||
LIB_FLAGS=@LDFLAGS@ -Llib -lldb @LIBS@ $(POPT_LIBS) $(TALLOC_LIBS) $(TDB_LIBS) \
|
||||
$(LDAP_LIBS)
|
||||
@ -104,6 +106,9 @@ lib/libldb.a: $(OBJS)
|
||||
lib/libnss_ldb.so.2: $(NSS_OBJ) $(LIBS) bin/libldb.a
|
||||
$(CC) -shared -Wl,-soname,libnss_ldb.so.2 -o lib/libnss_ldb.so.2 $(NSS_OBJ) $(OBJS) $(LIB_FLAGS)
|
||||
|
||||
sample_module.$(SHLIBEXT): tests/sample_module.o
|
||||
$(CC) -shared -o $@ tests/sample_module.o $(LIB_FLAGS)
|
||||
|
||||
bin/ldbadd: tools/ldbadd.o tools/cmdline.o $(LIBS)
|
||||
$(CC) -o bin/ldbadd tools/ldbadd.o tools/cmdline.o $(LIB_FLAGS)
|
||||
|
||||
@ -160,6 +165,11 @@ distclean: clean
|
||||
realdistclean: distclean
|
||||
rm -f configure.in include/config.h.in
|
||||
|
||||
check:: test
|
||||
|
||||
check-soloading: sample_module.$(SHLIBEXT)
|
||||
LDB_MODULES_PATH=$(builddir) $(srcdir)/tests/test-soloading.sh
|
||||
|
||||
test: all
|
||||
for t in $(TESTS); do echo STARTING $${t}; $(srcdir)/tests/$${t} || exit 1; done
|
||||
|
||||
|
43
source4/lib/ldb/tests/sample_module.c
Normal file
43
source4/lib/ldb/tests/sample_module.c
Normal file
@ -0,0 +1,43 @@
|
||||
/*
|
||||
Unix SMB/CIFS implementation.
|
||||
Samba utility functions
|
||||
Copyright (C) Jelmer Vernooij <jelmer@samba.org> 2007
|
||||
|
||||
** NOTE! The following LGPL license applies to the ldb
|
||||
** library. This does NOT imply that all of Samba is released
|
||||
** under the LGPL
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 3 of the License, or (at your option) any later version.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with this library; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "ldb_includes.h"
|
||||
#include "ldb.h"
|
||||
#include "ldb_errors.h"
|
||||
|
||||
int sample_add(struct ldb_module *mod, struct ldb_request *req)
|
||||
{
|
||||
ldb_msg_add_fmt(req->op.add.message, "touchedBy", "sample");
|
||||
|
||||
return ldb_next_request(mod, req);
|
||||
}
|
||||
|
||||
static const struct ldb_module_ops sample_ops = {
|
||||
.name = "sample_module",
|
||||
.add = sample_add,
|
||||
};
|
||||
|
||||
int init_module(void)
|
||||
{
|
||||
return ldb_register_module(&sample_ops);
|
||||
}
|
32
source4/lib/ldb/tests/test-soloading.sh
Executable file
32
source4/lib/ldb/tests/test-soloading.sh
Executable file
@ -0,0 +1,32 @@
|
||||
#!/bin/sh
|
||||
|
||||
if [ -n "$TEST_DATA_PREFIX" ]; then
|
||||
LDB_URL="$TEST_DATA_PREFIX/tdbtest.ldb"
|
||||
else
|
||||
LDB_URL="tdbtest.ldb"
|
||||
fi
|
||||
export LDB_URL
|
||||
|
||||
PATH=bin:$PATH
|
||||
export PATH
|
||||
|
||||
rm -f $LDB_URL*
|
||||
|
||||
if [ -z "$LDBDIR" ]; then
|
||||
LDBDIR=`dirname $0`/..
|
||||
export LDBDIR
|
||||
fi
|
||||
|
||||
cat <<EOF | $VALGRIND ldbadd || exit 1
|
||||
dn: @MODULES
|
||||
@LIST: sample_module
|
||||
EOF
|
||||
|
||||
cat <<EOF | $VALGRIND ldbadd || exit 1
|
||||
dn: dc=bar
|
||||
dc: bar
|
||||
someThing: someThingElse
|
||||
EOF
|
||||
|
||||
$VALGRIND ldbsearch "(touchedBy=sample)" | grep "touchedBy: sample" || exit 1
|
||||
|
@ -60,6 +60,7 @@ struct ldb_cmdline *ldb_cmdline_process(struct ldb_context *ldb, int argc, const
|
||||
{ "verbose", 'v', POPT_ARG_NONE, NULL, 'v', "increase verbosity", NULL },
|
||||
{ "interactive", 'i', POPT_ARG_NONE, &options.interactive, 0, "input from stdin", NULL },
|
||||
{ "recursive", 'r', POPT_ARG_NONE, &options.recursive, 0, "recursive delete", NULL },
|
||||
{ "modules-path", 0, POPT_ARG_STRING, &options.modules_path, 0, "modules path", "PATH" },
|
||||
{ "num-searches", 0, POPT_ARG_INT, &options.num_searches, 0, "number of test searches", NULL },
|
||||
{ "num-records", 0, POPT_ARG_INT, &options.num_records, 0, "number of test records", NULL },
|
||||
{ "all", 'a', POPT_ARG_NONE, &options.all_records, 0, "(|(objectClass=*)(distinguishedName=*))", NULL },
|
||||
@ -218,6 +219,12 @@ struct ldb_cmdline *ldb_cmdline_process(struct ldb_context *ldb, int argc, const
|
||||
ldb_set_utf8_fns(ldb, NULL, wrap_casefold);
|
||||
#endif
|
||||
|
||||
if (options.modules_path != NULL) {
|
||||
ldb_set_modules_dir(ldb, options.modules_path);
|
||||
} else if (getenv("LDB_MODULES_PATH") != NULL) {
|
||||
ldb_set_modules_dir(ldb, getenv("LDB_MODULES_PATH"));
|
||||
}
|
||||
|
||||
/* now connect to the ldb */
|
||||
if (ldb_connect(ldb, ret->url, flags, ret->options) != 0) {
|
||||
fprintf(stderr, "Failed to connect to %s - %s\n",
|
||||
|
@ -27,6 +27,7 @@ struct ldb_cmdline {
|
||||
const char *url;
|
||||
enum ldb_scope scope;
|
||||
const char *basedn;
|
||||
const char *modules_path;
|
||||
int interactive;
|
||||
int sorted;
|
||||
const char *editor;
|
||||
|
Loading…
Reference in New Issue
Block a user