async def test_locking_dogpile_lease_expiration(self, mocker, cache): mocker.spy(cache, 'get') mocker.spy(cache, 'set') decorator = cached_stampede(ttl=10, lease=1) await asyncio.gather( decorator(stub)(1, seconds=2), decorator(stub)(1, seconds=2)) assert cache.get.call_count == 4 assert cache.set.call_count == 2
async def test_cached_stampede(self, mocker, cache): mocker.spy(cache, "get") mocker.spy(cache, "set") decorator = cached_stampede(ttl=10, lease=2) await asyncio.gather(decorator(stub)(0.5), decorator(stub)(0.5)) cache.get.assert_called_with("acceptance.test_decoratorsstub(0.5,)[]") assert cache.get.call_count == 4 cache.set.assert_called_with("acceptance.test_decoratorsstub(0.5,)[]", mock.ANY, ttl=10) assert cache.set.call_count == 1
def test_init(self): c = cached_stampede( lease=3, ttl=1, key="key", key_builder="fn", cache=SimpleMemoryCache, plugins=None, alias=None, noself=False, namespace="test") assert c.ttl == 1 assert c.key == "key" assert c.key_builder == "fn" assert c.cache is None assert c._cache == SimpleMemoryCache assert c._serializer is None assert c.lease == 3 assert c._kwargs == {'namespace': 'test'}
def test_inheritance(self): assert isinstance(cached_stampede(), cached)
def decorator(self, mocker, mock_cache): with patch("aiocache.decorators._get_cache", return_value=mock_cache): yield cached_stampede()