1
0
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:
Jelmer Vernooij 2007-11-05 21:57:33 +01:00 committed by Stefan Metzmacher
parent f86dca4d4b
commit f017f87107
6 changed files with 96 additions and 1 deletions

View File

@ -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

View File

@ -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

View 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);
}

View 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

View File

@ -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",

View File

@ -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;