1
0
mirror of https://github.com/samba-team/samba.git synced 2025-12-06 16:23:49 +03:00

downgradedatabase: blackbox: MDB backend

When Samba uses TDB as a backend store, all new database features are
toggled on/off when GUID indexing is toggled. But, GUID indexing can't
be disabled on MDB, so the other features are toggled separately.
Consequently, the downgradedatabase script behaves differently depending
on the database backend. This patch adds testing for the MDB behaviour.

Signed-off-by: Aaron Haslett <aaronhaslett@catalyst.net.nz>
Signed-off-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Garming Sam <garming@catalyst.net.nz>
Pair-Programmed-With: Andrew Bartlett <abartlet@samba.org>
This commit is contained in:
Aaron Haslett
2019-05-24 14:54:03 +12:00
committed by Andrew Bartlett
parent 0942a65b63
commit 4a95410a15

View File

@@ -26,12 +26,13 @@ COMMAND = os.path.join(os.path.dirname(__file__),
"../../../../../source4/scripting/bin/sambadowngradedatabase")
class DowngradeTest(BlackboxTestCase):
class DowngradeTestBase(BlackboxTestCase):
"""Test that sambadowngradedatabase downgrades the samba database"""
backend = 'tdb'
def setUp(self):
super(DowngradeTest, self).setUp()
super(DowngradeTestBase, self).setUp()
if not hasattr(self, "backend"):
self.fail("Subclass this class and set 'backend'")
# Don't assert on empty tempdir contents on tearDown
self.check_tempdir_empty = False
@@ -100,6 +101,9 @@ class DowngradeTest(BlackboxTestCase):
return attribute_types
class DowngradeTestTDB(DowngradeTestBase):
backend = 'tdb'
# Check that running sambadowngradedatabase with a TDB backend:
# * Replaces all GUID keys with DN keys
# * Removes ORDERED_INTEGER from @ATTRIBUTES
@@ -124,3 +128,31 @@ class DowngradeTest(BlackboxTestCase):
self.assertEqual(len(dn_keys), num_guid_keys_before_downgrade)
self.assertTrue(ordered_int_type not in self.attribute_types())
self.assertEqual(pack_formats, [ldb.PACKING_FORMAT])
class DowngradeTestMDB(DowngradeTestBase):
backend = 'mdb'
# Check that running sambadowngradedatabase with a TDB backend:
# * Does NOT replace GUID keys with DN keys
# * Removes ORDERED_INTEGER from @ATTRIBUTES
# * Repacks database with pack format version 1
def test_undo_guid(self):
type_prefix = "LDB_SYNTAX_"
ordered_int_type = ldb.SYNTAX_ORDERED_INTEGER[len(type_prefix):]
dn_keys, guid_keys, pack_formats = self.ldbdump_keys_pack_formats()
self.assertGreater(len(guid_keys), 20)
self.assertEqual(len(dn_keys), 0)
self.assertTrue(ordered_int_type in self.attribute_types())
self.assertEqual(pack_formats, [ldb.PACKING_FORMAT_V2])
num_guid_keys_before_downgrade = len(guid_keys)
self.check_run("%s -H %s" % (COMMAND, self.sam_path),
msg="Running sambadowngradedatabase")
dn_keys, guid_keys, pack_formats = self.ldbdump_keys_pack_formats()
self.assertEqual(len(guid_keys), num_guid_keys_before_downgrade)
self.assertEqual(len(dn_keys), 0)
self.assertTrue(ordered_int_type not in self.attribute_types())
self.assertEqual(pack_formats, [ldb.PACKING_FORMAT])