python/samba/tests: Remove DCs joined to test samba-tool behaviour
authorAndrew Bartlett <abartlet@samba.org>
Fri, 18 Jun 2021 08:46:51 +0000 (20:46 +1200)
committerGary Lockyer <gary@catalyst.net.nz>
Sun, 20 Jun 2021 23:59:29 +0000 (11:59 +1200)
Otherwise we have the live DCs spamming the logs looking for the
long-gone test servers:

Failed to connect host fd00::5357:5f0b on port 135 - NT_STATUS_OBJECT_NAME_NOT_FOUND
Failed to connect host fd00::5357:5f0b (6f44653d-18c8-4bf4-b2e7-6f85cf7b0f74._msdcs.addom.samba.example.com) on port 135 - NT_STATUS_OBJECT_NAME_NOT_FOUND.
Failed to connect host 10.53.57.11 on port 135 - NT_STATUS_OBJECT_NAME_NOT_FOUND
Failed to connect host 10.53.57.11 (6f44653d-18c8-4bf4-b2e7-6f85cf7b0f74._msdcs.addom.samba.example.com) on port 135 - NT_STATUS_OBJECT_NAME_NOT_FOUND.
Failed to connect host 10.53.57.12 on port 135 - NT_STATUS_OBJECT_NAME_NOT_FOUND

This avoids spamming the GitLab pipeline logs with a lot of noise,
as there is a size limit to the output, as well as being cleaner.

Signed-off-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Gary Lockyer <gary@catalyst.net.nz>
python/samba/tests/domain_backup_offline.py
python/samba/tests/samba_tool/base.py
python/samba/tests/samba_tool/join_lmdb_size.py
python/samba/tests/samba_tool/promote_dc_lmdb_size.py

index 33803ca6ebb2dcba13da44d31e02879c0e929f2e..ad371680779a4a8d2c97df6a0803ad9f80b552f9 100644 (file)
@@ -185,12 +185,15 @@ class DomainBackupOfflineCmp(BlackboxTestCase):
     def join(self, backend):
         target = tempfile.mkdtemp(dir=self.tempdir)
 
+        new_dc_name = "offlinebackupdc"
+
         join_cmd = "samba-tool domain join {domain} DC " +\
                    "--server {server} " +\
                    "--realm {realm} " +\
                    "--username {username}%{password} " +\
                    "--targetdir {target} " +\
                    "--backend-store {backend} " +\
+                   "--option='netbios name = {new_dc_name}' " +\
                    "--option=\"vfs objects=dfs_samba4 acl_xattr fake_acls xattr_tdb\""
         join_cmd = join_cmd.format(server=os.environ["DC_SERVER"],
                                    domain=os.environ["DOMAIN"],
@@ -198,9 +201,21 @@ class DomainBackupOfflineCmp(BlackboxTestCase):
                                    username=os.environ["USERNAME"],
                                    password=os.environ["PASSWORD"],
                                    target=target,
-                                   backend=backend)
+                                   backend=backend,
+                                   new_dc_name=new_dc_name)
         self.check_output(join_cmd)
 
+        demote_cmd = "samba-tool domain demote " +\
+                   "--server {server} " +\
+                   "--username {username}%{password} " +\
+                   "--remove-other-dead-server={new_dc_name}"
+
+        demote_cmd = demote_cmd.format(server=os.environ["DC_SERVER"],
+                                       username=os.environ["USERNAME"],
+                                       password=os.environ["PASSWORD"],
+                                       new_dc_name=new_dc_name)
+        self.check_output(demote_cmd)
+
         return target
 
     def backup(self, prov_dir):
index ff6f9fcc5d3453950bbbab516c4a6be36ee1c1e1..4e0f1d0604c8a3bd748e257fbb3c8f96a3580ccc 100644 (file)
@@ -21,6 +21,7 @@
 #
 # These can all be accesses via os.environ["VARIBLENAME"] when needed
 
+import os
 import random
 import string
 from samba.auth import system_session
@@ -150,3 +151,13 @@ class SambaToolCmdTest(samba.tests.BlackboxTestCase):
     def assertWithin(self, val1, val2, delta, msg=""):
         """Assert that val1 is within delta of val2, useful for time computations"""
         self.assertTrue(((val1 + delta) > val2) and ((val1 - delta) < val2), msg)
+
+    def cleanup_join(self, netbios_name):
+        (result, out, err) \
+            = self.runsubcmd("domain",
+                             "demote",
+                             ("--remove-other-dead-server=%s " % netbios_name),
+                             ("-U%s%%%s" % (os.environ["USERNAME"], os.environ["PASSWORD"])),
+                             ("--server=%s" % os.environ["SERVER"]))
+
+        self.assertCmdSuccess(result, out, err)
index e410d5fba23bf3d0a38891375570903bec65aa6d..8f2e376bc051d16a65b70bcb8d7a28c6c5bf51fb 100644 (file)
@@ -47,7 +47,11 @@ class JoinLmdbSizeTestCase(SambaToolCmdTest):
         if size:
             command += ("--backend-store-size=%s" % size)
 
-        return self.run_command(command)
+        (ret, stdout, stderr) = self.run_command(command)
+        if ret == 0:
+            self.cleanup_join(self.netbios_name)
+
+        return (ret, stdout, stderr)
 
     def is_rodc(self):
         url = "ldb://%s/private/sam.ldb" % self.tempsambadir
index 8e679a5c95fac2b7407ec04c4b38c88612840b71..56fcdcf72f057d05c36f2b24b2ae6167bd352483 100644 (file)
@@ -60,7 +60,11 @@ class PromoteDcLmdbSizeTestCase(SambaToolCmdTest):
         if size:
             command += ("--backend-store-size=%s" % size)
 
-        return self.run_command(command)
+        (ret, stdout, stderr) = self.run_command(command)
+        if ret == 0:
+            self.cleanup_join(self.netbios_name)
+
+        return (ret, stdout, stderr)
 
     def is_rodc(self):
         url = "ldb://%s/private/sam.ldb" % self.tempsambadir