The branch, master has been updated
       via  01801f3... s4-smbtorture: while testing PrinterDataEx also compare 
Get and Enum results.
      from  367ddc3... Fix bug #7234 - Symlink delete fails but incorrectly 
reports success to client.

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


- Log -----------------------------------------------------------------
commit 01801f3f94f76b86a92c5ffec7399b39977572f7
Author: Günther Deschner <g...@samba.org>
Date:   Wed Mar 10 23:08:09 2010 +0100

    s4-smbtorture: while testing PrinterDataEx also compare Get and Enum 
results.
    
    Guenther

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

Summary of changes:
 source4/torture/rpc/spoolss.c |   39 +++++++++++++++++++++++++++++----------
 1 files changed, 29 insertions(+), 10 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source4/torture/rpc/spoolss.c b/source4/torture/rpc/spoolss.c
index 73787a9..4ff79f2 100644
--- a/source4/torture/rpc/spoolss.c
+++ b/source4/torture/rpc/spoolss.c
@@ -3057,7 +3057,9 @@ static bool test_EnumPrinterData(struct torture_context 
*tctx, struct dcerpc_pip
 static bool test_EnumPrinterDataEx(struct torture_context *tctx,
                                   struct dcerpc_pipe *p,
                                   struct policy_handle *handle,
-                                  const char *key_name)
+                                  const char *key_name,
+                                  uint32_t *count_p,
+                                  struct spoolss_PrinterEnumValues **info_p)
 {
        struct spoolss_EnumPrinterDataEx r;
        struct spoolss_PrinterEnumValues *info;
@@ -3085,6 +3087,13 @@ static bool test_EnumPrinterDataEx(struct 
torture_context *tctx,
 
        CHECK_NEEDED_SIZE_ENUM(spoolss_EnumPrinterDataEx, info, count, 
lp_iconv_convenience(tctx->lp_ctx), needed, 1);
 
+       if (count_p) {
+               *count_p = count;
+       }
+       if (info_p) {
+               *info_p = info;
+       }
+
        return true;
 }
 
@@ -3441,6 +3450,8 @@ static bool test_SetPrinterDataEx_matrix(struct 
torture_context *tctx,
                DATA_BLOB data;
                uint8_t *data_out;
                uint32_t needed, offered = 0;
+               uint32_t ecount;
+               struct spoolss_PrinterEnumValues *einfo;
 
                switch (types[t]) {
                case REG_BINARY:
@@ -3463,13 +3474,25 @@ static bool test_SetPrinterDataEx_matrix(struct 
torture_context *tctx,
                        test_SetPrinterDataEx(tctx, p, handle, keys[i], 
value_name, types[t], data.data, offered),
                        "failed to call SetPrinterDataEx");
 
-               if (!test_GetPrinterDataEx(tctx, p, handle, keys[i], 
value_name, &type, &data_out, &needed)) {
-                       return false;
-               }
+               torture_assert(tctx,
+                       test_GetPrinterDataEx(tctx, p, handle, keys[i], 
value_name, &type, &data_out, &needed),
+                       "failed to call GetPrinterDataEx");
+
+               torture_assert(tctx,
+                       test_EnumPrinterDataEx(tctx, p, handle, keys[i], 
&ecount, &einfo),
+                       "failed to call EnumPrinterDataEx");
+
                torture_assert_int_equal(tctx, types[t], type, "type mismatch");
                torture_assert_int_equal(tctx, needed, offered, "size 
mismatch");
                torture_assert_mem_equal(tctx, data_out, data.data, offered, 
"buffer mismatch");
 
+               torture_assert_int_equal(tctx, ecount, 1, "unexpected enum 
count");
+               torture_assert_str_equal(tctx, einfo[0].value_name, value_name, 
"value_name mismatch");
+               torture_assert_int_equal(tctx, einfo[0].value_name_len, 
strlen_m_term(value_name)*2, "unexpected value_name_len");
+               torture_assert_int_equal(tctx, einfo[0].type, types[t], "type 
mismatch");
+               torture_assert_int_equal(tctx, einfo[0].data_length, offered, 
"size mismatch");
+               torture_assert_mem_equal(tctx, einfo[0].data->data, data.data, 
offered, "buffer mismatch");
+
                if (winreg_pipe && hive_handle) {
                        const char *printer_key;
                        struct policy_handle key_handle;
@@ -3494,10 +3517,6 @@ static bool test_SetPrinterDataEx_matrix(struct 
torture_context *tctx,
 
                key = talloc_strdup(tctx, keys[i]);
 
-               if (!test_EnumPrinterDataEx(tctx, p, handle, keys[i])) {
-                       return false;
-               }
-
                if (!test_DeletePrinterDataEx(tctx, p, handle, keys[i], 
value_name)) {
                        return false;
                }
@@ -3952,7 +3971,7 @@ static bool test_OpenPrinterEx(struct torture_context 
*tctx,
                ret = false;
        }
 
-       if (!test_EnumPrinterDataEx(tctx, p, &handle, "PrinterDriverData")) {
+       if (!test_EnumPrinterDataEx(tctx, p, &handle, "PrinterDriverData", 
NULL, NULL)) {
                ret = false;
        }
 
@@ -4721,7 +4740,7 @@ bool test_printer_keys(struct torture_context *tctx,
                        "failed to call test_EnumPrinterKey");
        }
        for (i=0; key_array && key_array[i]; i++) {
-               torture_assert(tctx, test_EnumPrinterDataEx(tctx, p, handle, 
key_array[i]),
+               torture_assert(tctx, test_EnumPrinterDataEx(tctx, p, handle, 
key_array[i], NULL, NULL),
                        "failed to call test_EnumPrinterDataEx");
        }
 


-- 
Samba Shared Repository

Reply via email to