From e69b13ccdd008c792f8856a121b188cb11a9afa8 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Wed, 25 Aug 2010 15:21:36 +1000 Subject: s4-pyrpc: added a test for talloc behaviour in pidl python code --- .../python/samba/tests/dcerpc/rpc_talloc.py | 56 ++++++++++++++++++++++ source4/selftest/tests.sh | 1 + 2 files changed, 57 insertions(+) create mode 100755 source4/scripting/python/samba/tests/dcerpc/rpc_talloc.py (limited to 'source4') 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" -- cgit