def testDeleteExpiredOnGetItem(self):
        timedDict = TimedDictionary(TWO_HOURS)
        timedDict[1] = SomeObject('id1')
        timedDict._now = lambda: time() + TWO_HOURS

        self.assertRaises(KeyError, timedDict.__getitem__, 1)
        self.assertEqual([], timedDict._expirationOrder)
    def testPeek(self):
        timedDict = TimedDictionary(TWO_HOURS)
        timedDict[1] = "Now you see me, now you don't."
        timedDict._now = lambda: time() + TWO_HOURS

        self.assertEqual("Now you see me, now you don't.", timedDict.peek(1))
        self.assertRaises(KeyError, timedDict.__getitem__, 1)
    def testPurgeOnSetItem(self):
        timedDict = TimedDictionary(TWO_HOURS)
        timedDict[1] = SomeObject('id1')
        timedDict._now = lambda: time() + TWO_HOURS
        timedDict[2] = SomeObject('id2')

        self.assertEqual([2], timedDict._expirationOrder)
Esempio n. 4
0
 def __init__(self, timeout, name=None, secure=False, httpOnly=False):
     self._timeout = timeout
     self._store = TimedDictionary(self._timeout)
     self._name = '{0}{1}'.format('' if name is None else '%s-' % name,
                                  uuid4())
     self._secure = secure
     self._httpOnly = httpOnly
    def testTouch(self):
        timedDict = TimedDictionary(TWO_HOURS)
        timedDict[1] = SomeObject('id1')
        timedDict[2] = SomeObject('id2')

        self.assertEqual([1, 2], timedDict._expirationOrder)
        timedDict.touch(1)
        self.assertEqual([2, 1], timedDict._expirationOrder)
    def testBasicDeletion(self):
        timedDict = TimedDictionary(TWO_HOURS)
        timedDict['key'] = 'five'

        try:
            del timedDict['key']
        except:
            self.fail("This shouldn't happen.")
        self.assertRaises(KeyError, timedDict.__delitem__, 'idontexist')
 def __init__(self,
              cacheTimeout=1 * 60 * 60,
              returnCachedValueInCaseOfException=False,
              backoffTimeout=None,
              **kwargs):
     Transparent.__init__(self, **kwargs)
     self._cache = TimedDictionary(timeout=cacheTimeout)
     self._returnCachedValueInCaseOfException = returnCachedValueInCaseOfException
     self._backoffTimeout = backoffTimeout
     self._backoffStarted = None
 def testSize(self):
     timedDict = TimedDictionary(TWO_HOURS)
     self.assertEqual(0, timedDict.size())
     timedDict['key'] = 'five'
     self.assertEqual(1, timedDict.size())
     timedDict['key'] = 'six'
     self.assertEqual(1, timedDict.size())
     timedDict['key2'] = 'six'
     self.assertEqual(2, timedDict.size())
     timedDict._now = lambda: time() + TWO_HOURS
     self.assertEqual(0, timedDict.size())
 def testLruMaxSize(self):
     timedDict = TimedDictionary(TWO_HOURS, lruMaxSize=2)
     self.assertEqual(0, timedDict.size())
     timedDict['key'] = 'five'
     self.assertEqual(1, timedDict.size())
     timedDict['key1'] = 'six'
     self.assertEqual(2, timedDict.size())
     self.assertEqual('five', timedDict['key'])
     timedDict['key2'] = 'seven'
     self.assertEqual(2, timedDict.size())
     self.assertEqual(set(['key', 'key2']), set(timedDict.keys()))
    def testBasicContains(self):
        timedDict = TimedDictionary(TWO_HOURS)
        timedDict[5] = 'five'
        timedDict['six'] = 6
        self.assertTrue(5 in timedDict)
        self.assertTrue('six' in timedDict)
        self.assertFalse(42 in timedDict)
        self.assertFalse(None in timedDict)

        self.assertTrue(5 in timedDict)
        self.assertTrue('six' in timedDict)
        self.assertFalse(42 in timedDict)
        self.assertFalse(None in timedDict)
 def testPop(self):
     timedDict = TimedDictionary(TWO_HOURS)
     setTime = time()
     timedDict[1] = "Now you see me, now you don't."
     self.assertEqual("Now you see me, now you don't.", timedDict.pop(1))
     self.assertRaises(KeyError, lambda: timedDict.pop(1))
     self.assertEqual("default", timedDict.pop(1, 'default'))
     self.assertEqual(None, timedDict.pop(1, None))
     self.assertEqual("default", timedDict.pop(1, default='default'))
     self.assertEqual(None, timedDict.pop(1, default=None))
     timedDict[1] = "Now you see me, now you don't."
     setTime = time()
     timedDict._now = lambda: setTime + TWO_HOURS + 0.000001
     self.assertRaises(KeyError, lambda: timedDict.pop(1))
    def testPurge(self):
        timedDict = TimedDictionary(TWO_HOURS)
        timedDict[1] = SomeObject('id1')
        timedDict[2] = SomeObject('id2')
        timedDict._now = lambda: time() + ONE_HOUR
        self.assertEqual([1, 2], timedDict._expirationOrder)

        timedDict[3] = SomeObject('id3')
        timedDict.touch(2)
        timedDict._now = lambda: time() + TWO_HOURS
        timedDict.purge()
        self.assertEqual([3, 2], timedDict._expirationOrder)
        timedDict._now = lambda: time() + TWO_HOURS + TWO_HOURS
        timedDict.purge()
        self.assertEqual([], timedDict._expirationOrder)
    def testExpirationOrderIsKeptInternally(self):
        timedDict = TimedDictionary(TWO_HOURS)
        timedDict[3] = SomeObject(1)
        timedDict[1] = SomeObject(10)
        timedDict[2] = SomeObject(20)

        self.assertEqual([3, 1, 2], timedDict._expirationOrder)

        timedDict[1] = SomeObject(23)
        self.assertEqual([3, 2, 1], timedDict._expirationOrder)

        timedDict[0] = SomeObject(23.01)
        self.assertEqual([3, 2, 1, 0], timedDict._expirationOrder)

        del timedDict[2]
        self.assertEqual([3, 1, 0], timedDict._expirationOrder)
 def testExpiredLeastRecentlyUsedGracefullyDealtWith(self):
     timedDict = TimedDictionary(TWO_HOURS, lruMaxSize=2)
     timedDict['key1'] = 'five'
     timedDict['key2'] = 'six'
     timedDict['key3'] = 'seven'
     self.assertEqual(set(['key2', 'key3']), set(timedDict.keys()),
                      set(timedDict.keys()))
     self.assertEqual(3, len(timedDict._times))
     self.assertEqual(3, len(timedDict._expirationOrder))
     timedDict.purge()
     self.assertEqual(2, len(timedDict._times))
     self.assertEqual(2, len(timedDict._expirationOrder))
     timedDict._now = lambda: time() + TWO_HOURS
     timedDict.purge()
     self.assertEqual([], list(timedDict.keys()))
     self.assertEqual(0, len(timedDict._times))
     self.assertEqual(0, len(timedDict._expirationOrder))
    def testExpiredOnInShouldReturnDefaultOnGetWithoutAnException(self):
        timedDict = TimedDictionary(TWO_HOURS)
        setTime = time()
        timedDict._now = lambda: setTime
        timedDict[1] = SomeObject('id1')

        timedDict._now = lambda: setTime + TWO_HOURS
        try:
            1 in timedDict
        except KeyError:
            self.fail("Key shouldn't have expired yet.")
        except:
            self.fail("This should not happen.")

        timedDict._now = lambda: setTime + TWO_HOURS + 0.000001

        self.assertEqual(None, timedDict.get(1))
        self.assertEqual('a default', timedDict.get(1, 'a default'))
        self.assertEqual([], timedDict._expirationOrder)
    def testBasicGetAndPut(self):
        timedDict = TimedDictionary(TWO_HOURS)
        timedDict['key'] = 'value'
        self.assertEqual('value', timedDict['key'])

        timedDict['key'] = 'otherValue'
        self.assertEqual('otherValue', timedDict['key'])
        timedDict['key'] = 5
        self.assertEqual(5, timedDict['key'])
        timedDict['key'] = 5.0
        self.assertEqual(5.0, timedDict['key'])
        timedDict['key'] = ['someMutable', 5]
        self.assertEqual(['someMutable', 5], timedDict['key'])

        self.assertEqual(['someMutable', 5], timedDict.get('key'))

        self.assertRaises(TypeError, timedDict.__setitem__, [], 'value')
        self.assertRaises(KeyError, timedDict.__getitem__, 'iamnothere')
        self.assertEqual(None, timedDict.get('iamnothere'))
        self.assertEqual('MARK', timedDict.get('iamnothere', 'MARK'))
 def testClear(self):
     timedDict = TimedDictionary(TWO_HOURS)
     timedDict['key'] = 'five'
     timedDict.clear()
     self.assertRaises(KeyError, lambda: timedDict["key"])
 def testGetTime(self):
     timedDict = TimedDictionary(TWO_HOURS)
     timedDict[1] = SomeObject('id1')
     with stderr_replaced():
         self.assertTrue(time() - timedDict.getTime(1) < 2.0)
 def testUpdateTimeout(self):
     timedDict = TimedDictionary(TWO_HOURS)
     timedDict['key'] = 'five'
     timedDict._now = lambda: time() + TWO_HOURS
     timedDict.setTimeout(TWO_HOURS + 1)
     self.assertEqual("five", timedDict["key"])
Esempio n. 20
0
def CookieMemoryStore(timeout, *args, **kwargs):
    return CookieStore(
        TimedDictionary(timeout),
        timeout,
        *args, **kwargs)