Mercurial > p > roundup > code
diff roundup/test/memorydb.py @ 6365:7f00fc5958ca
Make memorydb persistent across re-open
This allows memorydb to be used for more tests, in particular re-opening
with another user for checking permissions.
| author | Ralf Schlatterbeck <rsc@runtux.com> |
|---|---|
| date | Wed, 31 Mar 2021 12:49:28 +0200 |
| parents | 58817c3bf471 |
| children | 087cae2fbcea |
line wrap: on
line diff
--- a/roundup/test/memorydb.py Tue Mar 30 21:04:53 2021 -0400 +++ b/roundup/test/memorydb.py Wed Mar 31 12:49:28 2021 +0200 @@ -38,6 +38,9 @@ return config def create(journaltag, create=True, debug=False, prefix=default_prefix): + # "Nuke" in-memory db + db_nuke('') + db = Database(new_config(debug), journaltag) # load standard schema @@ -214,12 +217,12 @@ dbtype = "memorydb" + # Make it a little more persistent across re-open + memdb = {} + def __init__(self, config, journaltag=None): self.config, self.journaltag = config, journaltag self.classes = {} - self.items = {} - self.ids = {} - self.journals = {} self.files = {} self.tx_files = {} self.security = security.Security(self) @@ -236,6 +239,10 @@ self.destroyednodes = {}# keep track of the destroyed nodes by class self.transactions = [] self.tx_Source = None + # persistence across re-open + self.items = self.__class__.memdb.get('items', {}) + self.ids = self.__class__.memdb.get('ids', {}) + self.journals = self.__class__.memdb.get('journals', {}) def filename(self, classname, nodeid, property=None, create=0): shutil.copyfile(__file__, __file__+'.dummy') @@ -290,6 +297,10 @@ # kill the schema too self.classes = {} # just keep the .items + # persistence across re-open + self.__class__.memdb['items'] = self.items + self.__class__.memdb['ids'] = self.ids + self.__class__.memdb['journals'] = self.journals # # Classes @@ -472,4 +483,13 @@ properties['superseder'] = hyperdb.Multilink(classname) Class.__init__(self, db, classname, **properties) +# Methods to check for existence and nuke the db +# We don't support multiple named databases + +def db_exists(name): + return bool(Database.memdb) + +def db_nuke(name): + Database.memdb = {} + # vim: set et sts=4 sw=4 :
