svn commit: samba r3311 - in branches/SAMBA_4_0/source: librpc/idl scripting/swig/torture

tpot at samba.org tpot at samba.org
Thu Oct 28 06:17:38 GMT 2004


Author: tpot
Date: 2004-10-28 06:17:38 +0000 (Thu, 28 Oct 2004)
New Revision: 3311

WebSVN: http://websvn.samba.org/websvn/changeset.php?rep=samba&path=/branches/SAMBA_4_0/source&rev=3311&nolog=1

Log:
Consistency updates for form name members.

Add tests for EnumForms, GetForm, AddForm, DeleteForm.

Modified:
   branches/SAMBA_4_0/source/librpc/idl/spoolss.idl
   branches/SAMBA_4_0/source/scripting/swig/torture/spoolss.py


Changeset:
Modified: branches/SAMBA_4_0/source/librpc/idl/spoolss.idl
===================================================================
--- branches/SAMBA_4_0/source/librpc/idl/spoolss.idl	2004-10-28 06:16:32 UTC (rev 3310)
+++ branches/SAMBA_4_0/source/librpc/idl/spoolss.idl	2004-10-28 06:17:38 UTC (rev 3311)
@@ -101,7 +101,7 @@
 
 	typedef struct {
 		uint32 flags;
-		[relative] nstring *name;
+		[relative] nstring *formname;
 		uint32 width;
 		uint32 length;
 		uint32 left;
@@ -444,7 +444,7 @@
 
 	typedef struct {
 		uint32 flags;
-		[relative] unistr *name;
+		[relative] unistr *formname;
 		uint32 width;
 		uint32 length;
 		uint32 left;

Modified: branches/SAMBA_4_0/source/scripting/swig/torture/spoolss.py
===================================================================
--- branches/SAMBA_4_0/source/scripting/swig/torture/spoolss.py	2004-10-28 06:16:32 UTC (rev 3310)
+++ branches/SAMBA_4_0/source/scripting/swig/torture/spoolss.py	2004-10-28 06:17:38 UTC (rev 3311)
@@ -1,6 +1,23 @@
-import string
+import sys, string
 import dcerpc
 
+
+def ResizeBufferCall(fn, pipe, r):
+
+    r['buffer'] = None
+    r['buf_size'] = 0
+    
+    result = fn(pipe, r)
+
+    if result['result'] == dcerpc.WERR_INSUFFICIENT_BUFFER:
+        r['buffer'] = result['buf_size'] * '\x00'
+        r['buf_size'] = result['buf_size']
+
+    result = fn(pipe, r)
+
+    return result
+
+
 def test_OpenPrinterEx(pipe, printer):
 
     print 'testing spoolss_OpenPrinterEx(%s)' % printer
@@ -50,16 +67,9 @@
         r['buffer'] = None
         r['buf_size'] = 0
 
-        result = dcerpc.spoolss_GetPrinter(pipe, r)
+        result = ResizeBufferCall(dcerpc.spoolss_GetPrinter, pipe, r)
 
-        if result['result'] == dcerpc.WERR_INSUFFICIENT_BUFFER:
-            r['buffer'] = result['buf_size'] * '\x00'
-            r['buf_size'] = result['buf_size']
 
-            result = dcerpc.spoolss_GetPrinter(pipe, r)
-
-            print result
-
 def test_EnumForms(pipe, handle):
 
     print 'testing spoolss_EnumForms'
@@ -70,17 +80,21 @@
     r['buffer'] = None
     r['buf_size'] = 0
 
-    result = dcerpc.spoolss_EnumForms(pipe, r)
+    result = ResizeBufferCall(dcerpc.spoolss_EnumForms, pipe, r)
 
-    if result['result'] == dcerpc.WERR_INSUFFICIENT_BUFFER:
-        r['buffer'] = result['buf_size'] * '\x00'
-        r['buf_size'] = result['buf_size']
+    forms = dcerpc.unmarshall_spoolss_FormInfo_array(
+        result['buffer'], r['level'], result['count'])
 
-        result = dcerpc.spoolss_EnumForms(pipe, r)
+    for form in forms:
 
-    print result
-           
+        r = {}
+        r['handle'] = handle
+        r['formname'] = form['info1']['formname']
+        r['level'] = 1
 
+        result = ResizeBufferCall(dcerpc.spoolss_GetForm, pipe, r)
+
+
 def test_EnumPorts(pipe, handle):
 
     print 'testing spoolss_EnumPorts'
@@ -91,17 +105,69 @@
     r['buffer'] = None
     r['buf_size'] = 0
 
-    result = dcerpc.spoolss_EnumPorts(pipe, r)
+    result = ResizeBufferCall(dcerpc.spoolss_EnumPorts, pipe, r)
 
-    if result['result'] == dcerpc.WERR_INSUFFICIENT_BUFFER:
-        r['buffer'] = result['buf_size'] * '\x00'
-        r['buf_size'] = result['buf_size']
 
-        result = dcerpc.spoolss_EnumPorts(pipe, r)
+def test_DeleteForm(pipe, handle, formname):
 
-    print result
-           
+    r = {}
+    r['handle'] = handle
+    r['formname'] = formname
 
+    dcerpc.spoolss_DeleteForm(pipe, r)
+
+
+def test_GetForm(pipe, handle, formname):
+
+    r = {}
+    r['handle'] = handle
+    r['formname'] = formname
+    r['level'] = 1
+
+    result = ResizeBufferCall(dcerpc.spoolss_GetForm, pipe, r)
+
+    return result['info']['info1']
+    
+
+def test_AddForm(pipe, handle):
+
+    print 'testing spoolss_AddForm'
+
+    formname = '__testform__'
+
+    r = {}
+    r['handle'] = handle
+    r['level'] = 1
+    r['info'] = {}
+    r['info']['info1'] = {}
+    r['info']['info1']['formname'] = formname
+    r['info']['info1']['flags'] = 0
+    r['info']['info1']['width'] = 1
+    r['info']['info1']['length'] = 2
+    r['info']['info1']['left'] = 3
+    r['info']['info1']['top'] = 4
+    r['info']['info1']['right'] = 5
+    r['info']['info1']['bottom'] = 6
+
+    try:
+        result = dcerpc.spoolss_AddForm(pipe, r)
+    except dcerpc.WERROR, arg:
+        if arg[0] == dcerpc.WERR_ALREADY_EXISTS:
+            test_DeleteForm(pipe, handle, formname)
+        result = dcerpc.spoolss_AddForm(pipe, r)
+
+    f = test_GetForm(pipe, handle, formname)
+
+    if r['info']['info1'] != f:
+        print 'Form type mismatch: %s != %s' % \
+              (r['info']['info1'], f)
+        sys.exit(1)
+
+    # TODO: test spoolss_SetForm()
+
+    test_DeleteForm(pipe, handle, formname)
+
+
 def test_EnumPrinters(pipe):
 
     print 'testing spoolss_EnumPrinters'
@@ -120,20 +186,11 @@
         r['buf_size'] = 0
         r['buffer'] = None
 
-        result = dcerpc.spoolss_EnumPrinters(pipe, r)
+        result = ResizeBufferCall(dcerpc.spoolss_EnumPrinters,pipe, r)
 
-        if result['result'] == dcerpc.WERR_INSUFFICIENT_BUFFER:
-            r['buffer'] = result['buf_size'] * '\x00'
-            r['buf_size'] = result['buf_size']
-
-            result = dcerpc.spoolss_EnumPrinters(pipe, r)
-
         printers = dcerpc.unmarshall_spoolss_PrinterInfo_array(
             result['buffer'], r['level'], result['count'])
 
-        from pprint import pprint
-        pprint(printers)
-
         if level == 1:
             printer_names = map(
                 lambda x: string.split(x['info1']['name'], ',')[0], printers)
@@ -144,6 +201,10 @@
 
         test_GetPrinter(pipe, handle)
 
+        test_EnumForms(pipe, handle)
+
+        test_AddForm(pipe, handle)
+
         test_ClosePrinter(pipe, handle)
         
 



More information about the samba-cvs mailing list