From: Douglas Bagnall Date: Sat, 17 Aug 2024 23:03:54 +0000 (+1200) Subject: ldb:test:api_search: use class method to add index X-Git-Tag: tdb-1.4.13~1158 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d9225d2460eb5887c6a16b5443c4f33d3c208aee;p=thirdparty%2Fsamba.git ldb:test:api_search: use class method to add index The index attribute of these classes was a mutable object, which made me nervous. If a subclass were to alter the class.index (rather than replace it), it would affect tests in other subclasses. Signed-off-by: Douglas Bagnall Reviewed-by: Andreas Schneider --- diff --git a/lib/ldb/tests/python/api_search.py b/lib/ldb/tests/python/api_search.py index 54a0e496220..3962877a802 100644 --- a/lib/ldb/tests/python/api_search.py +++ b/lib/ldb/tests/python/api_search.py @@ -20,6 +20,17 @@ from api_base import ( class SearchTests(LdbBaseTest): + @classmethod + def add_index(cls, db): + """Subclasses can override this function with something like + + def add_index(cls, db): + db.add(MDB_INDEX_OBJ) + + it will be called in class setup. + """ + pass + @classmethod def setUpClass(cls): super().setUpClass() @@ -35,10 +46,7 @@ class SearchTests(LdbBaseTest): flags=cls.flags(), options=cls.options) - try: - db.add(cls.index) - except AttributeError: - pass + cls.add_index(db) db.add({"dn": "@ATTRIBUTES", "DC": "CASE_INSENSITIVE"}) @@ -1187,7 +1195,10 @@ class SearchTests(LdbBaseTest): # Run the search tests against an lmdb backend class SearchTestsLmdb(SearchTests): prefix = MDB_PREFIX - index = MDB_INDEX_OBJ + + @classmethod + def add_index(cls, db): + db.add(MDB_INDEX_OBJ) def setUp(self): if os.environ.get('HAVE_LMDB', '1') == '0': @@ -1274,10 +1285,13 @@ class GUIDIndexedSearchTests(SearchTests): """Test searches using the index, to ensure the index doesn't break things""" IDXGUID = True - index = {"dn": "@INDEXLIST", - "@IDXATTR": [b"x", b"y", b"ou"], - "@IDXGUID": [b"objectUUID"], - "@IDX_DN_GUID": [b"GUID"]} + + @classmethod + def add_index(cls, db): + db.add({"dn": "@INDEXLIST", + "@IDXATTR": [b"x", b"y", b"ou"], + "@IDXGUID": [b"objectUUID"], + "@IDX_DN_GUID": [b"GUID"]}) def setUp(self): super().setUp() @@ -1290,10 +1304,13 @@ class GUIDIndexedDNFilterSearchTests(SearchTests): checkBaseOnSearch = True IDX = True IDXGUID = True - index = {"dn": "@INDEXLIST", - "@IDXATTR": [b"x", b"y", b"ou"], - "@IDXGUID": [b"objectUUID"], - "@IDX_DN_GUID": [b"GUID"]} + + @classmethod + def add_index(cls, db): + db.add({"dn": "@INDEXLIST", + "@IDXATTR": [b"x", b"y", b"ou"], + "@IDXGUID": [b"objectUUID"], + "@IDX_DN_GUID": [b"GUID"]}) def setUp(self): super().setUp() @@ -1310,11 +1327,14 @@ class GUIDAndOneLevelIndexedSearchTests(SearchTests): IDX = True IDXGUID = True IDXONE = True - index = {"dn": "@INDEXLIST", + + @classmethod + def add_index(cls, db): + db.add({"dn": "@INDEXLIST", "@IDXATTR": [b"x", b"y", b"ou"], "@IDXONE": [b"1"], "@IDXGUID": [b"objectUUID"], - "@IDX_DN_GUID": [b"GUID"]} + "@IDX_DN_GUID": [b"GUID"]}) def setUp(self): super().setUp() @@ -1350,6 +1370,17 @@ class GUIDAndOneLevelIndexedSearchTestsLmdb(GUIDAndOneLevelIndexedSearchTests): class LdbResultTests(LdbBaseTest): + @classmethod + def add_index(cls, db): + """Subclasses can override this function with something like + + def add_index(cls, db): + db.add(MDB_INDEX_OBJ) + + it will be called in class setup. + """ + pass + @classmethod def setUpClass(cls): @@ -1359,10 +1390,8 @@ class LdbResultTests(LdbBaseTest): cls.reference_db = os.path.join(cls.testdir, f"{cls.__name__}-ref.ldb") db = ldb.Ldb(cls.prefix + cls.reference_db, flags=cls.flags()) - try: - db.add(cls.index) - except AttributeError: - pass + cls.add_index(db) + db.add({"dn": "DC=SAMBA,DC=ORG", "name": b"samba.org", "objectUUID": b"0123456789abcde0"}) db.add({"dn": "OU=ADMIN,DC=SAMBA,DC=ORG", "name": b"Admins", @@ -1630,7 +1659,10 @@ class LdbResultTests(LdbBaseTest): class LdbResultTestsLmdb(LdbResultTests): prefix = MDB_PREFIX - index = MDB_INDEX_OBJ + + @classmethod + def add_index(cls, db): + db.add(MDB_INDEX_OBJ) def setUp(self): if os.environ.get('HAVE_LMDB', '1') == '0': @@ -1728,7 +1760,10 @@ class NestedTransactionTests(LdbBaseTest): class LmdbNestedTransactionTests(NestedTransactionTests): prefix = MDB_PREFIX - index = MDB_INDEX_OBJ + + @classmethod + def add_index(cls, db): + db.add(MDB_INDEX_OBJ) def setUp(self): if os.environ.get('HAVE_LMDB', '1') == '0':