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:
committed by
Andrew Bartlett
parent
0942a65b63
commit
4a95410a15
@@ -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])
|
||||
|
||||
Reference in New Issue
Block a user