예제 #1
0
 def test_logic(self):
     cache = py4web.Cache()
     cache.get('x', lambda: 'y')
     self.assertEqual(cache.head.next.next, cache.tail)
     self.assertEqual(cache.head.next, cache.tail.prev)
     self.assertEqual(cache.head, cache.tail.prev.prev)
     self.assertEqual(cache.head.next.key, 'x')
     self.assertEqual(cache.head.next.value, 'y')
예제 #2
0
 def test_different_keys(self):
     cache = py4web.Cache()
     results = set()
     for k in range(100):
         results.add(cache.get('a', random.random))
         results.add(cache.get('b', random.random))
         results.add(cache.get('c', random.random))
     self.assertEqual(len(results), 3)
예제 #3
0
 def test_logic(self):
     cache = py4web.Cache()
     cache.get("x", lambda: "y")
     self.assertEqual(cache.head.next.next, cache.tail)
     self.assertEqual(cache.head.next, cache.tail.prev)
     self.assertEqual(cache.head, cache.tail.prev.prev)
     self.assertEqual(cache.head.next.key, "x")
     self.assertEqual(cache.head.next.value, "y")
예제 #4
0
 def test_timing(self):
     M = N = 100000
     cache = py4web.Cache()
     for k in range(M):
         cache.get(k, random.random)
     t0 = time.time()
     for k in range(N):
         cache.get('new', random.random)
     self.assertTrue((time.time() - t0)/N, 1-5)
     self.assertTrue(cache.free == 0)
예제 #5
0
 def test_change_detection(self):
     cache = py4web.Cache()
     results = set()
     for k in range(30):
         results.add(
             cache.get("a", random.random, expiration=0, monitor=lambda: int(k / 10))
         )
     self.assertEqual(len(results), 3)
     time.sleep(0.02)
     results.add(cache.get("a", random.random, expiration=0.01, monitor=lambda: 5))
     self.assertEqual(len(results), 4)
예제 #6
0
    def test_memoize_and_expiration(self):
        memoize = py4web.Cache().memoize(expiration=0.1)

        @memoize
        def f(x):
            return x + random.random()

        results = set()
        for k in range(10):
            results.add(f(1))
            results.add(f(2))
        time.sleep(0.2)
        for k in range(10):
            results.add(f(1))
            results.add(f(2))
        self.assertEqual(len(results), 4)