summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xsource4/selftest/tests.sh2
-rw-r--r--source4/torture/ldap/common.c1
-rw-r--r--source4/torture/ldap/ldap_sort.c (renamed from source4/torture/ldb/modules/ldb_module.c)120
-rw-r--r--source4/torture/torture.c1
4 files changed, 45 insertions, 79 deletions
diff --git a/source4/selftest/tests.sh b/source4/selftest/tests.sh
index 1b575a978b..6c6a09fbbd 100755
--- a/source4/selftest/tests.sh
+++ b/source4/selftest/tests.sh
@@ -120,7 +120,7 @@ if grep ENABLE_GNUTLS.1 include/config.h > /dev/null; then
done
fi
plantest "ldb.ldapi with options $options" dc $bbdir/test_ldb.sh ldapi \$PREFIX_ABS/dc/private/ldapi $options
-for t in LDAP-CLDAP LDAP-BASIC LDAP-SCHEMA LDAP-UPTODATEVECTOR
+for t in `$smb4torture --list | grep "^LDAP-"`
do
plansmbtorturetest "$t" dc "-U\$USERNAME%\$PASSWORD" //\$SERVER_IP/_none_
done
diff --git a/source4/torture/ldap/common.c b/source4/torture/ldap/common.c
index 2c11de729c..4a2bc2e391 100644
--- a/source4/torture/ldap/common.c
+++ b/source4/torture/ldap/common.c
@@ -105,6 +105,7 @@ NTSTATUS torture_ldap_init(void)
struct torture_suite *suite = torture_suite_create(talloc_autofree_context(), "LDAP");
torture_suite_add_simple_test(suite, "BENCH-CLDAP", torture_bench_cldap);
torture_suite_add_simple_test(suite, "BASIC", torture_ldap_basic);
+ torture_suite_add_simple_test(suite, "SORT", torture_ldap_sort);
torture_suite_add_simple_test(suite, "CLDAP", torture_cldap);
torture_suite_add_simple_test(suite, "SCHEMA", torture_ldap_schema);
torture_suite_add_simple_test(suite, "UPTODATEVECTOR", torture_ldap_uptodatevector);
diff --git a/source4/torture/ldb/modules/ldb_module.c b/source4/torture/ldap/ldap_sort.c
index 64f95f7619..4d732cf997 100644
--- a/source4/torture/ldb/modules/ldb_module.c
+++ b/source4/torture/ldap/ldap_sort.c
@@ -1,23 +1,23 @@
/*
- Unix SMB/CIFS implementation.
-
- Test LDB attribute functions
-
- Copyright (C) Andrew Bartlet <abartlet@samba.org> 2008
- Copyright (C) Matthieu Patou <mat@matws.net> 2009
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- This program 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 General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
+ Unix SMB/CIFS implementation.
+
+ Test LDB attribute functions
+
+ Copyright (C) Andrew Bartlet <abartlet@samba.org> 2008-2009
+ Copyright (C) Matthieu Patou <mat@matws.net> 2009
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program 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 General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "includes.h"
@@ -29,8 +29,8 @@
#include "lib/cmdline/popt_common.h"
#include "torture/smbtorture.h"
#include "torture/local/proto.h"
-
-static bool torture_ldb_mod_sort(struct torture_context *torture)
+#include <ctype.h>
+bool torture_ldap_sort(struct torture_context *torture)
{
struct ldb_context *ldb;
@@ -38,25 +38,21 @@ static bool torture_ldb_mod_sort(struct torture_context *torture)
bool ret = false;
const char *host = torture_setting_string(torture, "host", NULL);
char *url;
- char *basedn;
int i;
- int j;
+ codepoint_t j;
struct ldb_message_element *elem;
struct ldb_message *msg;
- struct dsdb_schema *schema = NULL;
- struct ldb_control **ctrl;
- struct ldb_server_sort_control ** control;
+ struct ldb_server_sort_control **control;
struct ldb_request *req;
struct ldb_result *ctx;
struct ldb_val* prev = NULL;
- char *prev_txt = NULL;
+ const char *prev_txt = NULL;
int prev_len = 0;
struct ldb_val* cur = NULL;
- char *cur_txt = NULL;
+ const char *cur_txt = NULL;
int cur_len = 0;
struct ldb_dn* dn;
- char* user_cn = "Users";
/* TALLOC_CTX* ctx;*/
@@ -67,56 +63,43 @@ static bool torture_ldb_mod_sort(struct torture_context *torture)
NULL,
cmdline_credentials,
0, NULL);
- if (!ldb) goto failed;
- ret = false;
- fprintf(stderr,"Ici \n");
+ torture_assert(torture, ldb, "Failed to make LDB connection to target");
ctx = talloc_zero(ldb, struct ldb_result);
- ctrl = talloc_array(ctx, struct ldb_control *, 2);
- ctrl[0] = talloc(ctrl, struct ldb_control);
- ctrl[0]->oid = LDB_CONTROL_SERVER_SORT_OID;
- ctrl[0]->critical = true;
-
- control = talloc_array(ctrl[0], struct ldb_server_sort_control *, 2);
+ control = talloc_array(ctx, struct ldb_server_sort_control *, 2);
control[0] = talloc(control, struct ldb_server_sort_control);
control[0]->attributeName = talloc_strdup(control, "cn");
control[0]->orderingRule = NULL;
control[0]->reverse = 0;
control[1] = NULL;
- ctrl[0]->data = control;
- ctrl[1] = NULL;
dn = ldb_get_root_basedn(ldb);
- ldb_dn_add_child_fmt(dn, "cn=%s", user_cn);
+ ldb_dn_add_child_fmt(dn, "cn=users");
ret = ldb_build_search_req(&req, ldb, ctx,
- dn,
- LDB_SCOPE_SUBTREE,
- "(objectClass=*)", NULL,
- ctrl,
- ctx, ldb_search_default_callback, NULL);
+ dn,
+ LDB_SCOPE_SUBTREE,
+ "(objectClass=*)", NULL,
+ NULL,
+ ctx, ldb_search_default_callback, NULL);
+ torture_assert(torture, ret == LDB_SUCCESS, "Failed to build search request");
+
+ ret = ldb_request_add_control(req, LDB_CONTROL_SERVER_SORT_OID, true, control);
+ torture_assert(torture, ret == LDB_SUCCESS, "Failed to add control to search request");
ret = ldb_request(ldb, req);
- if (ret != LDB_SUCCESS) {
- d_printf("search failed - %s\n", ldb_errstring(ldb));
- talloc_free(req);
- return false;
- }
+ torture_assert(torture, ret == LDB_SUCCESS, ldb_errstring(ldb));
ret = ldb_wait(req->handle, LDB_WAIT_ALL);
+ torture_assert(torture, ret == LDB_SUCCESS, ldb_errstring(ldb));
- if (ret != LDB_SUCCESS) {
- d_printf("search error - %s\n", ldb_errstring(ldb));
- talloc_free(req);
- return false;
- }
- ret = 1;
+ ret = true;
if (ctx->count > 1) {
for (i=0;i<ctx->count;i++) {
msg = ctx->msgs[i];
elem = ldb_msg_find_element(msg,"cn");
cur = elem->values;
- d_printf("cn: %s\n",cur->data);
+ torture_comment(torture, "cn: %s\n",cur->data);
if (prev != NULL)
{
/* Do only the ascii case right now ... */
@@ -128,7 +111,7 @@ static bool torture_ldb_mod_sort(struct torture_context *torture)
while ( cur_txt[0] == cur_txt[1] ) { cur_txt++; cur_len--;}
while ( prev_txt[0] == prev_txt[1] ) { prev_txt++; prev_len--;}
while( *(cur_txt) && *(prev_txt) && cur_len && prev_len ) {
- j = (int)toupper(*(prev_txt))-(int)toupper(*(cur_txt));
+ j = toupper_m(*(prev_txt))-toupper_m(*(cur_txt));
if ( j > 0 ) {
/* Just check that is not due to trailling white space in prev_txt
* That is to say *cur_txt = 0 and prev_txt = 20 */
@@ -138,10 +121,7 @@ static bool torture_ldb_mod_sort(struct torture_context *torture)
/* Now that potential whitespace are removed if we are at the end
* of the cur_txt then it means that in fact strings were identical
*/
- if ( *cur_txt || *prev_txt ) {
- ret = 0;
- torture->last_reason = talloc_strdup(torture, "Data wrongly sorted");
- }
+ torture_assert(torture, *cur_txt && *prev_txt, "Data wrongly sorted");
break;
}
else
@@ -172,19 +152,5 @@ static bool torture_ldb_mod_sort(struct torture_context *torture)
}
-failed:
return ret;
}
-
-
-NTSTATUS torture_ldb_module_init(void)
-{
- struct torture_suite *suite = torture_suite_create(talloc_autofree_context(), "LDB_MODULE");
- torture_suite_add_simple_test(suite, "SORT", torture_ldb_mod_sort);
- suite->description = talloc_strdup(suite, "LDB MODULES (samba-specific behaviour) tests");
-
- torture_register_suite(suite);
-
- return NT_STATUS_OK;
-}
-
diff --git a/source4/torture/torture.c b/source4/torture/torture.c
index 1dce12adb0..a7296e62db 100644
--- a/source4/torture/torture.c
+++ b/source4/torture/torture.c
@@ -56,7 +56,6 @@ _PUBLIC_ int torture_init(void)
{
extern NTSTATUS torture_base_init(void);
extern NTSTATUS torture_ldap_init(void);
- extern NTSTATUS torture_ldb_module_init(void);
extern NTSTATUS torture_local_init(void);
extern NTSTATUS torture_nbt_init(void);
extern NTSTATUS torture_nbench_init(void);