svn commit: samba r26527 - in branches/SAMBA_4_0: . source/scripting/python/samba source/scripting/python/samba/tests source/selftest

jelmer at samba.org jelmer at samba.org
Tue Dec 18 18:54:19 GMT 2007


Author: jelmer
Date: 2007-12-18 18:54:19 +0000 (Tue, 18 Dec 2007)
New Revision: 26527

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=26527

Log:
Start on tests for provision.
Added:
   branches/SAMBA_4_0/source/scripting/python/samba/tests/provision.py
Modified:
   branches/SAMBA_4_0/
   branches/SAMBA_4_0/source/scripting/python/samba/__init__.py
   branches/SAMBA_4_0/source/scripting/python/samba/provision.py
   branches/SAMBA_4_0/source/scripting/python/samba/tests/__init__.py
   branches/SAMBA_4_0/source/selftest/samba4_tests.sh


Changeset:

Property changes on: branches/SAMBA_4_0
___________________________________________________________________
Name: bzr:revision-info
...skipped...
Name: bzr:file-ids
...skipped...
Name: bzr:revision-id:v3-trunk0
...skipped...

Modified: branches/SAMBA_4_0/source/scripting/python/samba/__init__.py
===================================================================
--- branches/SAMBA_4_0/source/scripting/python/samba/__init__.py	2007-12-18 17:29:08 UTC (rev 26526)
+++ branches/SAMBA_4_0/source/scripting/python/samba/__init__.py	2007-12-18 18:54:19 UTC (rev 26527)
@@ -129,8 +129,6 @@
         assert isinstance(value, str), "Value %r for %s is not a string" % (value, name)
         text = text.replace("${%s}" % name, value)
 
-    assert "${" not in text, text
-
     return text
 
 

Modified: branches/SAMBA_4_0/source/scripting/python/samba/provision.py
===================================================================
--- branches/SAMBA_4_0/source/scripting/python/samba/provision.py	2007-12-18 17:29:08 UTC (rev 26526)
+++ branches/SAMBA_4_0/source/scripting/python/samba/provision.py	2007-12-18 18:54:19 UTC (rev 26527)
@@ -135,18 +135,6 @@
     return gethostname().split(".")[0]
 
 
-def ldb_delete(ldb):
-    """Delete a LDB file.
-
-    This may be necessary if the ldb is in bad shape, possibly due to being 
-    built from an incompatible previous version of the code, so delete it
-    completely.
-    """
-    print "Deleting %s\n" % ldb.filename
-    os.unlink(ldb.filename)
-    ldb.connect(ldb.filename)
-
-
 def open_ldb(session_info, credentials, lp, dbname):
     assert session_info is not None
     try:
@@ -176,6 +164,13 @@
 
 
 def setup_modify_ldif(ldb, setup_dir, ldif, substvars=None):
+    """Modify a ldb in the private dir.
+    
+    :param ldb: LDB object.
+    :param setup_dir: Setup directory.
+    :param ldif: LDIF file path.
+    :param substvars: Optional dictionary with substitution variables.
+    """
     src = os.path.join(setup_dir, ldif)
 
     data = open(src, 'r').read()
@@ -199,19 +194,6 @@
     ldb.transaction_commit()
 
 
-def setup_ldb_modify(ldb, setup_dir, ldif, substvars=None):
-    """Modify a ldb in the private dir."""
-    src = os.path.join(setup_dir, ldif)
-
-    data = open(src, 'r').read()
-    if substvars is not None:
-        data = substitute_var(data, substvars)
-    assert not "${" in data
-
-    for (changetype, msg) in ldb.parse_ldif(data):
-        ldb.modify(msg)
-
-
 def setup_file(setup_dir, template, fname, substvars):
     """Setup a file in the private dir."""
     f = fname
@@ -328,7 +310,7 @@
         setup_samdb_rootdse(samdb, setup_dir, subobj)
 
         message("Erasing data from partitions")
-        ldb_erase_partitions(subobj, message, samdb, None)
+        ldb_erase_partitions(subobj.domaindn, message, samdb, None)
 
         message("Setting up %s indexes" % paths.samdb)
         setup_add_ldif(samdb, setup_dir, "provision_index.ldif")
@@ -453,8 +435,7 @@
             smbconfsuffix = "member"
         else:
             assert "Invalid server role setting: %s" % lp.get("server role")
-        setup_file(setup_dir, "provision.smb.conf.%s" % smbconfsuffix, paths.smbconf, 
-                None)
+        setup_file(setup_dir, "provision.smb.conf.%s" % smbconfsuffix, paths.smbconf)
         lp.reload()
 
     # only install a new shares config db if there is none
@@ -462,7 +443,7 @@
         message("Setting up share.ldb")
         share_ldb = Ldb(paths.shareconf, session_info=session_info, 
                         credentials=credentials, lp=lp)
-        setup_ldb(share_ldb, setup_dir, "share.ldif", None)
+        setup_ldb(share_ldb, setup_dir, "share.ldif")
 
     message("Setting up %s" % paths.secrets)
     secrets_ldb = setup_secretsdb(paths.secrets, setup_dir, session_info=session_info, 
@@ -497,7 +478,7 @@
         setup_samdb_rootdse(samdb, setup_dir, subobj)
 
         message("Erasing data from partitions")
-        ldb_erase_partitions(subobj, message, samdb, ldapbackend)
+        ldb_erase_partitions(subobj.domaindn, message, samdb, ldapbackend)
     except:
         samdb.transaction_cancel()
         raise
@@ -527,7 +508,7 @@
         else:
             domainguid_mod = ""
 
-        setup_ldb_modify(samdb, setup_dir, "provision_basedn_modify.ldif", {
+        setup_modify_ldif(samdb, setup_dir, "provision_basedn_modify.ldif", {
             "RDN_DC": subobj.rdn_dc,
             "LDAPTIME": timestring(int(time.time())),
             "DOMAINSID": str(subobj.domainsid),
@@ -547,7 +528,7 @@
             "EXTENSIBLEOBJECT": "# no objectClass: extensibleObject for local ldb",
             })
         message("Modifying configuration container")
-        setup_ldb_modify(samdb, setup_dir, "provision_configuration_basedn_modify.ldif", {
+        setup_modify_ldif(samdb, setup_dir, "provision_configuration_basedn_modify.ldif", {
             "CONFIGDN": subobj.configdn, 
             "SCHEMADN": subobj.schemadn,
             })
@@ -559,7 +540,7 @@
             "EXTENSIBLEOBJECT": "# no objectClass: extensibleObject for local ldb"
             })
         message("Modifying schema container")
-        setup_ldb_modify(samdb, setup_dir, "provision_schema_basedn_modify.ldif", {
+        setup_modify_ldif(samdb, setup_dir, "provision_schema_basedn_modify.ldif", {
             "SCHEMADN": subobj.schemadn,
             "NETBIOSNAME": subobj.netbiosname,
             "DEFAULTSITE": subobj.defaultsite,
@@ -593,13 +574,13 @@
         setup_add_ldif(samdb, setup_dir, "provision_users_add.ldif", {
             "DOMAINDN": subobj.domaindn})
         message("Modifying users container")
-        setup_ldb_modify(samdb, setup_dir, "provision_users_modify.ldif", {
+        setup_modify_ldif(samdb, setup_dir, "provision_users_modify.ldif", {
             "DOMAINDN": subobj.domaindn})
         message("Adding computers container (permitted to fail)")
         setup_add_ldif(samdb, setup_dir, "provision_computers_add.ldif", {
             "DOMAINDN": subobj.domaindn})
         message("Modifying computers container")
-        setup_ldb_modify(samdb, setup_dir, "provision_computers_modify.ldif", {
+        setup_modify_ldif(samdb, setup_dir, "provision_computers_modify.ldif", {
             "DOMAINDN": subobj.domaindn})
         message("Setting up sam.ldb data")
         setup_add_ldif(samdb, setup_dir, "provision.ldif", {
@@ -807,7 +788,7 @@
     samdb.attach_schema_from_ldif(head_data, schema_data)
 
 
-def join_domain(domain, netbios_name, join_type, creds, message):
+def join_domain(domain, netbios_name, join_type, creds):
     ctx = NetContext(creds)
     joindom = object()
     joindom.domain = domain
@@ -824,8 +805,7 @@
     access to our local database (might be remote ldap)
     """
     ctx = NetContext(credentials)
-    vampire_ctx = object()
-    machine_creds = credentials_init()
+    machine_creds = Credentials()
     machine_creds.set_domain(form.domain)
     if not machine_creds.set_machine_account():
         raise Exception("Failed to access domain join information!")
@@ -835,7 +815,7 @@
         raise Exception("Migration of remote domain to Samba failed: %s " % vampire_ctx.error_string)
 
 
-def ldb_erase_partitions(subobj, message, ldb, ldapbackend):
+def ldb_erase_partitions(domaindn, message, ldb, ldapbackend):
     """Erase an ldb, removing all records."""
     assert ldb is not None
     res = ldb.search(Dn(ldb, ""), SCOPE_BASE, "(objectClass=*)", 
@@ -848,7 +828,7 @@
         previous_remaining = 1
         current_remaining = 0
 
-        if ldapbackend and (basedn == subobj.domaindn):
+        if ldapbackend and (basedn == domaindn):
             # Only delete objects that were created by provision
             anything = "(objectcategory=*)"
 

Modified: branches/SAMBA_4_0/source/scripting/python/samba/tests/__init__.py
===================================================================
--- branches/SAMBA_4_0/source/scripting/python/samba/tests/__init__.py	2007-12-18 17:29:08 UTC (rev 26526)
+++ branches/SAMBA_4_0/source/scripting/python/samba/tests/__init__.py	2007-12-18 18:54:19 UTC (rev 26527)
@@ -35,3 +35,20 @@
         self.ldb = samba.Ldb(self.filename)
 
 
+class SubstituteVarTestCase(unittest.TestCase):
+    def test_empty(self):
+        self.assertEquals("", samba.substitute_var("", {}))
+
+    def test_nothing(self):
+        self.assertEquals("foo bar", samba.substitute_var("foo bar", {"bar": "bla"}))
+
+    def test_replace(self):
+        self.assertEquals("foo bla", samba.substitute_var("foo ${bar}", {"bar": "bla"}))
+
+    def test_broken(self):
+        self.assertEquals("foo ${bdkjfhsdkfh sdkfh ", 
+                samba.substitute_var("foo ${bdkjfhsdkfh sdkfh ", {"bar": "bla"}))
+
+    def test_unknown_var(self):
+        self.assertEquals("foo ${bla} gsff", 
+                samba.substitute_var("foo ${bla} gsff", {"bar": "bla"}))

Added: branches/SAMBA_4_0/source/scripting/python/samba/tests/provision.py
===================================================================
--- branches/SAMBA_4_0/source/scripting/python/samba/tests/provision.py	2007-12-18 17:29:08 UTC (rev 26526)
+++ branches/SAMBA_4_0/source/scripting/python/samba/tests/provision.py	2007-12-18 18:54:19 UTC (rev 26527)
@@ -0,0 +1,59 @@
+#!/usr/bin/python
+
+# Unix SMB/CIFS implementation.
+# Copyright (C) Jelmer Vernooij <jelmer at samba.org> 2007
+#   
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#   
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#   
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+
+import unittest
+import samba.provision
+
+class ProvisionTestCase(unittest.TestCase):
+    def test_setup_secretsdb(self):
+        raise NotImplementedError(self.test_setup_secretsdb)
+
+    def test_setup_templatesdb(self):
+        raise NotImplementedError(self.test_setup_templatesdb)
+
+    def test_setup_registry(self):
+        raise NotImplementedError(self.test_setup_registry)
+
+    def test_setup_samdb_rootdse(self):
+        raise NotImplementedError(self.test_setup_samdb_rootdse)
+
+    def test_setup_samdb_partitions(self):
+        raise NotImplementedError(self.test_setup_samdb_partitions)
+
+    def test_create_phpldapadmin_config(self):
+        raise NotImplementedError(self.test_create_phpldapadmin_config)
+
+    def test_provision_dns(self):
+        raise NotImplementedError(self.test_provision_dns)
+
+    def test_provision_ldapbase(self):
+        raise NotImplementedError(self.test_provision_ldapbase)
+
+    def test_provision_guess(self):
+        raise NotImplementedError(self.test_provision_guess)
+
+    def test_join_domain(self):
+        raise NotImplementedError(self.test_join_domain)
+
+    def test_vampire(self):
+        raise NotImplementedError(self.test_vampire)
+
+    def test_erase_partitions(self):
+        raise NotImplementedError(self.test_erase_partitions)
+

Modified: branches/SAMBA_4_0/source/selftest/samba4_tests.sh
===================================================================
--- branches/SAMBA_4_0/source/selftest/samba4_tests.sh	2007-12-18 17:29:08 UTC (rev 26526)
+++ branches/SAMBA_4_0/source/selftest/samba4_tests.sh	2007-12-18 18:54:19 UTC (rev 26527)
@@ -295,4 +295,5 @@
 	plantest "security.python" none PYTHONPATH=bin/python:scripting/python:libcli/security/tests/ scripting/bin/subunitrun bindings
 	plantest "param.python" none PYTHONPATH=bin/python:scripting/python:param/tests scripting/bin/subunitrun bindings
 	plantest "upgrade.python" none PYTHONPATH=bin/python:scripting/python scripting/bin/subunitrun samba.tests.upgrade
+	plantest "samba.python" none PYTHONPATH=bin/python:scripting/python scripting/bin/subunitrun samba.tests
 fi



More information about the samba-cvs mailing list