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 <[email protected]>
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 <[email protected]>
Date:   Mon Jun 8 22:33:51 2009 +0200

    nss_wrapper: fix typo in testsuite.
    
    Guenther

commit 80d0a12fb777de7b903a6f5b319a1951c4fdfaa6
Author: Günther Deschner <[email protected]>
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

Reply via email to