[SCM] Samba Shared Repository - branch master updated
Günther Deschner
gd at samba.org
Mon Mar 15 10:27:17 MDT 2010
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 <gd at 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 <gd at 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
More information about the samba-cvs
mailing list