diff options
author | Gary Lockyer <gary@catalyst.net.nz> | 2019-12-19 16:31:24 +1300 |
---|---|---|
committer | Karolin Seeger <kseeger@samba.org> | 2020-01-14 08:30:23 +0000 |
commit | 75d088aede531bfe721c397fd1900cc26095b9f3 (patch) | |
tree | b807d42f1cdcc7cba221c9c6f992e3fbaa8b6068 /python | |
parent | 276a07d8eff6273734437ed5acb2ec1217cf7cd2 (diff) | |
download | samba-75d088aede531bfe721c397fd1900cc26095b9f3.tar.gz |
test upgradedns: ensure lmdb lock files linked
Add tests to check that the '-lock' files for the dns partitions as well as
the data files are linked when running
samba_dnsupgrade --dns-backend=BIND9_DLZ
failure to create these links can cause corruption of the corresponding
data file.
BUG: https://bugzilla.samba.org/show_bug.cgi?id=14199
Signed-off-by: Gary Lockyer <gary@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
(cherry picked from commit f0cebbe4dd0317e2abfcbe252977383e6f37f3bd)
Diffstat (limited to 'python')
-rw-r--r-- | python/samba/tests/samba_upgradedns_lmdb.py | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/python/samba/tests/samba_upgradedns_lmdb.py b/python/samba/tests/samba_upgradedns_lmdb.py new file mode 100644 index 00000000000..048993152e2 --- /dev/null +++ b/python/samba/tests/samba_upgradedns_lmdb.py @@ -0,0 +1,75 @@ +# Unix SMB/CIFS implementation. +# Copyright (C) Catalyst IT Ltd. 2019 +# +# 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/>. +# + +from samba.tests.samba_tool.base import SambaToolCmdTest +import os +import shutil + + +class UpgradeDnsLmdbTestCase(SambaToolCmdTest): + """ + Tests for dns upgrade on a lmdb backend + """ + + def setUp(self): + super(UpgradeDnsLmdbTestCase, self).setUp() + self.tempsambadir = os.path.join(self.tempdir, "samba") + os.mkdir(self.tempsambadir) + + # provision a domain + # + # returns the tuple (ret, stdout, stderr) + def provision(self): + command = ( + "samba-tool " + "domain provision " + "--realm=foo.example.com " + "--domain=FOO " + "--targetdir=%s " + "--backend-store=mdb " + "--use-ntvfs " % self.tempsambadir) + return self.run_command(command) + + # upgrade a domains dns to BIND9 + # + # returns the tuple (ret, stdout, stderr) + def upgrade_dns(self): + command = ( + "samba_upgradedns " + "--dns-backend=BIND9_DLZ " + "--configfile %s/etc/smb.conf" % self.tempsambadir) + return self.run_command(command) + + def tearDown(self): + super(UpgradeDnsLmdbTestCase, self).tearDown() + shutil.rmtree(self.tempsambadir) + + def test_lmdb_lock_files_linked_on_upgrade_to_bind9_dlz(self): + """ + Ensure that links are created for the lock files as well as the + data files + """ + self.provision() + self.upgrade_dns() + directory = ("%s/bind-dns/dns/sam.ldb.d" % self.tempsambadir) + for filename in os.listdir(directory): + if filename.endswith(".ldb") and "DNSZONES" in filename: + lock_file = ("%s/%s-lock" % (directory, filename)) + self.assertTrue( + os.path.isfile(lock_file), + msg=("Lock file %s/%s-lock for %s, does not exist" % + (directory, filename, filename))) |