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