diff options
Diffstat (limited to 'source4')
-rwxr-xr-x | source4/scripting/python/samba/tests/dcerpc/rpc_talloc.py | 104 | ||||
-rwxr-xr-x | source4/selftest/tests.sh | 2 |
2 files changed, 60 insertions, 46 deletions
diff --git a/source4/scripting/python/samba/tests/dcerpc/rpc_talloc.py b/source4/scripting/python/samba/tests/dcerpc/rpc_talloc.py index 7a1ddb50f1..6dd3d07e84 100755 --- a/source4/scripting/python/samba/tests/dcerpc/rpc_talloc.py +++ b/source4/scripting/python/samba/tests/dcerpc/rpc_talloc.py @@ -1,56 +1,70 @@ #!/usr/bin/env python # test generated python code from pidl +# Andrew Tridgell August 2010 +# +# to run this test, use one of these: +# +# python -m testtools.run samba.tests.dcerpc.rpc_talloc +# +# or if you have trial installed (from twisted), use +# +# trial samba.tests.dcerpc.rpc_talloc import sys sys.path.insert(0, "bin/python") import samba +import samba.tests 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) + +class TallocTests(samba.tests.TestCase): + '''test talloc behaviour of pidl generated python code''' + + + def check_blocks(self, object, num_expected): + '''check that the number of allocated blocks is correct''' + nblocks = samba.talloc_total_blocks(object) + if object is None: + nblocks -= self.initial_blocks + self.assertEquals(nblocks, num_expected) + + + def get_rodc_partial_attribute_set(self): + '''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 + self.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 + self.check_blocks(partial_attribute_set, 4) + + return partial_attribute_set + + def pas_test(self): + pas = self.get_rodc_partial_attribute_set() + self.check_blocks(pas, 4) + req8 = drsuapi.DsGetNCChangesRequest8() + self.check_blocks(req8, 2) + self.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) + self.check_blocks(None, 7) + + def test_run(self): + self.initial_blocks = samba.talloc_total_blocks(None) + self.check_blocks(None, 0) + self.pas_test() + self.check_blocks(None, 0) diff --git a/source4/selftest/tests.sh b/source4/selftest/tests.sh index 917f572036..0341d3ef70 100755 --- a/source4/selftest/tests.sh +++ b/source4/selftest/tests.sh @@ -488,6 +488,7 @@ plantestsuite "dsdb.python" dc:local $SUBUNITRUN samba.tests.dsdb plantestsuite "netcmd.python" none $SUBUNITRUN samba.tests.netcmd plantestsuite "dcerpc.bare.python" dc:local $SUBUNITRUN samba.tests.dcerpc.bare plantestsuite "unixinfo.python" dc:local $SUBUNITRUN samba.tests.dcerpc.unix +plantestsuite "rpc_talloc.python" none $SUBUNITRUN samba.tests.dcerpc.rpc_talloc plantestsuite "samdb.python" none $SUBUNITRUN samba.tests.samdb plantestsuite "shares.python" none $SUBUNITRUN samba.tests.shares plantestsuite "messaging.python" none PYTHONPATH="$PYTHONPATH:$samba4srcdir/lib/messaging/tests" $SUBUNITRUN bindings @@ -523,7 +524,6 @@ 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" |