diff options
author | Andrew Tridgell <tridge@samba.org> | 2010-08-25 15:21:36 +1000 |
---|---|---|
committer | Andrew Tridgell <tridge@samba.org> | 2010-08-25 23:05:05 +1000 |
commit | e69b13ccdd008c792f8856a121b188cb11a9afa8 (patch) | |
tree | 13068dda9e52510ce45f1afed9213650ab145b0f /source4 | |
parent | 717ee453dd72511bab2b7fc0e9712e67e5870421 (diff) | |
download | samba-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')
-rwxr-xr-x | source4/scripting/python/samba/tests/dcerpc/rpc_talloc.py | 56 | ||||
-rwxr-xr-x | source4/selftest/tests.sh | 1 |
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" |