[SCM] Samba Shared Repository - branch master updated
Kamen Mazdrashki
kamenim at samba.org
Tue Nov 23 10:45:01 MST 2010
The branch, master has been updated
via 58f6a37 s4-test/repl_schema: Refactor the test a little bit to
via 1b58074 s4-tests: Make all DRS python tests to start with samba4.drs.* prefix
via 9e24db1 s4-pfm_verify: Explicitly pass LoadParm() instance to system_session() function
from ff82220 s4-tests: Modified sec_descriptor.py to use samdb.newuser instead of custom methods.
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit 58f6a37f645c8c025923aa38cd9445ae2e0d8d0e
Author: Kamen Mazdrashki <kamenim at samba.org>
Date: Tue Nov 23 17:15:21 2010 +0200
s4-test/repl_schema: Refactor the test a little bit to
- Cleanup imports
- make sure we have testtools and subunit imported
- use dictionaries instead of LDIFs for schema modification
so now callers for _make_class can easily add new attributes
for created class
- simplify a little bit classSchema creation
- test attributeSchema replication
Autobuild-User: Kamen Mazdrashki <kamenim at samba.org>
Autobuild-Date: Tue Nov 23 18:44:46 CET 2010 on sn-devel-104
commit 1b5807455783653ca5dd1ae715f9cef455545407
Author: Kamen Mazdrashki <kamenim at samba.org>
Date: Wed Nov 10 06:15:19 2010 +0200
s4-tests: Make all DRS python tests to start with samba4.drs.* prefix
commit 9e24db1f2b8ba0cbef0ac9bda587a754ee2ab254
Author: Kamen Mazdrashki <kamenim at samba.org>
Date: Tue Nov 23 17:19:29 2010 +0200
s4-pfm_verify: Explicitly pass LoadParm() instance to system_session() function
Otherwise system_session() creates a LoadParm() instance
wich resets certain params to their defaults from smb.conf
("log level" for instance)
-----------------------------------------------------------------------
Summary of changes:
source4/scripting/devel/pfm_verify.py | 2 +-
source4/selftest/tests.py | 6 +-
source4/torture/drs/python/repl_schema.py | 90 +++++++++++++++++++----------
3 files changed, 63 insertions(+), 35 deletions(-)
Changeset truncated at 500 lines:
diff --git a/source4/scripting/devel/pfm_verify.py b/source4/scripting/devel/pfm_verify.py
index 2f7be2b..a7314d9 100755
--- a/source4/scripting/devel/pfm_verify.py
+++ b/source4/scripting/devel/pfm_verify.py
@@ -134,7 +134,7 @@ if __name__ == "__main__":
server = args[0]
samdb = SamDB(url="ldap://%s" % server,
- session_info=system_session(),
+ session_info=system_session(lp),
credentials=creds, lp=lp)
drs_pfm = _drs_fetch_pfm(server, samdb, creds, lp)
diff --git a/source4/selftest/tests.py b/source4/selftest/tests.py
index 1d1d517..bd743d2 100755
--- a/source4/selftest/tests.py
+++ b/source4/selftest/tests.py
@@ -512,9 +512,9 @@ plantestsuite("samba4.blackbox.spn.py(dc:local)", "dc:local", ["PYTHON=%s" % pyt
plantestsuite("samba4.ldap.bind(dc)", "dc", [python, os.path.join(samba4srcdir, "auth/credentials/tests/bind.py"), '$SERVER', '-U"$USERNAME%$PASSWORD"'])
# DRS python tests
-plantestsuite("samba4.drs_delete_object.python(vampire_dc)", "vampire_dc", ['PYTHONPATH="$PYTHONPATH:%s"' % os.path.join(samba4srcdir, 'torture/drs/python'), 'DC1=$DC_SERVER', 'DC2=$VAMPIRE_DC_SERVER', subunitrun, 'delete_object', '-U$DOMAIN/$DC_USERNAME%$DC_PASSWORD'])
-plantestsuite("samba4.drs_fsmo.python(vampire_dc)", "vampire_dc", ['PYTHONPATH="$PYTHONPATH:%s"' % os.path.join(samba4srcdir, 'torture/drs/python'), 'DC1=$DC_SERVER', 'DC2=$VAMPIRE_DC_SERVER', subunitrun, 'fsmo', '-U$DOMAIN/$DC_USERNAME%$DC_PASSWORD'])
-plantestsuite("samba4.drs_repl_schema.python(vampire_dc)", "vampire_dc", ['PYTHONPATH="$PYTHONPATH:%s"' % os.path.join(samba4srcdir, 'torture/drs/python'), 'DC1=$DC_SERVER', 'DC2=$VAMPIRE_DC_SERVER', subunitrun, 'repl_schema', '-U$DOMAIN/$DC_USERNAME%$DC_PASSWORD'])
+plantestsuite("samba4.drs.delete_object.python(vampire_dc)", "vampire_dc", ['PYTHONPATH="$PYTHONPATH:%s"' % os.path.join(samba4srcdir, 'torture/drs/python'), 'DC1=$DC_SERVER', 'DC2=$VAMPIRE_DC_SERVER', subunitrun, 'delete_object', '-U$DOMAIN/$DC_USERNAME%$DC_PASSWORD'])
+plantestsuite("samba4.drs.fsmo.python(vampire_dc)", "vampire_dc", ['PYTHONPATH="$PYTHONPATH:%s"' % os.path.join(samba4srcdir, 'torture/drs/python'), 'DC1=$DC_SERVER', 'DC2=$VAMPIRE_DC_SERVER', subunitrun, 'fsmo', '-U$DOMAIN/$DC_USERNAME%$DC_PASSWORD'])
+plantestsuite("samba4.drs.repl_schema.python(vampire_dc)", "vampire_dc", ['PYTHONPATH="$PYTHONPATH:%s"' % os.path.join(samba4srcdir, 'torture/drs/python'), 'DC1=$DC_SERVER', 'DC2=$VAMPIRE_DC_SERVER', subunitrun, 'repl_schema', '-U$DOMAIN/$DC_USERNAME%$DC_PASSWORD'])
# This makes sure we test the rid allocation code
t = "RPC-SAMR-LARGE-DC"
diff --git a/source4/torture/drs/python/repl_schema.py b/source4/torture/drs/python/repl_schema.py
index 4016ed2..16f00ac 100644
--- a/source4/torture/drs/python/repl_schema.py
+++ b/source4/torture/drs/python/repl_schema.py
@@ -33,11 +33,14 @@ import random
import os
sys.path.append("bin/python")
+import samba
+samba.ensure_external_module("testtools", "testtools")
+samba.ensure_external_module("subunit", "subunit/python")
-from samba.auth import system_session
from ldb import LdbError, ERR_NO_SUCH_OBJECT
-from ldb import SCOPE_BASE, SCOPE_SUBTREE
-from samba.samdb import SamDB
+from ldb import SCOPE_BASE
+from ldb import Message
+from ldb import FLAG_MOD_REPLACE
import samba.tests
@@ -96,34 +99,57 @@ class DrsReplSchemaTestCase(samba.tests.TestCase):
return self.ldb_dc1.schema_format_value("objectGUID", guid)
def _ldap_schemaUpdateNow(self, sam_db):
- ldif = """
-dn:
-changetype: modify
-add: schemaUpdateNow
-schemaUpdateNow: 1
-"""
- sam_db.modify_ldif(ldif)
+ rec = {"dn": "",
+ "schemaUpdateNow": "1"}
+ m = Message.from_dict(sam_db, rec, FLAG_MOD_REPLACE)
+ sam_db.modify(m)
def _make_obj_names(self, base_name):
'''Try to create a unique name for an object
that is to be added to schema'''
obj_name = self.obj_prefix + base_name
+ obj_ldn = obj_name.replace("-", "")
obj_dn = "CN=%s,%s" % (obj_name, self.schema_dn)
- return (obj_name, obj_dn)
-
- def _make_class_ldif(self, class_name, class_dn, attrs=None):
- ldif = """
-dn: """ + class_dn + """
-objectClass: top
-objectClass: classSchema
-cn: """ + class_name + """
-governsId: 1.2.840.""" + str(random.randint(1,100000)) + """.1.5.13
-instanceType: 4
-objectClassCategory: 1
-subClassOf: organizationalPerson
-systemOnly: FALSE
-"""
- return ldif
+ return (obj_dn, obj_name, obj_ldn)
+
+ def _schema_new_class(self, ldb_ctx, base_name, attrs=None):
+ (class_dn, class_name, class_ldn) = self._make_obj_names(base_name)
+ rec = {"dn": class_dn,
+ "objectClass": ["top", "classSchema"],
+ "cn": class_name,
+ "lDAPDisplayName": class_ldn,
+ "governsId": "1.2.840." + str(random.randint(1,100000)) + ".1.5.13",
+ "instanceType": "4",
+ "objectClassCategory": "1",
+ "subClassOf": "organizationalPerson",
+ "systemOnly": "FALSE"}
+ # allow overriding/adding attributes
+ if not attrs is None:
+ rec.update(attrs)
+ # add it to the Schema
+ ldb_ctx.add(rec)
+ self._ldap_schemaUpdateNow(ldb_ctx)
+ return (rec["lDAPDisplayName"], rec["dn"])
+
+ def _schema_new_attr(self, ldb_ctx, base_name, attrs=None):
+ (attr_dn, attr_name, attr_ldn) = self._make_obj_names(base_name)
+ rec = {"dn": attr_dn,
+ "objectClass": ["top", "attributeSchema"],
+ "cn": attr_name,
+ "lDAPDisplayName": attr_ldn,
+ "attributeId": "1.2.841." + str(random.randint(1,100000)) + ".1.5.13",
+ "attributeSyntax": "2.5.5.12",
+ "omSyntax": "64",
+ "instanceType": "4",
+ "isSingleValued": "TRUE",
+ "systemOnly": "FALSE"}
+ # allow overriding/adding attributes
+ if not attrs is None:
+ rec.update(attrs)
+ # add it to the Schema
+ ldb_ctx.add(rec)
+ self._ldap_schemaUpdateNow(ldb_ctx)
+ return (rec["lDAPDisplayName"], rec["dn"])
def _check_object(self, obj_dn):
'''Check if object obj_dn exists on both DCs'''
@@ -146,12 +172,14 @@ systemOnly: FALSE
and attributeSchema objects, replicate Schema NC
and then check all objects are replicated correctly"""
+ # add new attributeSchema object
+ (a_ldn, a_dn) = self._schema_new_attr(self.ldb_dc1, "attr-A")
# add new classSchema object
- (class_name, class_dn) = self._make_obj_names("cls-A")
- ldif = self._make_class_ldif(class_name, class_dn)
- self.ldb_dc1.add_ldif(ldif)
- self._ldap_schemaUpdateNow(self.ldb_dc1)
+ (c_ldn, c_dn) = self._schema_new_class(self.ldb_dc1, "cls-A")
+
# force replication from DC1 to DC2
self._net_drs_replicate(DC=self.dnsname_dc2, fromDC=self.dnsname_dc1, nc_dn=self.schema_dn)
- # check object is replicated
- self._check_object(class_dn)
+
+ # check objects are replicated
+ self._check_object(c_dn)
+ self._check_object(a_dn)
--
Samba Shared Repository
More information about the samba-cvs
mailing list