Source code for sqlobject.tests.test_cache
from sqlobject import SQLObject, StringCol
from sqlobject.cache import CacheSet
from .dbtest import setupClass
[docs]class Something(object):
pass
[docs]def test_purge1():
x = CacheSet()
y = Something()
obj = x.get(1, y.__class__)
assert obj is None
x.put(1, y.__class__, y)
x.finishPut(y.__class__)
j = x.get(1, y.__class__)
assert j == y
x.expire(1, y.__class__)
j = x.get(1, y.__class__)
assert j is None
x.finishPut(y.__class__)
j = x.get(1, y.__class__)
assert j is None
x.finishPut(y.__class__)
[docs]class CacheTest(SQLObject):
name = StringCol(alternateID=True, length=100)
[docs]def test_cache():
setupClass(CacheTest)
s = CacheTest(name='foo')
obj_id = id(s)
s_id = s.id
assert CacheTest.get(s_id) is s
assert not s.sqlmeta.expired
CacheTest.sqlmeta.expireAll()
assert s.sqlmeta.expired
CacheTest.sqlmeta.expireAll()
s1 = CacheTest.get(s_id)
# We should have a new object:
assert id(s1) != obj_id
obj_id2 = id(s1)
CacheTest._connection.expireAll()
s2 = CacheTest.get(s_id)
assert id(s2) != obj_id and id(s2) != obj_id2
[docs]def test_cache_cull():
setupClass(CacheTest)
s = CacheTest(name='test_cache_create')
for count in range(s._connection.cache.caches['CacheTest'].cullFrequency):
CacheTest(name='test_cache_create %d' % count)
assert len(s._connection.cache.caches['CacheTest'].cache) < \
s._connection.cache.caches['CacheTest'].cullFrequency