The branch, master has been updated via ec0aa8a... s4-smbtorture: more work on devicemode tests. via 0e95a6a... s4-smbtorture: explain failure conditions in printer device mode tests a little more. via f2ecec3... s4-smbtorture: add --option=torture:spoolss_check_size=yes. from 299e5bc... s4-smbtorture: print more comments while running SD and DM tests in RPC-SPOOLSS-PRINTER.
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit ec0aa8a5c92c634ca3264b65c987b2072875df5c Author: Günther Deschner <g...@samba.org> Date: Fri Feb 19 15:25:42 2010 +0100 s4-smbtorture: more work on devicemode tests. Guenther commit 0e95a6a09cda6579be7d01c9e4c78f9f7f7cc54e Author: Günther Deschner <g...@samba.org> Date: Fri Feb 19 14:27:31 2010 +0100 s4-smbtorture: explain failure conditions in printer device mode tests a little more. Guenther commit f2ecec3dcdafd63cd72d13019a998bf99539a9ba Author: Günther Deschner <g...@samba.org> Date: Fri Feb 19 14:25:19 2010 +0100 s4-smbtorture: add --option=torture:spoolss_check_size=yes. This disables the size calculation comparison by default. Guenther ----------------------------------------------------------------------- Summary of changes: source4/torture/rpc/spoolss.c | 127 +++++++++++++++++++++++++++-------------- 1 files changed, 85 insertions(+), 42 deletions(-) Changeset truncated at 500 lines: diff --git a/source4/torture/rpc/spoolss.c b/source4/torture/rpc/spoolss.c index 6cc6727..0a915a7 100644 --- a/source4/torture/rpc/spoolss.c +++ b/source4/torture/rpc/spoolss.c @@ -120,30 +120,36 @@ struct test_spoolss_context { #define DO_ROUND(size, n) (((size)+((n)-1)) & ~((n)-1)) #define CHECK_NEEDED_SIZE_ENUM_LEVEL(fn, info, level, count, ic, needed, align) do { \ + if (torture_setting_bool(tctx, "spoolss_check_size", false)) {\ uint32_t size = ndr_size_##fn##_info(tctx, ic, level, count, info);\ uint32_t round_size = DO_ROUND(size, align);\ if (round_size != needed) {\ torture_warning(tctx, __location__": "#fn" level %d (count: %d) got unexpected needed size: %d, we calculated: %d", level, count, needed, round_size);\ CHECK_ALIGN(size, align);\ }\ + }\ } while(0) #define CHECK_NEEDED_SIZE_ENUM(fn, info, count, ic, needed, align) do { \ + if (torture_setting_bool(tctx, "spoolss_check_size", false)) {\ uint32_t size = ndr_size_##fn##_info(tctx, ic, count, info);\ uint32_t round_size = DO_ROUND(size, align);\ if (round_size != needed) {\ torture_warning(tctx, __location__": "#fn" (count: %d) got unexpected needed size: %d, we calculated: %d", count, needed, round_size);\ CHECK_ALIGN(size, align);\ }\ + }\ } while(0) #define CHECK_NEEDED_SIZE_LEVEL(fn, info, level, ic, needed, align) do { \ + if (torture_setting_bool(tctx, "spoolss_check_size", false)) {\ uint32_t size = ndr_size_##fn(info, level, ic, 0);\ uint32_t round_size = DO_ROUND(size, align);\ if (round_size != needed) {\ torture_warning(tctx, __location__": "#fn" level %d got unexpected needed size: %d, we calculated: %d", level, needed, round_size);\ CHECK_ALIGN(size, align);\ }\ + }\ } while(0) static bool test_OpenPrinter_server(struct torture_context *tctx, @@ -1658,7 +1664,8 @@ static bool test_PrinterInfo_SDs(struct torture_context *tctx, sd2 = info.info3.secdesc; - torture_assert(tctx, test_security_descriptor_equal(tctx, sd1, sd2), ""); + torture_assert(tctx, test_security_descriptor_equal(tctx, sd1, sd2), + "SD level 2 != SD level 3"); /* query level 2, set level 2, query level 2 */ @@ -1677,7 +1684,8 @@ static bool test_PrinterInfo_SDs(struct torture_context *tctx, sd1->type &= ~SEC_DESC_DACL_DEFAULTED; } - torture_assert(tctx, test_security_descriptor_equal(tctx, sd1, sd2), ""); + torture_assert(tctx, test_security_descriptor_equal(tctx, sd1, sd2), + "SD level 2 != SD level 2 after SD has been set via level 2"); /* query level 2, set level 3, query level 2 */ @@ -1692,8 +1700,8 @@ static bool test_PrinterInfo_SDs(struct torture_context *tctx, sd2 = info.info2.secdesc; - torture_assert(tctx, test_security_descriptor_equal(tctx, sd1, sd2), ""); - + torture_assert(tctx, test_security_descriptor_equal(tctx, sd1, sd2), + "SD level 2 != SD level 2 after SD has been set via level 3"); /* set modified sd level 3, query level 2 */ @@ -1718,7 +1726,9 @@ static bool test_PrinterInfo_SDs(struct torture_context *tctx, sd1->type &= ~SEC_DESC_DACL_DEFAULTED; } - torture_assert(tctx, test_security_descriptor_equal(tctx, sd1, sd2), ""); + torture_assert(tctx, test_security_descriptor_equal(tctx, sd1, sd2), + "modified SD level 2 != SD level 2 after SD has been set via level 3"); + return true; } @@ -1910,82 +1920,113 @@ static bool test_PrinterInfo_DevModes(struct torture_context *tctx, devmode2 = info.info2.devmode; - torture_assert(tctx, test_devicemode_equal(tctx, devmode, devmode2), ""); + torture_assert(tctx, test_devicemode_equal(tctx, devmode, devmode2), + "DM level 8 != DM level 2"); - /* change formname upon open and see if it persists in getprinter calls */ + /* set devicemode level 8 and see if it persists */ - devmode->formname = talloc_strdup(tctx, "A4"); + devmode->copies = 93; + devmode->formname = talloc_strdup(tctx, "Legal"); - torture_assert(tctx, call_OpenPrinterEx(tctx, p, name, devmode, &handle_devmode), - "failed to open printer handle"); + torture_assert(tctx, test_devmode_set_level(tctx, p, handle, 8, devmode), ""); - torture_assert(tctx, test_GetPrinter_level(tctx, p, &handle_devmode, 8, &info), ""); + torture_assert(tctx, test_GetPrinter_level(tctx, p, handle, 8, &info), ""); devmode2 = info.info8.devmode; - if (strequal(devmode->devicename, devmode2->devicename)) { - torture_fail(tctx, "devicename is the same"); - } - - if (strequal(devmode->formname, devmode2->formname)) { - torture_fail(tctx, "formname is the same"); - } + torture_assert(tctx, test_devicemode_equal(tctx, devmode, devmode2), + "modified DM level 8 != DM level 8 after DM has been set via level 8"); - torture_assert(tctx, test_GetPrinter_level(tctx, p, &handle_devmode, 2, &info), ""); + torture_assert(tctx, test_GetPrinter_level(tctx, p, handle, 2, &info), ""); devmode2 = info.info2.devmode; - if (strequal(devmode->devicename, devmode2->devicename)) { - torture_fail(tctx, "devicename is the same"); - } + torture_assert(tctx, test_devicemode_equal(tctx, devmode, devmode2), + "modified DM level 8 != DM level 2"); - if (strequal(devmode->formname, devmode2->formname)) { - torture_fail(tctx, "formname is the same"); - } - test_ClosePrinter(tctx, p, &handle_devmode); - - - /* set devicemode level 8 and see if it persists */ + /* set devicemode level 2 and see if it persists */ - devmode->copies = 93; - devmode->formname = talloc_strdup(tctx, "Legal"); + devmode->copies = 39; + devmode->formname = talloc_strdup(tctx, "Executive"); - torture_assert(tctx, test_devmode_set_level(tctx, p, handle, 8, devmode), ""); + torture_assert(tctx, test_devmode_set_level(tctx, p, handle, 2, devmode), ""); torture_assert(tctx, test_GetPrinter_level(tctx, p, handle, 8, &info), ""); devmode2 = info.info8.devmode; - torture_assert(tctx, test_devicemode_equal(tctx, devmode, devmode2), ""); + torture_assert(tctx, test_devicemode_equal(tctx, devmode, devmode2), + "modified DM level 8 != DM level 8 after DM has been set via level 2"); torture_assert(tctx, test_GetPrinter_level(tctx, p, handle, 2, &info), ""); devmode2 = info.info2.devmode; - torture_assert(tctx, test_devicemode_equal(tctx, devmode, devmode2), ""); + torture_assert(tctx, test_devicemode_equal(tctx, devmode, devmode2), + "modified DM level 8 != DM level 2"); - /* set devicemode level 2 and see if it persists */ + /* change formname upon open and see if it persists in getprinter calls */ - devmode->copies = 39; - devmode->formname = talloc_strdup(tctx, "Letter"); + devmode->formname = talloc_strdup(tctx, "A4"); + devmode->copies = 42; - torture_assert(tctx, test_devmode_set_level(tctx, p, handle, 8, devmode), ""); + torture_assert(tctx, call_OpenPrinterEx(tctx, p, name, devmode, &handle_devmode), + "failed to open printer handle"); - torture_assert(tctx, test_GetPrinter_level(tctx, p, handle, 8, &info), ""); + torture_assert(tctx, test_GetPrinter_level(tctx, p, &handle_devmode, 8, &info), ""); devmode2 = info.info8.devmode; - torture_assert(tctx, test_devicemode_equal(tctx, devmode, devmode2), ""); + if (strequal(devmode->devicename, devmode2->devicename)) { + torture_comment(tctx, "devicenames are the same\n"); + } else { + torture_comment(tctx, "devicename passed in for open: %s\n", devmode->devicename); + torture_comment(tctx, "devicename after level 8 get: %s\n", devmode2->devicename); + } - torture_assert(tctx, test_GetPrinter_level(tctx, p, handle, 2, &info), ""); + if (strequal(devmode->formname, devmode2->formname)) { + torture_warning(tctx, "formname are the same\n"); + } else { + torture_comment(tctx, "formname passed in for open: %s\n", devmode->formname); + torture_comment(tctx, "formname after level 8 get: %s\n", devmode2->formname); + } + + if (devmode->copies == devmode2->copies) { + torture_warning(tctx, "copies are the same\n"); + } else { + torture_comment(tctx, "copies passed in for open: %d\n", devmode->copies); + torture_comment(tctx, "copies after level 8 get: %d\n", devmode2->copies); + } + + torture_assert(tctx, test_GetPrinter_level(tctx, p, &handle_devmode, 2, &info), ""); devmode2 = info.info2.devmode; - torture_assert(tctx, test_devicemode_equal(tctx, devmode, devmode2), ""); + if (strequal(devmode->devicename, devmode2->devicename)) { + torture_comment(tctx, "devicenames are the same\n"); + } else { + torture_comment(tctx, "devicename passed in for open: %s\n", devmode->devicename); + torture_comment(tctx, "devicename after level 2 get: %s\n", devmode2->devicename); + } + if (strequal(devmode->formname, devmode2->formname)) { + torture_warning(tctx, "formname is the same\n"); + } else { + torture_comment(tctx, "formname passed in for open: %s\n", devmode->formname); + torture_comment(tctx, "formname after level 2 get: %s\n", devmode2->formname); + } + + if (devmode->copies == devmode2->copies) { + torture_warning(tctx, "copies are the same\n"); + } else { + torture_comment(tctx, "copies passed in for open: %d\n", devmode->copies); + torture_comment(tctx, "copies after level 2 get: %d\n", devmode2->copies); + } + + test_ClosePrinter(tctx, p, &handle_devmode); return true; } @@ -4318,6 +4359,8 @@ bool test_printer_keys(struct torture_context *tctx, const char **key_array = NULL; int i; + torture_comment(tctx, "\nTesting Printer Keys\n"); + torture_assert(tctx, test_EnumPrinterKey(tctx, p, handle, "", &key_array), "failed to call test_EnumPrinterKey"); -- Samba Shared Repository