summaryrefslogtreecommitdiff
path: root/source4/scripting/python
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2010-08-25 15:21:36 +1000
committerAndrew Tridgell <tridge@samba.org>2010-08-25 23:05:05 +1000
commite69b13ccdd008c792f8856a121b188cb11a9afa8 (patch)
tree13068dda9e52510ce45f1afed9213650ab145b0f /source4/scripting/python
parent717ee453dd72511bab2b7fc0e9712e67e5870421 (diff)
downloadsamba-e69b13ccdd008c792f8856a121b188cb11a9afa8.tar.gz
samba-e69b13ccdd008c792f8856a121b188cb11a9afa8.tar.bz2
samba-e69b13ccdd008c792f8856a121b188cb11a9afa8.zip
s4-pyrpc: added a test for talloc behaviour in pidl python code
Diffstat (limited to 'source4/scripting/python')
-rwxr-xr-xsource4/scripting/python/samba/tests/dcerpc/rpc_talloc.py56
1 files changed, 56 insertions, 0 deletions
diff --git a/source4/scripting/python/samba/tests/dcerpc/rpc_talloc.py b/source4/scripting/python/samba/tests/dcerpc/rpc_talloc.py
new file mode 100755
index 0000000000..7a1ddb50f1
--- /dev/null
+++ b/source4/scripting/python/samba/tests/dcerpc/rpc_talloc.py
@@ -0,0 +1,56 @@
+#!/usr/bin/env python
+# test generated python code from pidl
+
+import sys
+
+sys.path.insert(0, "bin/python")
+
+import samba
+from samba.dcerpc import drsuapi
+
+samba.talloc_enable_null_tracking()
+initial_blocks = samba.talloc_total_blocks(None)
+
+def check_blocks(object, num_expected):
+ nblocks = samba.talloc_total_blocks(object)
+ if object is None:
+ nblocks -= initial_blocks
+ if nblocks != num_expected:
+ raise Exception("Expected %u blocks in %s - got %u" % (num_expected, str(object), nblocks))
+
+check_blocks(None, 0)
+
+def get_rodc_partial_attribute_set():
+ '''get a list of attributes for RODC replication'''
+ partial_attribute_set = drsuapi.DsPartialAttributeSet()
+
+ # we expect one block for the object, and one for the structure
+ check_blocks(partial_attribute_set, 2)
+
+ attids = [ 1, 2, 3]
+ partial_attribute_set.version = 1
+ partial_attribute_set.attids = attids
+ partial_attribute_set.num_attids = len(attids)
+
+ # we expect one block object, a structure, an ARRAY, and a reference to the array
+ check_blocks(partial_attribute_set, 4)
+
+ return partial_attribute_set
+
+def test_fun():
+ pas = get_rodc_partial_attribute_set()
+ check_blocks(pas, 4)
+ req8 = drsuapi.DsGetNCChangesRequest8()
+ check_blocks(req8, 2)
+ check_blocks(None, 6)
+ req8.partial_attribute_set = pas
+ if req8.partial_attribute_set.attids[1] != 2:
+ raise Exception("Wrong value in attids[2]")
+ # we now get an additional reference
+ samba.talloc_report_full(None)
+ check_blocks(None, 7)
+
+test_fun()
+check_blocks(None, 0)
+print "All OK"
+sys.exit(0)