[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