summaryrefslogtreecommitdiff
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
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
-rwxr-xr-xsource4/scripting/python/samba/tests/dcerpc/rpc_talloc.py56
-rwxr-xr-xsource4/selftest/tests.sh1
2 files changed, 57 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)
diff --git a/source4/selftest/tests.sh b/source4/selftest/tests.sh
index a649b5409e..917f572036 100755
--- a/source4/selftest/tests.sh
+++ b/source4/selftest/tests.sh
@@ -523,6 +523,7 @@ plantestsuite "blackbox.setpassword.py" none PYTHON="$PYTHON" $samba4srcdir/setu
plantestsuite "blackbox.newuser.py" none PYTHON="$PYTHON" $samba4srcdir/setup/tests/blackbox_newuser.sh "$PREFIX/provision"
plantestsuite "blackbox.group.py" none PYTHON="$PYTHON" $samba4srcdir/setup/tests/blackbox_group.sh "$PREFIX/provision"
plantestsuite "blackbox.spn.py" dc:local PYTHON="$PYTHON" $samba4srcdir/setup/tests/blackbox_spn.sh "$PREFIX/dc"
+plantestsuite "blackbox.rpc_talloc.py" dc:local $PYTHON $samba4srcdir/scripting/python/samba/tests/dcerpc/rpc_talloc.py
# DRS python tests
plantestsuite "drs_delete_object.python" vampire_dc PYTHONPATH="$PYTHONPATH:$samba4srcdir/torture/drs/python" DC1=\$DC_SERVER DC2=\$VAMPIRE_DC_SERVER $SUBUNITRUN delete_object -U"\$DOMAIN/\$DC_USERNAME"%"\$DC_PASSWORD"