fix(api): track items removed from cache
This commit is contained in:
parent
339868de4d
commit
af1c3c7839
|
@ -17,8 +17,8 @@ pip-dev: check-venv
|
||||||
|
|
||||||
test:
|
test:
|
||||||
python -m coverage run -m unittest discover -s tests/
|
python -m coverage run -m unittest discover -s tests/
|
||||||
python -m coverage html
|
python -m coverage html -i
|
||||||
python -m coverage xml
|
python -m coverage xml -i
|
||||||
|
|
||||||
package: package-dist package-upload
|
package: package-dist package-upload
|
||||||
|
|
||||||
|
|
|
@ -12,11 +12,15 @@ class ModelCache:
|
||||||
self.cache = []
|
self.cache = []
|
||||||
self.limit = limit
|
self.limit = limit
|
||||||
|
|
||||||
def drop(self, tag: str, key: Any) -> None:
|
def drop(self, tag: str, key: Any) -> int:
|
||||||
logger.debug("dropping item from cache: %s", tag)
|
logger.debug("dropping item from cache: %s", tag)
|
||||||
self.cache[:] = [
|
removed = [
|
||||||
model for model in self.cache if model[0] != tag and model[1] != key
|
model for model in self.cache if model[0] == tag and model[1] == key
|
||||||
]
|
]
|
||||||
|
for item in removed:
|
||||||
|
self.cache.remove(item)
|
||||||
|
|
||||||
|
return len(removed)
|
||||||
|
|
||||||
def get(self, tag: str, key: Any) -> Any:
|
def get(self, tag: str, key: Any) -> Any:
|
||||||
for t, k, v in self.cache:
|
for t, k, v in self.cache:
|
||||||
|
@ -52,3 +56,7 @@ class ModelCache:
|
||||||
self.cache[:] = self.cache[-self.limit :]
|
self.cache[:] = self.cache[-self.limit :]
|
||||||
else:
|
else:
|
||||||
logger.debug("model cache below limit, %s of %s", total, self.limit)
|
logger.debug("model cache below limit, %s of %s", total, self.limit)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def size(self):
|
||||||
|
return len(self.cache)
|
|
@ -0,0 +1,30 @@
|
||||||
|
import unittest
|
||||||
|
|
||||||
|
from onnx_web.server.model_cache import ModelCache
|
||||||
|
|
||||||
|
class TestStringMethods(unittest.TestCase):
|
||||||
|
def test_drop_existing(self):
|
||||||
|
cache = ModelCache(10)
|
||||||
|
cache.set("foo", ("bar",), {})
|
||||||
|
self.assertGreater(cache.size, 0)
|
||||||
|
self.assertEqual(cache.drop("foo", ("bar",)), 1)
|
||||||
|
|
||||||
|
def test_drop_missing(self):
|
||||||
|
cache = ModelCache(10)
|
||||||
|
cache.set("foo", ("bar",), {})
|
||||||
|
self.assertGreater(cache.size, 0)
|
||||||
|
self.assertEqual(cache.drop("foo", ("bin",)), 0)
|
||||||
|
|
||||||
|
def test_get_existing(self):
|
||||||
|
cache = ModelCache(10)
|
||||||
|
value = {}
|
||||||
|
cache.set("foo", ("bar",), value)
|
||||||
|
self.assertGreater(cache.size, 0)
|
||||||
|
self.assertIs(cache.get("foo", ("bar",)), value)
|
||||||
|
|
||||||
|
def test_get_missing(self):
|
||||||
|
cache = ModelCache(10)
|
||||||
|
value = {}
|
||||||
|
cache.set("foo", ("bar",), value)
|
||||||
|
self.assertGreater(cache.size, 0)
|
||||||
|
self.assertIs(cache.get("foo", ("bin",)), None)
|
Loading…
Reference in New Issue