The branch, master has been updated via cf12d45... testprogs: better usage text. via 36d3aa6... testprogs: add very basic PrinterData test for printers. via 0d0d778... testprogs: rename test_PrinterData to test_PrinterData_Server. via d44dd10... testprogs: add SetPrinterDataEx test. via b797481... testprogs: add DeletePrinterKey test. via 1b6f1e8... testprogs: add DeletePrinterDataEx test. via 61568cf... testprogs: allow to test a single printer when given on the cmdline. via 32371e9... testprogs: add RPC_X_NULL_REF_POINTER error code from 522e4f3... s4:RPC-ECHO: don't ignore errors in the Sleep test now that we support async rpc over ncacn_np
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit cf12d4556a12edb032eaef51a60bfc815f38be61 Author: Günther Deschner <g...@samba.org> Date: Mon Mar 1 21:12:49 2010 +0100 testprogs: better usage text. Guenther commit 36d3aa69f1a090ac4054f06883a2fae85070f202 Author: Günther Deschner <g...@samba.org> Date: Mon Mar 1 21:00:20 2010 +0100 testprogs: add very basic PrinterData test for printers. This very basically tests SetPrinterDataEx, GetPrinterDataEx and DeletePrinterDataEx. Guenther commit 0d0d778b212a5409a2632745c842b4270341c8b8 Author: Günther Deschner <g...@samba.org> Date: Mon Mar 1 20:58:41 2010 +0100 testprogs: rename test_PrinterData to test_PrinterData_Server. Guenther commit d44dd1005bad8e95ea3c35376488083ebe9261d7 Author: Günther Deschner <g...@samba.org> Date: Mon Mar 1 20:57:52 2010 +0100 testprogs: add SetPrinterDataEx test. Guenther commit b797481b8dd99a6e67c69ea5ce4b1c6739c45666 Author: Günther Deschner <g...@samba.org> Date: Mon Mar 1 20:56:36 2010 +0100 testprogs: add DeletePrinterKey test. Guenther commit 1b6f1e8c30808c50485b8fecf47e12b45a3ac31f Author: Günther Deschner <g...@samba.org> Date: Mon Mar 1 17:42:19 2010 +0100 testprogs: add DeletePrinterDataEx test. Guenther commit 61568cf4c8f12148390435cba7845acf0b00e941 Author: Günther Deschner <g...@samba.org> Date: Mon Mar 1 20:15:51 2010 +0100 testprogs: allow to test a single printer when given on the cmdline. commit 32371e9ba6b93e6a235054a2db7a34838443e86c Author: Günther Deschner <g...@samba.org> Date: Mon Mar 1 18:01:42 2010 +0100 testprogs: add RPC_X_NULL_REF_POINTER error code ----------------------------------------------------------------------- Summary of changes: testprogs/win32/spoolss/error.c | 2 + testprogs/win32/spoolss/spoolss.c | 142 +++++++++++++++++++++++++++++++++++-- 2 files changed, 138 insertions(+), 6 deletions(-) Changeset truncated at 500 lines: diff --git a/testprogs/win32/spoolss/error.c b/testprogs/win32/spoolss/error.c index 2665856..a74312a 100644 --- a/testprogs/win32/spoolss/error.c +++ b/testprogs/win32/spoolss/error.c @@ -115,6 +115,8 @@ const char *errstr(DWORD error) return "ERROR_CANCELLED"; case ERROR_NOACCESS: return "ERROR_NOACCESS"; + case RPC_X_NULL_REF_POINTER: + return "RPC_X_NULL_REF_POINTER"; case RPC_S_PROCNUM_OUT_OF_RANGE: return "RPC_S_PROCNUM_OUT_OF_RANGE"; case RPC_S_SERVER_UNAVAILABLE: diff --git a/testprogs/win32/spoolss/spoolss.c b/testprogs/win32/spoolss/spoolss.c index 38eb7ed..acdbb13 100644 --- a/testprogs/win32/spoolss/spoolss.c +++ b/testprogs/win32/spoolss/spoolss.c @@ -984,6 +984,7 @@ static BOOL test_OnePrinter(struct torture_context *tctx, ret &= test_EnumPrinterKey(tctx, printername, handle, "PrinterDriverData"); ret &= test_EnumPrinterDataEx(tctx, printername, "PrinterDriverData", handle, NULL, NULL); ret &= test_DeviceModes(tctx, printername, handle); + ret &= test_PrinterData(tctx, printername, handle); ret &= test_ClosePrinter(tctx, handle); return ret; @@ -1243,9 +1244,83 @@ static BOOL test_GetPrinterDataEx(struct torture_context *tctx, /**************************************************************************** ****************************************************************************/ -static BOOL test_PrinterData(struct torture_context *tctx, - LPSTR servername, - HANDLE handle) +static BOOL test_DeletePrinterDataEx(struct torture_context *tctx, + LPSTR servername, + LPSTR keyname, + LPSTR valuename, + HANDLE handle) +{ + DWORD err = 0; + char tmp[1024]; + + torture_comment(tctx, "Testing DeletePrinterDataEx(%s - %s)", keyname, valuename); + + err = DeletePrinterDataEx(handle, keyname, valuename); + if (err) { + sprintf(tmp, "DeletePrinterDataEx(%s - %s) failed on [%s], error: %s\n", + keyname, valuename, servername, errstr(err)); + torture_fail(tctx, tmp); + } + + return TRUE; +} + +/**************************************************************************** +****************************************************************************/ + +static BOOL test_DeletePrinterKey(struct torture_context *tctx, + LPSTR servername, + LPSTR keyname, + HANDLE handle) +{ + DWORD err = 0; + char tmp[1024]; + + torture_comment(tctx, "Testing DeletePrinterKey(%s)", keyname); + + err = DeletePrinterKey(handle, keyname); + if (err) { + sprintf(tmp, "DeletePrinterKey(%s) failed on [%s], error: %s\n", + keyname, servername, errstr(err)); + torture_fail(tctx, tmp); + } + + return TRUE; +} + +/**************************************************************************** +****************************************************************************/ + +static BOOL test_SetPrinterDataEx(struct torture_context *tctx, + LPSTR servername, + LPSTR keyname, + LPSTR valuename, + HANDLE handle, + DWORD type, + LPBYTE buffer, + DWORD offered) +{ + DWORD err = 0; + char tmp[1024]; + + torture_comment(tctx, "Testing SetPrinterDataEx(%s - %s)", keyname, valuename); + + err = SetPrinterDataEx(handle, keyname, valuename, type, buffer, offered); + if (err) { + sprintf(tmp, "SetPrinterDataEx(%s) failed on [%s] (buffer size = %d), error: %s\n", + valuename, servername, offered, errstr(err)); + torture_fail(tctx, tmp); + } + + return TRUE; +} + +/**************************************************************************** +****************************************************************************/ + +static BOOL test_PrinterData_Server(struct torture_context *tctx, + LPSTR servername, + HANDLE handle) { BOOL ret = TRUE; DWORD i; @@ -1278,6 +1353,43 @@ static BOOL test_PrinterData(struct torture_context *tctx, /**************************************************************************** ****************************************************************************/ +static BOOL test_PrinterData(struct torture_context *tctx, + LPSTR printername, + HANDLE handle) +{ + LPSTR keyname = "torture_key"; + LPSTR valuename = "torture_value"; + DWORD type = REG_NONE; + LPBYTE buffer = NULL; + DWORD offered = 0; + BOOL ret = TRUE; + + torture_comment(tctx, "Testing PrinterData"); + + type = REG_SZ; + offered = 4; + buffer = malloc(offered); + if (!buffer) { + return FALSE; + } + buffer[0] = 'c'; + buffer[1] = 'r'; + buffer[2] = 'a'; + buffer[3] = 'p'; + + ret &= test_SetPrinterDataEx(tctx, printername, keyname, valuename, handle, type, buffer, offered); + ret &= test_GetPrinterDataEx(tctx, printername, keyname, valuename, handle, NULL, NULL, NULL); + ret &= test_DeletePrinterDataEx(tctx, printername, keyname, valuename, handle); + ret &= test_DeletePrinterKey(tctx, printername, keyname, handle); + + free(buffer); + + return TRUE; +} + +/**************************************************************************** +****************************************************************************/ + const char *get_string_param(const char *str) { const char *p; @@ -1304,7 +1416,15 @@ int main(int argc, char *argv[]) int i; if (argc < 2) { - fprintf(stderr, "usage: %s <servername> [print] [samba3] [architecture=ARCHITECTURE]\n", argv[0]); + fprintf(stderr, "usage: %s <name> [print] [samba3] [architecture=ARCHITECTURE]\n\n", argv[0]); + fprintf(stderr, "\t<name> can be a server or printer name URI\n"); + fprintf(stderr, "\t[print] will print all data that has been retrieved\n"); + fprintf(stderr, "\t from the printserver\n"); + fprintf(stderr, "\t[samba3] will skip some tests samba servers are known\n"); + fprintf(stderr, "\t not to have implemented\n"); + fprintf(stderr, "\t[architecture=X] allows to define a specific\n"); + fprintf(stderr, "\t architecture to test with. choose between:\n"); + fprintf(stderr, "\t \"Windows NT x86\" or \"Windows x64\"\n"); exit(-1); } @@ -1339,11 +1459,20 @@ int main(int argc, char *argv[]) defaults_use.pDevMode = NULL; defaults_use.DesiredAccess = PRINTER_ACCESS_USE; + if ((servername[0] == '\\') && (servername[1] == '\\')) { + LPSTR p = servername+2; + LPSTR p2; + if ((p2 = strchr(p, '\\')) != NULL) { + ret = test_OnePrinter(tctx, servername, architecture, &defaults_admin); + goto done; + } + } + ret &= test_EnumPrinters(tctx, servername); ret &= test_EnumDrivers(tctx, servername, architecture); ret &= test_OpenPrinter(tctx, servername, NULL, &server_handle); /* ret &= test_EnumPrinterKey(tctx, servername, server_handle, ""); */ - ret &= test_PrinterData(tctx, servername, server_handle); + ret &= test_PrinterData_Server(tctx, servername, server_handle); ret &= test_EnumForms(tctx, servername, server_handle); ret &= test_ClosePrinter(tctx, server_handle); ret &= test_EnumPorts(tctx, servername); @@ -1352,8 +1481,9 @@ int main(int argc, char *argv[]) ret &= test_EnumPrintProcessorDatatypes(tctx, servername); ret &= test_GetPrintProcessorDirectory(tctx, servername, architecture); ret &= test_GetPrinterDriverDirectory(tctx, servername, architecture); - ret &= test_EachPrinter(tctx, servername, architecture, NULL); + ret &= test_EachPrinter(tctx, servername, architecture, &defaults_admin); + done: if (!ret) { if (tctx->last_reason) { fprintf(stderr, "failed: %s\n", tctx->last_reason); -- Samba Shared Repository