diff roundup/test/memorydb.py @ 6808:375d40a9e730

Add tests to BasicDatabase and merge implementations test/session_common.py: add new tests: * test set with bad __timestamps * test get on missing item with no default * test clear() method * test new lifetime() method everything below here was needed to get the tests to work across all db's. roundup/backends/sessions_dbm.py: make set() validate __timestamp as float. If invalid and item is new, set it to time.time(). If invalid and item exists keep original timestamp. add lifetime(key_lifetime) method. Given key_lifetime in seconds, generate a __timestamp that will be deleted after that many seconds. roundup/backends/sessions_rdbms.py: make set() behave the same as session_dbm. add lifetime method as above. roundup/backends/sessions_sqlite.py: import session_rdbms::BasicDatabase and override __init__. rather than cloning all the code. Kept a few logging and sql methods. roundup/test/memorydb.py: make get() on a missing key return KeyError make set() conform to dbm/rdbms implementations.
author John Rouillard <rouilj@ieee.org>
date Mon, 25 Jul 2022 21:21:26 -0400
parents 408fd477761f
children a4652d809ec5
line wrap: on
line diff
--- a/roundup/test/memorydb.py	Mon Jul 25 17:34:54 2022 -0400
+++ b/roundup/test/memorydb.py	Mon Jul 25 21:21:26 2022 -0400
@@ -3,6 +3,7 @@
 
 import shutil
 import os
+import time
 
 from roundup import date
 from roundup import hyperdb
@@ -163,12 +164,22 @@
     def exists(self, infoid):
         return infoid in self
     def get(self, infoid, value, default=None):
+        if infoid not in self:
+            raise KeyError
         return self[infoid].get(value, default)
     def getall(self, infoid):
         if infoid not in self:
             raise KeyError(infoid)
         return self[infoid]
     def set(self, infoid, **newvalues):
+        if '__timestamp' in newvalues:
+            try:
+                float(newvalues['__timestamp'])
+            except ValueError:
+                if infoid in self:
+                    del(newvalues['__timestamp'])
+                else:
+                    newvalues['__timestamp'] = time.time()
         self[infoid].update(newvalues)
     def list(self):
         return list(self.keys())

Roundup Issue Tracker: http://roundup-tracker.org/