BUILD_LDBM=no
BUILD_META=no
BUILD_MONITOR=no
+BUILD_CACHE=no
BUILD_NULL=no
BUILD_PASSWD=no
BUILD_PERL=no
BUILD_SLAPD=yes
BUILD_META=yes
BUILD_REWRITE=yes
+ if test $ol_enable_ldbm = yes -o \
+ $ol_enable_bdb = yes ; then
+ BUILD_CACHE=yes
+ fi
if test "$ol_with_meta_module" != static ; then
cat >> confdefs.h <<\EOF
#define SLAPD_META_DYNAMIC 1
s%@BUILD_LDBM@%$BUILD_LDBM%g
s%@BUILD_META@%$BUILD_META%g
s%@BUILD_MONITOR@%$BUILD_MONITOR%g
+s%@BUILD_CACHE@%$BUILD_CACHE%g
s%@BUILD_NULL@%$BUILD_NULL%g
s%@BUILD_PASSWD@%$BUILD_PASSWD%g
s%@BUILD_PERL@%$BUILD_PERL%g
BUILD_LDBM=no
BUILD_META=no
BUILD_MONITOR=no
+BUILD_CACHE=no
BUILD_NULL=no
BUILD_PASSWD=no
BUILD_PERL=no
BUILD_SLAPD=yes
BUILD_META=yes
BUILD_REWRITE=yes
+ if test $ol_enable_ldbm = yes -o \
+ $ol_enable_bdb = yes ; then
+ BUILD_CACHE=yes
+ fi
if test "$ol_with_meta_module" != static ; then
AC_DEFINE(SLAPD_META_DYNAMIC,1,
[define to support dynamic LDAP Metadirectory backend])
AC_SUBST(BUILD_LDBM)
AC_SUBST(BUILD_META)
AC_SUBST(BUILD_MONITOR)
+ AC_SUBST(BUILD_CACHE)
AC_SUBST(BUILD_NULL)
AC_SUBST(BUILD_PASSWD)
AC_SUBST(BUILD_PERL)
static struct berval bv_queryid_any = BER_BVC( "(queryid=*)" );
-static int
-merge_func (
- Operation *op,
- SlapReply *rs
-);
-
-static void
-add_func (
- Operation *op,
- SlapReply *rs
-);
-
static Attribute*
add_attribute(AttributeDescription *ad,
Entry* e,
BerVarray value_array
);
-static int
-get_size_func (
- Operation *op,
- SlapReply *rs
-);
-
static int
null_response (
Operation *op,
return size;
}
-/* quick hack: call the right callback */
-static int
-add_merge_func( Operation *op, SlapReply *rs )
-{
- switch ( rs->sr_type ) {
- case REP_SEARCH:
- merge_func( op, rs );
- break;
-
- case REP_RESULT:
- add_func( op, rs );
- break;
-
- default:
- assert( 0 );
- }
- return 0;
-}
-
int
merge_entry(
Operation *op,
struct exception* result )
{
struct entry_info info;
- struct berval normdn;
- struct berval prettydn;
+ int rc;
+ Modifications* modlist = NULL;
+ const char* text = NULL;
+ BerVarray value_array;
+ Attribute *uuid_attr, *attr;
+ Entry *e;
SlapReply sreply = {REP_RESULT};
Operation op_tmp = *op;
- slap_callback cb = { add_merge_func, NULL };
+ slap_callback cb;
- Filter* filter = str2filter( bv_queryid_any.bv_val );
sreply.sr_entry = NULL;
sreply.sr_nentries = 0;
- dnPrettyNormal(0, &rs->sr_entry->e_name, &prettydn, &normdn,
- op->o_tmpmemctx);
-
- free(rs->sr_entry->e_name.bv_val);
- rs->sr_entry->e_name = prettydn;
- if (rs->sr_entry->e_nname.bv_val) free(rs->sr_entry->e_nname.bv_val);
- rs->sr_entry->e_nname = normdn;
-
- info.entry = rs->sr_entry;
- info.uuid = query_uuid;
- info.size_init = 0;
- info.size_final = 0;
- info.added = 0;
- info.glue_be = op->o_bd;
- info.err = SUCCESS;
- cb.sc_private = &info;
-
- op_tmp.o_tag = LDAP_REQ_SEARCH;
- op_tmp.o_protocol = LDAP_VERSION3;
- op_tmp.o_callback = &cb;
- op_tmp.o_caching_on = 1;
- op_tmp.o_time = slap_get_time();
- op_tmp.o_do_not_cache = 1;
-
- op_tmp.o_req_dn = rs->sr_entry->e_name;
- op_tmp.o_req_ndn = rs->sr_entry->e_nname;
- op_tmp.ors_scope = LDAP_SCOPE_BASE;
- op_tmp.ors_deref = LDAP_DEREF_NEVER;
- op_tmp.ors_slimit = 1;
- op_tmp.ors_tlimit = 0;
- op_tmp.ors_filter = filter;
- op_tmp.ors_filterstr = bv_queryid_any;
- op_tmp.ors_attrs = NULL;
- op_tmp.ors_attrsonly = 0;
-
- op->o_bd->be_search( &op_tmp, &sreply );
- result->type = info.err;
- if ( result->type == SUCCESS )
- result->rc = info.added;
- else
- result->rc = 0;
- return ( info.size_final - info.size_init );
-}
-
-static int
-merge_func (
- Operation *op,
- SlapReply *rs
-)
-{
- Backend *be;
- char *new_attr_name;
- Attribute *a_new, *a;
- int i = 0;
- int rc = 0;
-
- int count;
- struct timeval time; /* time */
- long timediff; /* time */
- struct entry_info *info = op->o_callback->sc_private;
- Filter *filter = str2filter( bv_queryid_any.bv_val );
- Entry *entry = info->entry;
- struct berval *uuid = info->uuid;
- Modifications *modhead = NULL;
- Modifications *mod;
- Modifications **modtail = &modhead;
- AttributeDescription *a_new_desc;
- const char *text = NULL;
- Operation op_tmp = *op;
- SlapReply sreply = {REP_RESULT};
- SlapReply sreply1 = {REP_RESULT};
-
- info->err = SUCCESS;
-
- be = select_backend(&entry->e_nname, 0, 0);
-
- info->size_init = get_entry_size(rs->sr_entry, 0, 0);
- a_new = entry->e_attrs;
-
- while (a_new != NULL) {
- a_new_desc = a_new->a_desc;
- mod = (Modifications *) malloc( sizeof(Modifications) );
- mod->sml_op = LDAP_MOD_REPLACE;
- ber_dupbv(&mod->sml_type, &a_new_desc->ad_cname);
-
- for ( count = 0; a_new->a_vals[count].bv_val; count++ )
- ;
-
- mod->sml_bvalues = (struct berval*) malloc(
- (count+1) * sizeof( struct berval) );
-
- mod->sml_nvalues = (struct berval*) malloc(
- (count+1) * sizeof( struct berval) );
-
- for ( i = 0; i < count; i++ ) {
- ber_dupbv(mod->sml_bvalues+i, a_new->a_vals+i);
- if ( a_new->a_desc->ad_type->sat_equality &&
- a_new->a_desc->ad_type->sat_equality->smr_normalize ) {
- rc = a_new->a_desc->ad_type->sat_equality->smr_normalize(
- 0,
- a_new->a_desc->ad_type->sat_syntax,
- a_new->a_desc->ad_type->sat_equality,
- a_new->a_vals+i, mod->sml_nvalues+i, NULL );
- if (rc) {
- info->err = MERGE_ERR;
- return 0;
- }
- }
- else {
- ber_dupbv( mod->sml_nvalues+i, a_new->a_vals+i );
- }
- }
-
- mod->sml_bvalues[count].bv_val = 0;
- mod->sml_bvalues[count].bv_len = 0;
-
- mod->sml_nvalues[count].bv_val = 0;
- mod->sml_nvalues[count].bv_len = 0;
-
- mod->sml_desc = NULL;
- slap_bv2ad(&mod->sml_type, &mod->sml_desc, &text);
- mod->sml_next =NULL;
- *modtail = mod;
- modtail = &mod->sml_next;
- a_new = a_new->a_next;
- }
-
- /* add query UUID to queryid attribute */
- mod = (Modifications *) ch_malloc( sizeof(Modifications) );
- mod->sml_op = LDAP_MOD_ADD;
- mod->sml_desc = slap_schema.si_ad_queryid;
- ber_dupbv(&mod->sml_type, &mod->sml_desc->ad_cname);
-
- mod->sml_bvalues = (BerVarray) ch_malloc( 2 * sizeof( struct berval ) );
- ber_dupbv( mod->sml_bvalues, uuid );
- mod->sml_bvalues[1].bv_val = NULL;
- mod->sml_bvalues[1].bv_len = 0;
-
- mod->sml_nvalues = (BerVarray) ch_malloc( 2 * sizeof( struct berval ) );
- ber_dupbv( mod->sml_nvalues, uuid );
- mod->sml_nvalues[1].bv_val = NULL;
- mod->sml_nvalues[1].bv_len = 0;
-
- *modtail = mod;
- mod->sml_next = NULL;
-
- /* Apply changes */
- op_tmp.o_req_dn = entry->e_name;
- op_tmp.o_req_ndn = entry->e_nname;
- op_tmp.orm_modlist = modhead;
-
- op_tmp.o_callback->sc_response = null_response;
- /* FIXME: &op_tmp ??? */
- if (be->be_modify(&op_tmp, &sreply ) != 0 ) {
- /* FIXME: cleanup ? */
- info->err = MERGE_ERR;
- goto cleanup;
- }
-
- /* compute the size of the entry */
- op_tmp.o_callback->sc_response = get_size_func;
-
- op_tmp.ors_scope = LDAP_SCOPE_BASE;
- op_tmp.ors_deref = LDAP_DEREF_NEVER;
- op_tmp.ors_slimit = 1;
- op_tmp.ors_tlimit = 0;
- op_tmp.ors_filter = filter;
- op_tmp.ors_filterstr = bv_queryid_any;
- op_tmp.ors_attrs = NULL;
- op_tmp.ors_attrsonly = 0;
-
- sreply1.sr_entry = NULL;
- sreply1.sr_nentries = 0;
-
- if (be->be_search( &op_tmp, &sreply1 ) != 0) {
- info->err = GET_SIZE_ERR;
- }
-
-cleanup:;
- if ( modhead != NULL) {
- slap_mods_free( modhead );
- }
-
- return 0;
-}
-
-static void
-add_func (
- Operation *op,
- SlapReply *rs
-)
-{
- struct entry_info *info = op->o_callback->sc_private;
- Entry *entry = info->entry;
- struct berval *uuid = info->uuid;
- Backend *be;
- BerVarray value_array;
- Entry *e;
- Attribute *a, *attr;
- int i,j;
- SlapReply sreply = {REP_RESULT};
-
- struct timeval time; /* time */
- long timediff; /* time */
-
- Operation op_tmp = *op;
-
- /*
- * new entry, construct an entry with
- * the projected attributes
- */
- if (rs->sr_nentries) {
- return;
- }
-
- op_tmp.o_callback->sc_response = null_response;
- be = select_backend(&entry->e_nname, 0, 0);
- e = (Entry*)malloc(sizeof(Entry));
-
- ber_dupbv(&e->e_name,&entry->e_name);
- ber_dupbv(&e->e_nname,&entry->e_nname);
+ e = ( Entry * ) ch_calloc( 1, sizeof( Entry ));
+ dnPrettyNormal(0, &rs->sr_entry->e_name, &e->e_name, &e->e_nname, op->o_tmpmemctx);
- e->e_private = 0;
- e->e_attrs = 0;
- e->e_bv.bv_val = 0;
+ e->e_private = NULL;
+ e->e_attrs = NULL;
+ e->e_bv.bv_val = NULL;
/* add queryid attribute */
value_array = (struct berval *)malloc(2 * sizeof( struct berval) );
- ber_dupbv(value_array, uuid);
+ ber_dupbv(value_array, query_uuid);
value_array[1].bv_val = NULL;
value_array[1].bv_len = 0;
- a = add_attribute(slap_schema.si_ad_queryid,
- e, value_array);
+ uuid_attr = add_attribute(slap_schema.si_ad_queryid, e, value_array);
/* append the attribute list from the fetched entry */
- a->a_next = entry->e_attrs;
- entry->e_attrs = NULL;
+ uuid_attr->a_next = rs->sr_entry->e_attrs;
+ rs->sr_entry->e_attrs = NULL;
for ( attr = e->e_attrs; attr; attr = attr->a_next ) {
if ( normalize_values( attr ) ) {
- info->err = MERGE_ERR;
- return;
+ info.err = MERGE_ERR;
+ result->rc = info.err;
+ return 0;
}
}
- info->size_final = get_entry_size( e, 0, NULL );
+ info.entry = e;
+ info.uuid = query_uuid;
+ info.size_init = get_entry_size( rs->sr_entry, 0, 0 );
+ info.size_final = 0;
+ info.added = 0;
+ info.glue_be = op->o_bd;
+ info.err = SUCCESS;
+ cb.sc_private = &info;
+ cb.sc_response = null_response;
+
+ op_tmp.o_tag = LDAP_REQ_ADD;
+ op_tmp.o_protocol = LDAP_VERSION3;
+ op_tmp.o_callback = &cb;
+ op_tmp.o_caching_on = 0;
+ op_tmp.o_time = slap_get_time();
+ op_tmp.o_do_not_cache = 1;
- op_tmp.o_bd = be;
op_tmp.ora_e = e;
-
- if ( be->be_add( &op_tmp, &sreply ) == 0 ) {
- info->added = 1;
- be_entry_release_w( &op_tmp, e );
+ op_tmp.o_req_dn = e->e_name;
+ op_tmp.o_req_ndn = e->e_nname;
+ rc = op->o_bd->be_add( &op_tmp, &sreply );
+
+ if ( rc != LDAP_SUCCESS ) {
+ if ( rc == LDAP_ALREADY_EXISTS ) {
+ slap_entry2mods( e, &modlist, &text );
+ op_tmp.o_tag = LDAP_REQ_MODIFY;
+ op_tmp.orm_modlist = modlist;
+ op_tmp.o_req_dn = e->e_name;
+ op_tmp.o_req_ndn = e->e_nname;
+ rc = op->o_bd->be_modify( &op_tmp, &sreply );
+ result->rc = info.added;
+ } else if ( rc == LDAP_REFERRAL ||
+ rc == LDAP_NO_SUCH_OBJECT ) {
+ slap_entry2mods( e, &modlist, &text );
+ syncrepl_add_glue( NULL, NULL, &op_tmp, e, modlist, 0, NULL, NULL );
+ result->rc = info.added;
+ } else {
+ result->rc = 0;
+ }
+ if ( modlist != NULL ) slap_mods_free( modlist );
} else {
- info->err = MERGE_ERR;
+ info.size_init = 0;
+ result->rc = info.added;
+ be_entry_release_w( &op_tmp, e );
}
+
+ if ( result->rc )
+ info.size_final = get_entry_size( e, info.size_init, result );
+ else
+ info.size_final = info.size_init;
+
+ return ( info.size_final - info.size_init );
}
-
static Attribute*
add_attribute(AttributeDescription *ad,
return new_attr;
}
-static int
-get_size_func (
- Operation *op,
- SlapReply *rs
-)
-{
- struct entry_info *info = op->o_callback->sc_private;
- struct exception result;
-
- if ( rs->sr_type == REP_SEARCH ) {
- result.type = info->err;
- info->size_final = get_entry_size(rs->sr_entry,
- info->size_init, &result);
- }
-
- return 0;
-}
-
-
static int
null_response (
Operation *op,
op_tmp.o_callback = &cb;
op_tmp.o_time = slap_get_time();
op_tmp.o_do_not_cache = 1;
- op_tmp.o_caching_on = 1;
+ op_tmp.o_caching_on = 0;
op_tmp.o_req_dn = op->o_bd->be_suffix[0];
op_tmp.o_req_ndn = op->o_bd->be_nsuffix[0];
int num_entries = 0;
int curr_limit;
int fattr_cnt=0;
+ int oc_attr_absent = 1;
-
struct exception result[1];
Filter* filter = str2filter(op->ors_filterstr.bv_val);
cb.sc_private = op->o_bd;
if (op->ors_attrs) {
- for ( count=0; op->ors_attrs[ count ].an_name.bv_val; count++ )
- ;
- attrs = (AttributeName*)malloc( ( count + 1 ) *
- sizeof(AttributeName));
+ for ( count=0; op->ors_attrs[ count ].an_name.bv_val; count++ ) {
+ if ( op->ors_attrs[count].an_desc == slap_schema.si_ad_objectClass )
+ oc_attr_absent = 0;
+ }
+ attrs = (AttributeName*)malloc( ( count + 1 + oc_attr_absent )
+ *sizeof(AttributeName));
for ( count=0; op->ors_attrs[ count ].an_name.bv_val; count++ ) {
ber_dupbv(&attrs[ count ].an_name,
&op->ors_attrs[ count ].an_name);
attrs[ count ].an_name.bv_len = 0;
}
-
result->type = SUCCESS;
result->rc = 0;
ldap_pvt_thread_mutex_lock(&cm->cache_mutex);
}
}
+ if ( attrs && oc_attr_absent ) {
+ for ( count = 0; attrs[count].an_name.bv_val; count++) ;
+ attrs[ count ].an_name.bv_val = "objectClass";
+ attrs[ count ].an_name.bv_len = strlen( "objectClass" );
+ attrs[ count ].an_desc = slap_schema.si_ad_objectClass;
+ attrs[ count + 1 ].an_name.bv_val = NULL;
+ attrs[ count + 1 ].an_name.bv_len = 0;
+ }
+
if (answerable) {
Operation op_tmp;
op_tmp.o_req_dn = cachebase;
op_tmp.o_req_ndn = ncachebase;
- op_tmp.o_caching_on = 1;
+ op_tmp.o_caching_on = 0;
op_tmp.o_callback = &cb;
li->glue_be->be_search(&op_tmp, rs);
*/
msgid[ i ] = ldap_search( lsc->ld, mbase, realscope,
mapped_filter, mapped_attrs,
- op->ors_attrsonly );
+ op->ors_attrsonly );
if ( msgid[ i ] == -1 ) {
result->type = CONN_ERR;
Debug( LDAP_DEBUG_ANY, "QUERY CACHEABLE\n", 0, 0, 0 );
#endif /* !NEW_LOGGING */
op_tmp.o_bd = li->glue_be;
- uuid = cache_entries(&op_tmp, rs, entry_array,
- cm, result);
+ uuid = cache_entries(&op_tmp, rs, entry_array, cm, result);
#ifdef NEW_LOGGING
LDAP_LOG( BACK_META, DETAIL1,
"Added query %s UUID %s ENTRIES %d\n",
goto Catch;
filter = 0;
attrs = 0;
+
+ /* FIXME : launch do_syncrepl() threads around here
+ *
+ * entryUUID and entryCSN need also to be requested by :
+ */
+ /*
+ msgid[ i ] = ldap_search( lsc->ld, mbase, realscope,
+ mapped_filter, mapped_attrs, op->ors_attrsonly );
+ */
+ /* Also, mbase, realscope, mapped_filter, mapped_attrs need
+ * be managed as arrays. Each element needs to be retained by this point.
+ */
+
} else {
#ifdef NEW_LOGGING
LDAP_LOG( BACK_META, DETAIL1,
struct berval a, mapped;
Entry* ent;
BerElement ber = *e->lm_ber;
- Attribute *attr, **attrp;
- struct berval dummy = { 0, NULL };
- struct berval *bv, bdn;
+ Attribute *attr, *soc_attr, **attrp;
+ struct berval dummy = { 0, NULL };
+ struct berval *bv, bdn;
const char *text;
- char* ename = NULL;
+ char* ename = NULL;
+ struct berval sc;
+ char* textbuf;
+ size_t textlen;
+
if ( ber_scanf( &ber, "{m{", &bdn ) == LBER_ERROR ) {
result->type = CREATE_ENTRY_ERR;
return NULL;
if ( ber_scanf( &ber, "[W]", &attr->a_vals ) == LBER_ERROR
|| attr->a_vals == NULL ) {
attr->a_vals = &dummy;
+#if 0
} else if ( attr->a_desc == slap_schema.si_ad_objectClass ||
attr->a_desc ==
slap_schema.si_ad_structuralObjectClass) {
+#else
+ } else if ( attr->a_desc == slap_schema.si_ad_objectClass ) {
+#endif
int i, last;
for ( last = 0; attr->a_vals[ last ].bv_val; ++last )
;
ber_dupbv( bv, &mapped );
}
}
+
+ structural_class( attr->a_vals, &sc, NULL, &text, textbuf, textlen );
+ soc_attr = (Attribute*) ch_malloc( sizeof( Attribute ));
+ soc_attr->a_desc = slap_schema.si_ad_structuralObjectClass;
+ soc_attr->a_vals = (BerVarray) ch_malloc( 2* sizeof( BerValue ));
+ ber_dupbv( &soc_attr->a_vals[0], &sc );
+ soc_attr->a_vals[1].bv_len = 0;
+ soc_attr->a_vals[1].bv_val = NULL;
+ soc_attr->a_nvals = (BerVarray) ch_malloc( 2* sizeof( BerValue ));
+ ber_dupbv( &soc_attr->a_nvals[0], &sc );
+ soc_attr->a_nvals[1].bv_len = 0;
+ soc_attr->a_nvals[1].bv_val = NULL;
+
+ *attrp = soc_attr;
+ attrp = &soc_attr->a_next;
+
/*
* It is necessary to try to rewrite attributes with
* dn syntax because they might be used in ACLs as
*attrp = attr;
attrp = &attr->a_next;
}
+
return ent;
}
BUILD_HDB=@BUILD_HDB@
BUILD_LDBM=@BUILD_LDBM@
BUILD_MONITOR=@BUILD_MONITOR@
+BUILD_CACHE=@BUILD_CACHE@
test: tests
tests: int-bdb
@if test "$(BUILD_BDB)" != "no"; then \
echo "Initiating LDAP tests for BDB..." ; \
$(MKDIR) test-db test-repl || true; \
- $(srcdir)/scripts/all $(srcdir) bdb $(BUILD_BDB) $(BUILD_MONITOR) ; \
+ $(srcdir)/scripts/all $(srcdir) bdb $(BUILD_BDB) $(BUILD_MONITOR) $(BUILD_CACHE) ; \
else \
echo "run configure with --enable-bdb" ; \
fi
@if test "$(BUILD_HDB)" != "no" ; then \
echo "Initiating LDAP tests for HDB..." ; \
$(MKDIR) test-db test-repl || true; \
- $(srcdir)/scripts/all $(srcdir) hdb $(BUILD_HDB) $(BUILD_MONITOR) ; \
+ $(srcdir)/scripts/all $(srcdir) hdb $(BUILD_HDB) $(BUILD_MONITOR) $(BUILD_CACHE) ; \
else \
echo "run configure with --enable-hdb" ; \
fi
@if test "$(BUILD_LDBM)" != "no"; then \
echo "Initiating LDAP tests for LDBM..." ; \
$(MKDIR) test-db test-repl || true; \
- $(srcdir)/scripts/all $(srcdir) ldbm $(BUILD_LDBM) $(BUILD_MONITOR); \
+ $(srcdir)/scripts/all $(srcdir) ldbm $(BUILD_LDBM) $(BUILD_MONITOR) $(BUILD_CACHE); \
else \
echo "run configure with --enable-ldbm" ; \
fi
uri ldap://127.0.0.1:9009/o=University%20of%20Michigan,c=US
cacheparams 10000 15000 2 @ENTRY_LIMIT@ @CACHETTL@
-attrset 0 sn cn title
-attrset 1 mail postaladdress telephonenumber
+attrset 0 sn cn title uid
+attrset 1 mail postaladdress telephonenumber cn uid
addtemplate (|(cn=)(sn=)) 0 @CACHETTL@
addtemplate (sn=) 0 @CACHETTL@
addtemplate (uid=) 1 @CACHETTL@
SHTOOL="$SRCDIR/../build/shtool"
+if test $# -eq 0 ; then
+ PROXYCACHE=no
+else
+ PROXYCACHE=$1; shift
+fi
+
TB=`$SHTOOL echo -e "%B"`
TN=`$SHTOOL echo -e "%b"`
for CMD in $SRCDIR/scripts/test*; do
echo ">>>>> Starting ${TB}`basename $CMD`${TN} ..."
- $CMD $SRCDIR $BACKEND $BACKENDTYPE $MONITOR
+ $CMD $SRCDIR $BACKEND $BACKENDTYPE $MONITOR $PROXYCACHE
RC=$?
if test $RC -eq 0 ; then
echo ">>>>> $CMD completed ${TB}OK${TN}."
MONITORDB=$1; shift
fi
+PROXYCACHE=no
+if test $# -ge 1 ; then
+ PROXYCACHE=$1; shift
+fi
+
WAIT=0
if test $# -ge 1 ; then
WAIT=1; shift
. $SRCDIR/scripts/args.sh $*
-if test "$BACKEND" != "ldbm"; then
- echo "Test only valid for back-ldbm"
+if test $PROXYCACHE = no; then
+ echo "Proxy caching requires back-meta AND (back-ldbm OR back-bdb)"
exit 0
-fi
+fi
echo "running defines.sh"
. $SRCDIR/scripts/defines.sh
read foo
fi
-sleep 5
+sleep 10
echo "Using ldapadd to populate the master directory..."
$LDAPADD -x -D "$MANAGERDN" -h $LOCALHOST -p $PORT -w $PASSWD < \
fi
sleep 3
-echo "Query 2: filter:(|(cn=*Jon*)(sn=Jon*)) attrs:cn sn title"
+echo "Query 2: filter:(|(cn=*Jon*)(sn=Jon*)) attrs:cn sn title uid"
$LDAPSEARCH -x -S "" -b "$BASEDN" -h $LOCALHOST -p $SLAVEPORT \
- '(|(cn=*Jon*)(sn=Jon*))' cn sn title >> $SLAVEOUT 2>&1
+ '(|(cn=*Jon*)(sn=Jon*))' cn sn title uid >> $SLAVEOUT 2>&1
RC=$?
if test $RC != 0 ; then
echo "ldapsearch failed ($RC)!"
fi
sleep 3
-echo "Query 3: filter:(sn=Smith*) attrs:cn sn title"
+echo "Query 3: filter:(sn=Smith*) attrs:cn sn title uid"
$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $SLAVEPORT \
- 'sn=Smith*' cn sn title >> $SLAVEOUT 2>&1
+ 'sn=Smith*' cn sn title uid >> $SLAVEOUT 2>&1
RC=$?
if test $RC != 0 ; then
echo "ldapsearch failed ($RC)!"
fi
sleep 3
-echo "Query 4: filter:(sn=Doe*) attrs:cn sn title"
+echo "Query 4: filter:(sn=Doe*) attrs:cn sn title uid"
$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $SLAVEPORT \
- 'sn=Doe' cn sn title >> $SLAVEOUT 2>&1
+ 'sn=Doe' cn sn title uid >> $SLAVEOUT 2>&1
RC=$?
if test $RC != 0 ; then
echo "ldapsearch failed ($RC)!"
fi
sleep 3
-echo "Query 5: filter:(uid=bjorn) attrs:mail postaladdress telephonenumber"
+echo "Query 5: filter:(uid=bjorn) attrs:mail postaladdress telephonenumber cn uid"
$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $SLAVEPORT \
- 'uid=bjorn' mail postaladdress telephonenumber >> $SLAVEOUT 2>&1
+ 'uid=bjorn' mail postaladdress telephonenumber cn uid >> $SLAVEOUT 2>&1
RC=$?
if test $RC != 0 ; then
echo "ldapsearch failed ($RC)!"
fi
sleep 3
-echo "Query 6: filter:(mail=*@example.com) cn sn title"
+echo "Query 6: filter:(mail=*@example.com) cn sn title uid"
$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $SLAVEPORT \
- 'mail=*@mail.alumni.example.com' cn sn title >> $SLAVEOUT 2>&1
+ 'mail=*@mail.alumni.example.com' cn sn title uid >> $SLAVEOUT 2>&1
RC=$?
if test $RC != 0 ; then
echo "ldapsearch failed ($RC)!"
fi
sleep 3
-echo "Query 7: filter:(mail=*) cn sn title"
+echo "Query 7: filter:(mail=*) cn sn title uid"
$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $SLAVEPORT \
- 'mail=*' cn sn title >> $SLAVEOUT 2>&1
+ 'mail=*' cn sn title uid >> $SLAVEOUT 2>&1
RC=$?
if test $RC != 0 ; then
echo "ldapsearch failed ($RC)!"
exit 1
fi
-echo "Query 8: filter:(|(cn=*Jones)(sn=Jones)) attrs:cn sn title"
+echo "Query 8: filter:(|(cn=*Jones)(sn=Jones)) attrs:cn sn title uid"
$LDAPSEARCH -x -S "" -b "$BASEDN" -h $LOCALHOST -p $SLAVEPORT \
- '(|(cn=*Jones)(sn=Jones))' cn sn title >> $SLAVEOUT 2>&1
+ '(|(cn=*Jones)(sn=Jones))' cn sn title uid >> $SLAVEOUT 2>&1
RC=$?
if test $RC != 0 ; then
echo "ldapsearch failed ($RC)!"
fi
sleep 3
-echo "Query 9: filter:(sn=Smith) attrs:cn sn title"
+echo "Query 9: filter:(sn=Smith) attrs:cn sn title uid"
$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $SLAVEPORT \
- 'sn=Smith' cn sn title >> $SLAVEOUT 2>&1
+ 'sn=Smith' cn sn title uid >> $SLAVEOUT 2>&1
RC=$?
if test $RC != 0 ; then
echo "ldapsearch failed ($RC)!"
fi
sleep 3
-echo "Query 10: filter:(uid=bjorn) attrs:mail postaladdress telephonenumber"
+echo "Query 10: filter:(uid=bjorn) attrs:mail postaladdress telephonenumber cn uid"
$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $SLAVEPORT \
- 'uid=bjorn' mail postaladdress telephonenumber >> $SLAVEOUT 2>&1
+ 'uid=bjorn' mail postaladdress telephonenumber cn uid >> $SLAVEOUT 2>&1
RC=$?
if test $RC != 0 ; then
echo "ldapsearch failed ($RC)!"
fi
sleep 3
-echo "Query 11: filter:(mail=*@example.com) cn sn title"
+echo "Query 11: filter:(mail=*@example.com) cn sn title uid"
$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $SLAVEPORT \
- 'mail=jaj@mail.alumni.example.com' cn sn title >> $SLAVEOUT 2>&1
+ 'mail=jaj@mail.alumni.example.com' cn sn title uid >> $SLAVEOUT 2>&1
RC=$?
if test $RC != 0 ; then
echo "ldapsearch failed ($RC)!"