[SCM] Samba Shared Repository - branch master updated - release-4-0-0alpha7-2160-gbf7c814

Günther Deschner gd at samba.org
Mon Jun 8 20:45:51 GMT 2009


The branch, master has been updated
       via  bf7c814694f532ebe174f3dcd7bf4115d5006aa6 (commit)
       via  7caf51c37a26e855d0ed8d4148a5a91ce8e6807a (commit)
       via  80d0a12fb777de7b903a6f5b319a1951c4fdfaa6 (commit)
      from  7f52c8fb5006a167e05860854dc51798652cb192 (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit bf7c814694f532ebe174f3dcd7bf4115d5006aa6
Author: Günther Deschner <gd at samba.org>
Date:   Mon Jun 8 22:41:23 2009 +0200

    s4-smbtorture: when testing RPC-SAMR-LARGE-DC its fine to just close the objects.
    
    Guenther

commit 7caf51c37a26e855d0ed8d4148a5a91ce8e6807a
Author: Günther Deschner <gd at samba.org>
Date:   Mon Jun 8 22:33:51 2009 +0200

    nss_wrapper: fix typo in testsuite.
    
    Guenther

commit 80d0a12fb777de7b903a6f5b319a1951c4fdfaa6
Author: Günther Deschner <gd at samba.org>
Date:   Mon Jun 8 10:24:48 2009 +0200

    s4-smbtorture: add test_QueryDisplayInfo_level to RPC-SAMR-LARGE-DC.
    
    Guenther

-----------------------------------------------------------------------

Summary of changes:
 lib/nss_wrapper/testsuite.c |    2 +-
 source4/torture/rpc/samr.c  |  115 ++++++++++++++++++++++++++++++++++++-------
 2 files changed, 97 insertions(+), 20 deletions(-)


Changeset truncated at 500 lines:

diff --git a/lib/nss_wrapper/testsuite.c b/lib/nss_wrapper/testsuite.c
index e4047cf..02a10e3 100644
--- a/lib/nss_wrapper/testsuite.c
+++ b/lib/nss_wrapper/testsuite.c
@@ -586,7 +586,7 @@ static bool test_nwrap_group(struct torture_context *tctx)
 		torture_assert(tctx, test_nwrap_getgrgid(tctx, grp[i].gr_gid, &grp2),
 			"failed to call getgrgid for enumerated user");
 		torture_assert_group_equal(tctx, &grp[i], &grp2,
-			"getgrent and getgruid gave different results");
+			"getgrent and getgrgid gave different results");
 		torture_assert_group_equal(tctx, &grp1, &grp2,
 			"getgrnam and getgrgid gave different results");
 	}
diff --git a/source4/torture/rpc/samr.c b/source4/torture/rpc/samr.c
index b5eb0e2..11e746a 100644
--- a/source4/torture/rpc/samr.c
+++ b/source4/torture/rpc/samr.c
@@ -6172,6 +6172,77 @@ static bool test_EnumDomainAliases(struct dcerpc_pipe *p,
 	return true;
 }
 
+static bool test_QueryDisplayInfo_level(struct dcerpc_pipe *p,
+					struct torture_context *tctx,
+					struct policy_handle *handle,
+					uint16_t level,
+					uint32_t *total_num_entries_p)
+{
+	NTSTATUS status;
+	struct samr_QueryDisplayInfo r;
+	uint32_t total_num_entries = 0;
+
+	r.in.domain_handle = handle;
+	r.in.level = level;
+	r.in.start_idx = 0;
+	r.in.max_entries = (uint32_t)-1;
+	r.in.buf_size = (uint32_t)-1;
+
+	printf("Testing QueryDisplayInfo\n");
+
+	do {
+		uint32_t total_size;
+		uint32_t returned_size;
+		union samr_DispInfo info;
+
+		r.out.total_size = &total_size;
+		r.out.returned_size = &returned_size;
+		r.out.info = &info;
+
+		status = dcerpc_samr_QueryDisplayInfo(p, tctx, &r);
+		if (NT_STATUS_IS_ERR(status)) {
+			torture_assert_ntstatus_ok(tctx, status,
+				"failed to query displayinfo");
+		}
+
+		if (*r.out.returned_size == 0) {
+			break;
+		}
+
+		switch (r.in.level) {
+		case 1:
+			total_num_entries += info.info1.count;
+			r.in.start_idx += info.info1.entries[info.info1.count - 1].idx + 1;
+			break;
+		case 2:
+			total_num_entries += info.info2.count;
+			r.in.start_idx += info.info2.entries[info.info2.count - 1].idx + 1;
+			break;
+		case 3:
+			total_num_entries += info.info3.count;
+			r.in.start_idx += info.info3.entries[info.info3.count - 1].idx + 1;
+			break;
+		case 4:
+			total_num_entries += info.info4.count;
+			r.in.start_idx += info.info4.entries[info.info4.count - 1].idx + 1;
+			break;
+		case 5:
+			total_num_entries += info.info5.count;
+			r.in.start_idx += info.info5.entries[info.info5.count - 1].idx + 1;
+			break;
+		default:
+			return false;
+		}
+
+	} while (NT_STATUS_EQUAL(status, STATUS_MORE_ENTRIES));
+
+	if (total_num_entries_p) {
+		*total_num_entries_p = total_num_entries;
+	}
+
+	return true;
+}
+
 static bool test_ManyObjects(struct dcerpc_pipe *p,
 			     struct torture_context *tctx,
 			     struct policy_handle *domain_handle,
@@ -6260,21 +6331,23 @@ static bool test_ManyObjects(struct dcerpc_pipe *p,
 		return false;
 	}
 
-	/* TODO: dispinfo */
+	/* dispinfo */
 
 	switch (which_ops) {
 	case TORTURE_SAMR_MANY_ACCOUNTS:
+		ret &= test_QueryDisplayInfo_level(p, tctx, domain_handle, 1, &num_disp);
 		break;
 	case TORTURE_SAMR_MANY_GROUPS:
+		ret &= test_QueryDisplayInfo_level(p, tctx, domain_handle, 3, &num_disp);
 		break;
 	case TORTURE_SAMR_MANY_ALIASES:
+		/* no aliases in dispinfo */
 		break;
 	default:
 		return false;
 	}
 
-
-	/* delete */
+	/* close or delete */
 
 	for (i=0; i < num_total; i++) {
 
@@ -6282,31 +6355,35 @@ static bool test_ManyObjects(struct dcerpc_pipe *p,
 			continue;
 		}
 
-		switch (which_ops) {
-		case TORTURE_SAMR_MANY_ACCOUNTS:
-			ret &= test_DeleteUser(p, tctx, &handles[i]);
-			break;
-		case TORTURE_SAMR_MANY_GROUPS:
-			ret &= test_DeleteDomainGroup(p, tctx, &handles[i]);
-			break;
-		case TORTURE_SAMR_MANY_ALIASES:
-			ret &= test_DeleteAlias(p, tctx, &handles[i]);
-			break;
-		default:
-			return false;
+		if (torture_setting_bool(tctx, "samba3", false)) {
+			ret &= test_samr_handle_Close(p, tctx, &handles[i]);
+		} else {
+			switch (which_ops) {
+			case TORTURE_SAMR_MANY_ACCOUNTS:
+				ret &= test_DeleteUser(p, tctx, &handles[i]);
+				break;
+			case TORTURE_SAMR_MANY_GROUPS:
+				ret &= test_DeleteDomainGroup(p, tctx, &handles[i]);
+				break;
+			case TORTURE_SAMR_MANY_ALIASES:
+				ret &= test_DeleteAlias(p, tctx, &handles[i]);
+				break;
+			default:
+				return false;
+			}
 		}
 	}
 
 	talloc_free(handles);
 
-#if 0
-	torture_assert_int_equal(tctx, num_disp, num_anounced + num_created,
-		"unexpected number of results returned in dispinfo call");
-#endif
 	if (which_ops == TORTURE_SAMR_MANY_ACCOUNTS && num_enum != num_anounced + num_created) {
 		torture_comment(tctx,
 				"unexpected number of results (%u) returned in enum call, expected %u\n",
 				num_enum, num_anounced + num_created);
+
+		torture_comment(tctx,
+				"unexpected number of results (%u) returned in dispinfo, call, expected %u\n",
+				num_disp, num_anounced + num_created);
 	}
 	return ret;
 }


-- 
Samba Shared Repository


More information about the samba-cvs mailing list