mirror of
https://github.com/ceph/ceph
synced 2024-12-29 15:03:33 +00:00
15dfa71cf7
Signed-off-by: Pere Diaz Bou <pdiazbou@redhat.com> Fixes: https://tracker.ceph.com/issues/48388
84 lines
2.4 KiB
Python
84 lines
2.4 KiB
Python
import json
|
|
|
|
from .mgr_test_case import MgrTestCase
|
|
|
|
class TestCache(MgrTestCase):
|
|
|
|
def setUp(self):
|
|
super(TestCache, self).setUp()
|
|
self.setup_mgrs()
|
|
self._load_module("cli_api")
|
|
self.ttl = 10
|
|
self.enable_cache(self.ttl)
|
|
|
|
def tearDown(self):
|
|
self.disable_cache()
|
|
|
|
def get_hit_miss_ratio(self):
|
|
perf_dump_command = f"daemon mgr.{self.mgr_cluster.get_active_id()} perf dump"
|
|
perf_dump_res = self.cluster_cmd(perf_dump_command)
|
|
perf_dump = json.loads(perf_dump_res)
|
|
h = perf_dump["mgr"]["cache_hit"]
|
|
m = perf_dump["mgr"]["cache_miss"]
|
|
return int(h), int(m)
|
|
|
|
def enable_cache(self, ttl):
|
|
set_ttl = f"config set mgr mgr_ttl_cache_expire_seconds {ttl}"
|
|
self.cluster_cmd(set_ttl)
|
|
|
|
def disable_cache(self):
|
|
set_ttl = "config set mgr mgr_ttl_cache_expire_seconds 0"
|
|
self.cluster_cmd(set_ttl)
|
|
|
|
|
|
def test_init_cache(self):
|
|
get_ttl = "config get mgr mgr_ttl_cache_expire_seconds"
|
|
res = self.cluster_cmd(get_ttl)
|
|
self.assertEquals(int(res), 10)
|
|
|
|
def test_health_not_cached(self):
|
|
get_health = "mgr api get health"
|
|
|
|
h_start, m_start = self.get_hit_miss_ratio()
|
|
self.cluster_cmd(get_health)
|
|
h, m = self.get_hit_miss_ratio()
|
|
|
|
self.assertEquals(h, h_start)
|
|
self.assertEquals(m, m_start)
|
|
|
|
def test_osdmap(self):
|
|
get_osdmap = "mgr api get osd_map"
|
|
|
|
# store in cache
|
|
self.cluster_cmd(get_osdmap)
|
|
# get from cache
|
|
res = self.cluster_cmd(get_osdmap)
|
|
osd_map = json.loads(res)
|
|
self.assertIn("osds", osd_map)
|
|
self.assertGreater(len(osd_map["osds"]), 0)
|
|
self.assertIn("epoch", osd_map)
|
|
|
|
|
|
|
|
def test_hit_miss_ratio(self):
|
|
get_osdmap = "mgr api get osd_map"
|
|
|
|
hit_start, miss_start = self.get_hit_miss_ratio()
|
|
|
|
def wait_miss():
|
|
self.cluster_cmd(get_osdmap)
|
|
_, m = self.get_hit_miss_ratio()
|
|
return m == miss_start + 1
|
|
|
|
# Miss, add osd_map to cache
|
|
self.wait_until_true(wait_miss, self.ttl + 5)
|
|
h, m = self.get_hit_miss_ratio()
|
|
self.assertEquals(h, hit_start)
|
|
self.assertEquals(m, miss_start+1)
|
|
|
|
# Hit, get osd_map from cache
|
|
self.cluster_cmd(get_osdmap)
|
|
h, m = self.get_hit_miss_ratio()
|
|
self.assertEquals(h, hit_start+1)
|
|
self.assertEquals(m, miss_start+1)
|