mirror of
https://git.datalinker.icu/vllm-project/vllm.git
synced 2025-12-09 05:34:55 +08:00
126 lines
3.1 KiB
Python
126 lines
3.1 KiB
Python
# SPDX-License-Identifier: Apache-2.0
|
|
# SPDX-FileCopyrightText: Copyright contributors to the vLLM project
|
|
from vllm.utils.cache import CacheInfo, LRUCache
|
|
|
|
|
|
class TestLRUCache(LRUCache):
|
|
def _on_remove(self, key, value):
|
|
if not hasattr(self, "_remove_counter"):
|
|
self._remove_counter = 0
|
|
self._remove_counter += 1
|
|
|
|
|
|
def test_lru_cache():
|
|
cache = TestLRUCache(3)
|
|
assert cache.stat() == CacheInfo(hits=0, total=0)
|
|
assert cache.stat(delta=True) == CacheInfo(hits=0, total=0)
|
|
|
|
cache.put(1, 1)
|
|
assert len(cache) == 1
|
|
|
|
cache.put(1, 1)
|
|
assert len(cache) == 1
|
|
|
|
cache.put(2, 2)
|
|
assert len(cache) == 2
|
|
|
|
cache.put(3, 3)
|
|
assert len(cache) == 3
|
|
assert set(cache.cache) == {1, 2, 3}
|
|
|
|
cache.put(4, 4)
|
|
assert len(cache) == 3
|
|
assert set(cache.cache) == {2, 3, 4}
|
|
assert cache._remove_counter == 1
|
|
|
|
assert cache.get(2) == 2
|
|
assert cache.stat() == CacheInfo(hits=1, total=1)
|
|
assert cache.stat(delta=True) == CacheInfo(hits=1, total=1)
|
|
|
|
assert cache[2] == 2
|
|
assert cache.stat() == CacheInfo(hits=2, total=2)
|
|
assert cache.stat(delta=True) == CacheInfo(hits=1, total=1)
|
|
|
|
cache.put(5, 5)
|
|
assert set(cache.cache) == {2, 4, 5}
|
|
assert cache._remove_counter == 2
|
|
|
|
assert cache.pop(5) == 5
|
|
assert len(cache) == 2
|
|
assert set(cache.cache) == {2, 4}
|
|
assert cache._remove_counter == 3
|
|
|
|
assert cache.get(-1) is None
|
|
assert cache.stat() == CacheInfo(hits=2, total=3)
|
|
assert cache.stat(delta=True) == CacheInfo(hits=0, total=1)
|
|
|
|
cache.pop(10)
|
|
assert len(cache) == 2
|
|
assert set(cache.cache) == {2, 4}
|
|
assert cache._remove_counter == 3
|
|
|
|
cache.get(10)
|
|
assert len(cache) == 2
|
|
assert set(cache.cache) == {2, 4}
|
|
assert cache._remove_counter == 3
|
|
|
|
cache.put(6, 6)
|
|
assert len(cache) == 3
|
|
assert set(cache.cache) == {2, 4, 6}
|
|
assert 2 in cache
|
|
assert 4 in cache
|
|
assert 6 in cache
|
|
|
|
cache.remove_oldest()
|
|
assert len(cache) == 2
|
|
assert set(cache.cache) == {2, 6}
|
|
assert cache._remove_counter == 4
|
|
|
|
cache.clear()
|
|
assert len(cache) == 0
|
|
assert cache._remove_counter == 6
|
|
assert cache.stat() == CacheInfo(hits=0, total=0)
|
|
assert cache.stat(delta=True) == CacheInfo(hits=0, total=0)
|
|
|
|
cache._remove_counter = 0
|
|
|
|
cache[1] = 1
|
|
assert len(cache) == 1
|
|
|
|
cache[1] = 1
|
|
assert len(cache) == 1
|
|
|
|
cache[2] = 2
|
|
assert len(cache) == 2
|
|
|
|
cache[3] = 3
|
|
assert len(cache) == 3
|
|
assert set(cache.cache) == {1, 2, 3}
|
|
|
|
cache[4] = 4
|
|
assert len(cache) == 3
|
|
assert set(cache.cache) == {2, 3, 4}
|
|
assert cache._remove_counter == 1
|
|
assert cache[2] == 2
|
|
|
|
cache[5] = 5
|
|
assert set(cache.cache) == {2, 4, 5}
|
|
assert cache._remove_counter == 2
|
|
|
|
del cache[5]
|
|
assert len(cache) == 2
|
|
assert set(cache.cache) == {2, 4}
|
|
assert cache._remove_counter == 3
|
|
|
|
cache.pop(10)
|
|
assert len(cache) == 2
|
|
assert set(cache.cache) == {2, 4}
|
|
assert cache._remove_counter == 3
|
|
|
|
cache[6] = 6
|
|
assert len(cache) == 3
|
|
assert set(cache.cache) == {2, 4, 6}
|
|
assert 2 in cache
|
|
assert 4 in cache
|
|
assert 6 in cache
|