The branch, master has been updated
       via  0833c96... s4-smbtorture: add function to get a printserver's 
environment.
       via  545ef2c... s4-smbtorture: simplify macros used in PrinterInfo 
winreg consistency teste.
       via  e647b8c... s4-smbtorture: refactor test_GetPrinterDriver2().
      from  7e9e529... s4:dynconfig: fix the autoconf build and pass 
-DPYTHONDIR=\"$(pythondir)\"

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


- Log -----------------------------------------------------------------
commit 0833c9639e3e7fb7e14dc25d90f4a9973e717cbc
Author: Günther Deschner <g...@samba.org>
Date:   Tue Apr 20 19:29:12 2010 +0200

    s4-smbtorture: add function to get a printserver's environment.
    
    Guenther

commit 545ef2ca7636507f86f370ae57937de7a6bd5d2e
Author: Günther Deschner <g...@samba.org>
Date:   Tue Apr 20 18:16:03 2010 +0200

    s4-smbtorture: simplify macros used in PrinterInfo winreg consistency teste.
    
    Guenther

commit e647b8c61f9b65e4c4d07eae7f1a4c2be711b8de
Author: Günther Deschner <g...@samba.org>
Date:   Tue Apr 20 16:25:27 2010 +0200

    s4-smbtorture: refactor test_GetPrinterDriver2().
    
    Guenther

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

Summary of changes:
 source4/torture/rpc/spoolss.c |  166 ++++++++++++++++++++++++++--------------
 1 files changed, 108 insertions(+), 58 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source4/torture/rpc/spoolss.c b/source4/torture/rpc/spoolss.c
index 55af920..9203a72 100644
--- a/source4/torture/rpc/spoolss.c
+++ b/source4/torture/rpc/spoolss.c
@@ -3284,6 +3284,28 @@ static bool test_GetPrinterDataEx(struct torture_context 
*tctx,
        return true;
 }
 
+static bool test_get_environment(struct torture_context *tctx,
+                                struct dcerpc_binding_handle *b,
+                                struct policy_handle *handle,
+                                const char **architecture)
+{
+       DATA_BLOB blob;
+       enum winreg_Type type;
+       uint8_t *data;
+       uint32_t needed;
+
+       torture_assert(tctx,
+               test_GetPrinterData(tctx, b, handle, "Architecture", &type, 
&data, &needed),
+               "failed to get Architecture");
+
+       torture_assert_int_equal(tctx, type, REG_SZ, "unexpected type");
+
+       blob = data_blob_const(data, needed);
+       *architecture = reg_val_data_string(tctx, 
lp_iconv_convenience(tctx->lp_ctx), REG_SZ, blob);
+
+       return true;
+}
+
 static bool test_GetPrinterData_list(struct torture_context *tctx,
                                     struct dcerpc_pipe *p,
                                     struct policy_handle *handle,
@@ -3956,7 +3978,7 @@ static bool test_GetPrinterInfo_winreg(struct 
torture_context *tctx,
        printername = strip_unc(info.info2.printername);
        sharename = strip_unc(info.info2.sharename);
 
-#define test_sz(key, wname, iname) \
+#define test_sz(wname, iname) \
 do {\
        DATA_BLOB blob;\
        const char *str;\
@@ -3979,7 +4001,7 @@ do {\
        }\
 } while(0);
 
-#define test_dword(key, wname, iname) \
+#define test_dword(wname, iname) \
 do {\
        uint32_t value;\
        enum winreg_Type w_type;\
@@ -3998,7 +4020,7 @@ do {\
                talloc_asprintf(tctx, "%s - %s mismatch", #wname, #iname));\
 } while(0);
 
-#define test_dm(key, wname, iname) \
+#define test_dm(wname, iname) \
 do {\
        DATA_BLOB blob;\
        struct spoolss_DeviceMode dm;\
@@ -4020,7 +4042,7 @@ do {\
                "dm unequal");\
 } while(0);
 
-#define test_sd(key, wname, iname) \
+#define test_sd(wname, iname) \
 do {\
        DATA_BLOB blob;\
        struct security_descriptor sd;\
@@ -4062,27 +4084,27 @@ do {\
                torture_assert(tctx,
                        test_winreg_OpenKey(tctx, winreg_handle, hive_handle, 
printer_key, &key_handle), "");
 
-               test_sz(keys[i], "Name", printername);
-               test_sz(keys[i], "Share Name", sharename);
-               test_sz(keys[i], "Port", info.info2.portname);
-               test_sz(keys[i], "Printer Driver", info.info2.drivername);
-               test_sz(keys[i], "Description", info.info2.comment);
-               test_sz(keys[i], "Location", info.info2.location);
-               test_sz(keys[i], "Separator File", info.info2.sepfile);
-               test_sz(keys[i], "Print Processor", info.info2.printprocessor);
-               test_sz(keys[i], "Datatype", info.info2.datatype);
-               test_sz(keys[i], "Parameters", info.info2.parameters);
+               test_sz("Name", printername);
+               test_sz("Share Name", sharename);
+               test_sz("Port", info.info2.portname);
+               test_sz("Printer Driver", info.info2.drivername);
+               test_sz("Description", info.info2.comment);
+               test_sz("Location", info.info2.location);
+               test_sz("Separator File", info.info2.sepfile);
+               test_sz("Print Processor", info.info2.printprocessor);
+               test_sz("Datatype", info.info2.datatype);
+               test_sz("Parameters", info.info2.parameters);
                /* winreg: 0, spoolss not */
-/*             test_dword(keys[i], "Attributes", info.info2.attributes); */
-               test_dword(keys[i], "Priority", info.info2.priority);
-               test_dword(keys[i], "Default Priority", 
info.info2.defaultpriority);
+/*             test_dword("Attributes", info.info2.attributes); */
+               test_dword("Priority", info.info2.priority);
+               test_dword("Default Priority", info.info2.defaultpriority);
                /* winreg: 60, spoolss: 0 */
-/*             test_dword(keys[i], "StartTime", info.info2.starttime); */
-/*             test_dword(keys[i], "UntilTime", info.info2.untiltime); */
+/*             test_dword("StartTime", info.info2.starttime); */
+/*             test_dword("UntilTime", info.info2.untiltime); */
                /* winreg != spoolss */
-/*             test_dword(keys[i], "Status", info.info2.status); */
-               test_dm(keys[i], "Default DevMode", info.info2.devmode);
-               test_sd(keys[i], "Security", info.info2.secdesc);
+/*             test_dword("Status", info.info2.status); */
+               test_dm("Default DevMode", info.info2.devmode);
+               test_sd("Security", info.info2.secdesc);
 
                torture_assert(tctx,
                        test_winreg_CloseKey(tctx, winreg_handle, &key_handle), 
"");
@@ -5158,60 +5180,88 @@ static bool test_GetPrinterDriver(struct 
torture_context *tctx,
        return true;
 }
 
-static bool test_GetPrinterDriver2(struct torture_context *tctx,
-                                  struct dcerpc_binding_handle *b,
-                                  struct policy_handle *handle,
-                                  const char *driver_name,
-                                  const char *architecture)
+static bool test_GetPrinterDriver2_level(struct torture_context *tctx,
+                                        struct dcerpc_binding_handle *b,
+                                        struct policy_handle *handle,
+                                        const char *driver_name,
+                                        const char *architecture,
+                                        uint32_t level,
+                                        uint32_t client_major_version,
+                                        uint32_t client_minor_version,
+                                        union spoolss_DriverInfo *info_p)
+
 {
        struct spoolss_GetPrinterDriver2 r;
-       uint16_t levels[] = {1, 2, 3, 4, 5, 6, 8, 101 };
        uint32_t needed;
        uint32_t server_major_version;
        uint32_t server_minor_version;
-       int i;
 
        r.in.handle = handle;
        r.in.architecture = architecture;
-       r.in.client_major_version = 3;
-       r.in.client_minor_version = 0;
+       r.in.client_major_version = client_major_version;
+       r.in.client_minor_version = client_minor_version;
+       r.in.buffer = NULL;
+       r.in.offered = 0;
+       r.in.level = level;
        r.out.needed = &needed;
        r.out.server_major_version = &server_major_version;
        r.out.server_minor_version = &server_minor_version;
 
-       for (i=0;i<ARRAY_SIZE(levels);i++) {
-
-               r.in.buffer = NULL;
-               r.in.offered = 0;
-               r.in.level = levels[i];
+       torture_comment(tctx, "Testing GetPrinterDriver2(%s) level %d\n",
+               driver_name, r.in.level);
 
-               torture_comment(tctx, "Testing GetPrinterDriver2(%s) level 
%d\n",
-                       driver_name, r.in.level);
-
-               torture_assert_ntstatus_ok(tctx, 
dcerpc_spoolss_GetPrinterDriver2_r(b, tctx, &r),
+       torture_assert_ntstatus_ok(tctx,
+               dcerpc_spoolss_GetPrinterDriver2_r(b, tctx, &r),
+               "failed to call GetPrinterDriver2");
+       if (W_ERROR_EQUAL(r.out.result, WERR_INSUFFICIENT_BUFFER)) {
+               DATA_BLOB blob = data_blob_talloc_zero(tctx, needed);
+               r.in.buffer = &blob;
+               r.in.offered = needed;
+               torture_assert_ntstatus_ok(tctx,
+                       dcerpc_spoolss_GetPrinterDriver2_r(b, tctx, &r),
                        "failed to call GetPrinterDriver2");
-               if (W_ERROR_EQUAL(r.out.result, WERR_INSUFFICIENT_BUFFER)) {
-                       DATA_BLOB blob = data_blob_talloc_zero(tctx, needed);
-                       r.in.buffer = &blob;
-                       r.in.offered = needed;
-                       torture_assert_ntstatus_ok(tctx, 
dcerpc_spoolss_GetPrinterDriver2_r(b, tctx, &r),
-                               "failed to call GetPrinterDriver2");
-               }
+       }
 
-               if (W_ERROR_EQUAL(r.out.result, WERR_INVALID_LEVEL)) {
-                       switch (r.in.level) {
-                       case 101:
-                       case 8:
-                               continue;
-                       default:
-                               break;
-                       }
+       if (W_ERROR_EQUAL(r.out.result, WERR_INVALID_LEVEL)) {
+               switch (r.in.level) {
+               case 101:
+               case 8:
+                       torture_comment(tctx,
+                               "level %d not implemented, not considering as 
an error\n",
+                               r.in.level);
+                       return true;
+               default:
+                       break;
                }
+       }
 
-               torture_assert_werr_ok(tctx, r.out.result,
-                       "failed to call GetPrinterDriver2");
+       torture_assert_werr_ok(tctx, r.out.result,
+               "failed to call GetPrinterDriver2");
+
+       CHECK_NEEDED_SIZE_LEVEL(spoolss_DriverInfo, r.out.info, r.in.level, 
lp_iconv_convenience(tctx->lp_ctx), needed, 4);
+
+       if (info_p) {
+               *info_p = *r.out.info;
+       }
+
+       return true;
+}
+
+static bool test_GetPrinterDriver2(struct torture_context *tctx,
+                                  struct dcerpc_binding_handle *b,
+                                  struct policy_handle *handle,
+                                  const char *driver_name,
+                                  const char *architecture)
+{
+       uint16_t levels[] = {1, 2, 3, 4, 5, 6, 8, 101 };
+       int i;
 
-               CHECK_NEEDED_SIZE_LEVEL(spoolss_DriverInfo, r.out.info, 
r.in.level, lp_iconv_convenience(tctx->lp_ctx), needed, 4);
+
+       for (i=0;i<ARRAY_SIZE(levels);i++) {
+
+               torture_assert(tctx,
+                       test_GetPrinterDriver2_level(tctx, b, handle, 
driver_name, architecture, levels[i], 3, 0, NULL),
+                       "");
        }
 
        return true;


-- 
Samba Shared Repository

Reply via email to