summaryrefslogtreecommitdiffstats
path: root/src/pybind/mgr/dashboard/tests/test_cache.py
blob: f767676c4757a529f3be4635e06d2965e3bab770 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import unittest

from ..plugins.ttl_cache import CacheManager, TTLCache


class TTLCacheTest(unittest.TestCase):
    def test_get(self):
        ref = 'testcache'
        cache = TTLCache(ref, 30)
        with self.assertRaises(KeyError):
            val = cache['foo']
        cache['foo'] = 'var'
        val = cache['foo']
        self.assertEqual(val, 'var')
        self.assertEqual(cache.hits, 1)
        self.assertEqual(cache.misses, 1)

    def test_ttl(self):
        ref = 'testcache'
        cache = TTLCache(ref, 0.0000001)
        cache['foo'] = 'var'
        # pylint: disable=pointless-statement
        with self.assertRaises(KeyError):
            cache['foo']
        self.assertEqual(cache.hits, 0)
        self.assertEqual(cache.misses, 1)
        self.assertEqual(cache.expired, 1)

    def test_maxsize_fifo(self):
        ref = 'testcache'
        cache = TTLCache(ref, 30, 2)
        cache['foo0'] = 'var0'
        cache['foo1'] = 'var1'
        cache['foo2'] = 'var2'
        # pylint: disable=pointless-statement
        with self.assertRaises(KeyError):
            cache['foo0']
        self.assertEqual(cache.hits, 0)
        self.assertEqual(cache.misses, 1)


class TTLCacheManagerTest(unittest.TestCase):
    def test_get(self):
        ref = 'testcache'
        cache0 = CacheManager.get(ref)
        cache1 = CacheManager.get(ref)
        self.assertEqual(id(cache0), id(cache1))