The branch, master has been updated
       via  6f36e9d... testprogs: add EnumPrinterData test to win32 spoolss 
test.
       via  08ec9b7... s4-smbtorture: fill PrinterDriverData with more values 
for consistency test.
      from  386f15c... s3:smbd: make sure we always have a valid talloc 
stackframe

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


- Log -----------------------------------------------------------------
commit 6f36e9d5045a062784d21dbfdd720df4cbb91182
Author: Günther Deschner <g...@samba.org>
Date:   Mon Mar 15 17:08:23 2010 +0100

    testprogs: add EnumPrinterData test to win32 spoolss test.
    
    Guenther

commit 08ec9b7e734dcdd46440abba49e980cae01b1e44
Author: Günther Deschner <g...@samba.org>
Date:   Mon Mar 15 16:11:43 2010 +0100

    s4-smbtorture: fill PrinterDriverData with more values for consistency test.
    
    Guenther

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

Summary of changes:
 source4/torture/rpc/spoolss.c     |   25 ++++++++++++--
 testprogs/win32/spoolss/error.c   |    2 +
 testprogs/win32/spoolss/spoolss.c |   65 +++++++++++++++++++++++++++++++++++++
 3 files changed, 89 insertions(+), 3 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source4/torture/rpc/spoolss.c b/source4/torture/rpc/spoolss.c
index e9b4327..ee937db 100644
--- a/source4/torture/rpc/spoolss.c
+++ b/source4/torture/rpc/spoolss.c
@@ -3179,10 +3179,23 @@ static bool test_EnumPrinterData_consistency(struct 
torture_context *tctx,
 
        torture_assert(tctx,
                reg_string_to_val(tctx, lp_iconv_convenience(tctx->lp_ctx),
-                                 "REG_SZ", "torture_data", &type, &blob), "");
+                                 "REG_SZ", "torture_data1", &type, &blob), "");
 
        torture_assert(tctx,
-               test_SetPrinterData(tctx, p, handle, "torture_value", type, 
blob.data, blob.length),
+               test_SetPrinterData(tctx, p, handle, "torture_value1", type, 
blob.data, blob.length),
+               "SetPrinterData failed");
+
+       blob = data_blob_string_const("torture_data2");
+
+       torture_assert(tctx,
+               test_SetPrinterData(tctx, p, handle, "torture_value2", 
REG_BINARY, blob.data, blob.length),
+               "SetPrinterData failed");
+
+       blob = data_blob_talloc(tctx, NULL, 4);
+       SIVAL(blob.data, 0, 0x11223344);
+
+       torture_assert(tctx,
+               test_SetPrinterData(tctx, p, handle, "torture_value3", type, 
blob.data, blob.length),
                "SetPrinterData failed");
 
        torture_assert(tctx,
@@ -3250,7 +3263,13 @@ static bool test_EnumPrinterData_consistency(struct 
torture_context *tctx,
        }
 
        torture_assert(tctx,
-               test_DeletePrinterData(tctx, p, handle, "torture_value"),
+               test_DeletePrinterData(tctx, p, handle, "torture_value1"),
+               "DeletePrinterData failed");
+       torture_assert(tctx,
+               test_DeletePrinterData(tctx, p, handle, "torture_value2"),
+               "DeletePrinterData failed");
+       torture_assert(tctx,
+               test_DeletePrinterData(tctx, p, handle, "torture_value3"),
                "DeletePrinterData failed");
 
        torture_comment(tctx, "EnumPrinterData vs EnumPrinterDataEx consistency 
test succeeded\n\n");
diff --git a/testprogs/win32/spoolss/error.c b/testprogs/win32/spoolss/error.c
index a74312a..e5ad661 100644
--- a/testprogs/win32/spoolss/error.c
+++ b/testprogs/win32/spoolss/error.c
@@ -45,6 +45,8 @@ const char *errstr(DWORD error)
                return "ERROR_INVALID_DATA";
        case ERROR_MORE_DATA:
                return "ERROR_MORE_DATA";
+       case ERROR_NO_MORE_ITEMS:
+               return "ERROR_NO_MORE_ITEMS";
 #ifdef ERROR_INVALID_DATATYPE
        case ERROR_INVALID_DATATYPE:
                return "ERROR_INVALID_DATATYPE";
diff --git a/testprogs/win32/spoolss/spoolss.c 
b/testprogs/win32/spoolss/spoolss.c
index c4c5017..d98aee2 100644
--- a/testprogs/win32/spoolss/spoolss.c
+++ b/testprogs/win32/spoolss/spoolss.c
@@ -682,6 +682,70 @@ static BOOL test_EnumJobs(struct torture_context *tctx,
 /****************************************************************************
 ****************************************************************************/
 
+static BOOL test_EnumPrinterData(struct torture_context *tctx,
+                                LPSTR servername,
+                                HANDLE handle)
+{
+       DWORD err = 0;
+       LPTSTR value_name;
+       LPBYTE data;
+       DWORD index = 0;
+       DWORD type;
+       DWORD value_offered = 0, value_needed;
+       DWORD data_offered = 0, data_needed;
+       char tmp[1024];
+
+       torture_comment(tctx, "Testing EnumPrinterData(%d) (value offered: %d, 
data_offered: %d)\n",
+               index, value_offered, data_offered);
+
+       err = EnumPrinterData(handle, 0, NULL, 0, &value_needed, NULL, NULL, 0, 
&data_needed);
+       if (err) {
+               sprintf(tmp, "EnumPrinterData(%d) failed on [%s] (value size = 
%d, data size = %d), error: %s\n",
+                       index, servername, value_offered, data_offered, 
errstr(err));
+               torture_fail(tctx, tmp);
+       }
+
+       value_name = malloc(value_needed);
+       torture_assert(tctx, value_name, "malloc failed");
+       data = malloc(data_needed);
+       torture_assert(tctx, data, "malloc failed");
+
+       value_offered = value_needed;
+       data_offered = data_needed;
+
+       do {
+
+               value_needed = 0;
+               data_needed = 0;
+
+               torture_comment(tctx, "Testing EnumPrinterData(%d) (value 
offered: %d, data_offered: %d)\n",
+                       index, value_offered, data_offered);
+
+               err = EnumPrinterData(handle, index++, value_name, 
value_offered, &value_needed, &type, data, data_offered, &data_needed);
+               if (err == ERROR_NO_MORE_ITEMS) {
+                       break;
+               }
+               if (err) {
+                       sprintf(tmp, "EnumPrinterData(%d) failed on [%s] (value 
size = %d, data size = %d), error: %s\n",
+                               index, servername, value_offered, data_offered, 
errstr(err));
+                       torture_fail(tctx, tmp);
+               }
+
+               if (tctx->print) {
+                       print_printer_data(NULL, value_name, data_needed, data, 
type);
+               }
+
+       } while (err != ERROR_NO_MORE_ITEMS);
+
+       free(value_name);
+       free(data);
+
+       return TRUE;
+}
+
+/****************************************************************************
+****************************************************************************/
+
 static BOOL test_EnumPrinterDataEx(struct torture_context *tctx,
                                   LPSTR servername,
                                   LPSTR keyname,
@@ -985,6 +1049,7 @@ static BOOL test_OnePrinter(struct torture_context *tctx,
        ret &= test_EachJob(tctx, printername, handle);
        ret &= test_EnumPrinterKey(tctx, printername, handle, "");
        ret &= test_EnumPrinterKey(tctx, printername, handle, 
"PrinterDriverData");
+       ret &= test_EnumPrinterData(tctx, printername, handle);
        ret &= test_EnumPrinterDataEx(tctx, printername, "PrinterDriverData", 
handle, NULL, NULL);
        ret &= test_DeviceModes(tctx, printername, handle);
        ret &= test_PrinterData(tctx, printername, handle);


-- 
Samba Shared Repository

Reply via email to