async def test_do_not_cache_large_object(guillotina_main, loop): tm = mocks.MockTransactionManager() storage = tm._storage txn = Transaction(tm) cache = BasicCache(txn) txn._cache = cache ob = create_content() ob.foobar = "X" * cache.max_cache_record_size # push size above cache threshold storage.store(None, None, None, ob, txn) loaded = await txn.get(ob.__uuid__) assert id(loaded) != id(ob) assert loaded.__uuid__ == ob.__uuid__
async def test_do_not_cache_large_object(dummy_guillotina): tm = mocks.MockTransactionManager() storage = tm._storage txn = Transaction(tm) cache = MemoryCache(storage, txn) txn._cache = cache ob = create_content() ob.foobar = 'X' * cache.max_cache_record_size # push size above cache threshold storage.store(ob) loaded = await txn.get(ob._p_oid) assert id(loaded) != id(ob) assert loaded._p_oid == ob._p_oid assert len(cache._actions) == 0
async def test_cache_object(dummy_guillotina): tm = mocks.MockTransactionManager() storage = tm._storage txn = Transaction(tm) cache = MemoryCache(storage, txn) txn._cache = cache ob = create_content() storage.store(ob) loaded = await txn.get(ob._p_oid) assert id(loaded) != id(ob) assert loaded._p_oid == ob._p_oid assert cache._actions[0]['action'] == 'stored' # and load from cache await txn.get(ob._p_oid) assert cache._actions[-1]['action'] == 'loaded'
async def test_cache_object(guillotina_main, loop): tm = mocks.MockTransactionManager() storage = tm._storage txn = Transaction(tm) cache = BasicCache(txn) txn._cache = cache ob = create_content() storage.store(None, None, None, ob, txn) loaded = await txn.get(ob.__uuid__) assert id(loaded) != id(ob) assert loaded.__uuid__ == ob.__uuid__ assert cache._hits == 0 assert cache._misses == 1 # and load from cache await txn.get(ob.__uuid__) assert cache._hits == 1
async def test_cache_object_from_child(guillotina_main, loop): tm = mocks.MockTransactionManager() storage = tm._storage txn = Transaction(tm) cache = BasicCache(txn) txn._cache = cache ob = create_content() parent = create_content() ob.__parent__ = parent storage.store(None, None, None, parent, txn) storage.store(None, None, None, ob, txn) loaded = await txn.get_child(parent, ob.id) assert cache._hits == 0 loaded = await txn.get_child(parent, ob.id) assert cache._hits == 1 assert id(loaded) != id(ob) assert loaded.__uuid__ == ob.__uuid__
async def test_cache_object_from_child(dummy_guillotina): tm = mocks.MockTransactionManager() storage = tm._storage txn = Transaction(tm) cache = MemoryCache(storage, txn) txn._cache = cache ob = create_content() parent = create_content() ob.__parent__ = parent storage.store(parent) storage.store(ob) loaded = await txn.get_child(parent, ob.id) assert len(cache._actions) == 1 assert cache._actions[0]['action'] == 'stored' loaded = await txn.get_child(parent, ob.id) assert cache._actions[-1]['action'] == 'loaded' assert id(loaded) != id(ob) assert loaded._p_oid == ob._p_oid