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/scripting | |
| 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/scripting')
| -rwxr-xr-x | source4/scripting/python/samba/tests/dcerpc/rpc_talloc.py | 56 | 
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)  | 
