1717class StorageMockAdapter (object ):
1818 def __init__ (self ):
1919 self ._keys = {}
20+ self ._expire = {}
2021 self ._lock = threading .RLock ()
2122
2223 def get (self , key ):
@@ -42,6 +43,7 @@ def push_items(self, key, *value):
4243 items = self ._keys [key ]
4344 [items .append (item ) for item in value ]
4445 self ._keys [key ] = items
46+ return len (self ._keys [key ])
4547
4648 def delete (self , key ):
4749 with self ._lock :
@@ -56,7 +58,6 @@ def pop_items(self, key):
5658 del self ._keys [key ]
5759 return items
5860
59-
6061 def increment (self , key , value ):
6162 with self ._lock :
6263 if key not in self ._keys :
@@ -116,8 +117,12 @@ def get_items_count(self, key):
116117 return None
117118
118119 def expire (self , key , ttl ):
119- #Not needed for Memory storage
120- pass
120+ with self ._lock :
121+ if key in self ._expire :
122+ self ._expire [key ] = - 1
123+ else :
124+ self ._expire [key ] = ttl
125+ # should only be called once per key.
121126
122127class PluggableSplitStorageTests (object ):
123128 """In memory split storage test cases."""
@@ -381,15 +386,16 @@ def test_put(self):
381386 Impression ('key3' , 'feature2' , 'on' , 'some_label' , 123456 , 'buck1' , 321654 ),
382387 Impression ('key4' , 'feature1' , 'on' , 'some_label' , 123456 , 'buck1' , 321654 )
383388 ]
384- self .pluggable_imp_storage .put (impressions )
389+ assert ( self .pluggable_imp_storage .put (impressions ) )
385390 assert (self .pluggable_imp_storage ._impressions_queue_key in self .mock_adapter ._keys )
386391 assert (self .mock_adapter ._keys ["myprefix.SPLITIO.impressions" ] == self .pluggable_imp_storage ._wrap_impressions (impressions ))
392+ assert (self .mock_adapter ._expire ["myprefix.SPLITIO.impressions" ] == PluggableImpressionsStorage .IMPRESSIONS_KEY_DEFAULT_TTL )
387393
388394 impressions2 = [
389395 Impression ('key5' , 'feature1' , 'off' , 'some_label' , 123456 , 'buck1' , 321654 ),
390396 Impression ('key6' , 'feature2' , 'off' , 'some_label' , 123456 , 'buck1' , 321654 ),
391397 ]
392- self .pluggable_imp_storage .put (impressions2 )
398+ assert ( self .pluggable_imp_storage .put (impressions2 ) )
393399 assert (self .mock_adapter ._keys ["myprefix.SPLITIO.impressions" ] == self .pluggable_imp_storage ._wrap_impressions (impressions + impressions2 ))
394400
395401 def test_wrap_impressions (self ):
@@ -480,15 +486,16 @@ def test_put(self):
480486 EventWrapper (event = Event ('key3' , 'user' , 'purchase' , 10 , 123456 , None ), size = 32768 ),
481487 EventWrapper (event = Event ('key4' , 'user' , 'purchase' , 10 , 123456 , None ), size = 32768 ),
482488 ]
483- self .pluggable_events_storage .put (events )
489+ assert ( self .pluggable_events_storage .put (events ) )
484490 assert (self .pluggable_events_storage ._events_queue_key in self .mock_adapter ._keys )
485491 assert (self .mock_adapter ._keys ["myprefix.SPLITIO.events" ] == self .pluggable_events_storage ._wrap_events (events ))
492+ assert (self .mock_adapter ._expire ["myprefix.SPLITIO.events" ] == PluggableEventsStorage ._EVENTS_KEY_DEFAULT_TTL )
486493
487494 events2 = [
488495 EventWrapper (event = Event ('key5' , 'user' , 'purchase' , 10 , 123456 , None ), size = 32768 ),
489496 EventWrapper (event = Event ('key6' , 'user' , 'purchase' , 10 , 123456 , None ), size = 32768 ),
490497 ]
491- self .pluggable_events_storage .put (events2 )
498+ assert ( self .pluggable_events_storage .put (events2 ) )
492499 assert (self .mock_adapter ._keys ["myprefix.SPLITIO.events" ] == self .pluggable_events_storage ._wrap_events (events + events2 ))
493500
494501 def test_wrap_events (self ):
0 commit comments