added caching tests and minor rewtite
This commit is contained in:
@@ -1 +1 @@
|
|||||||
Version 2.0.8 (2012-09-08 15:46:21) stable
|
Version 2.0.8 (2012-09-08 16:04:03) stable
|
||||||
|
|||||||
+6
-8
@@ -1551,22 +1551,20 @@ class BaseAdapter(ConnectionPool):
|
|||||||
return 'SELECT %s %s FROM %s%s%s;' % \
|
return 'SELECT %s %s FROM %s%s%s;' % \
|
||||||
(sql_s, sql_f, sql_t, sql_w, sql_o)
|
(sql_s, sql_f, sql_t, sql_w, sql_o)
|
||||||
|
|
||||||
def _select_aux2(self,sql):
|
|
||||||
self.execute(sql)
|
|
||||||
return self.cursor.fetchall()
|
|
||||||
|
|
||||||
def _select_aux(self,sql,fields,attributes):
|
def _select_aux(self,sql,fields,attributes):
|
||||||
args_get = attributes.get
|
args_get = attributes.get
|
||||||
cache = args_get('cache',None)
|
cache = args_get('cache',None)
|
||||||
if not cache:
|
if not cache:
|
||||||
rows = self._select_aux2(sql)
|
self.execute(sql)
|
||||||
|
rows = self.cursor.fetchall()
|
||||||
else:
|
else:
|
||||||
(cache_model, time_expire) = cache
|
(cache_model, time_expire) = cache
|
||||||
key = self.uri + '/' + sql + '/rows'
|
key = self.uri + '/' + sql + '/rows'
|
||||||
if len(key)>200: key = hashlib.md5(key).hexdigest()
|
if len(key)>200: key = hashlib.md5(key).hexdigest()
|
||||||
rows = cache_model(key,
|
def _select_aux2():
|
||||||
lambda sql=sql: self._select_aux2(sql),
|
self.execute(sql)
|
||||||
time_expire)
|
return self.cursor.fetchall()
|
||||||
|
rows = cache_model(key,_select_aux2,time_expire)
|
||||||
if isinstance(rows,tuple):
|
if isinstance(rows,tuple):
|
||||||
rows = list(rows)
|
rows = list(rows)
|
||||||
limitby = args_get('limitby', None) or (0,)
|
limitby = args_get('limitby', None) or (0,)
|
||||||
|
|||||||
+17
-11
@@ -422,17 +422,23 @@ class TestMinMaxSum(unittest.TestCase):
|
|||||||
db.t.drop()
|
db.t.drop()
|
||||||
|
|
||||||
|
|
||||||
#class TestCache(unittest.
|
class TestCache(unittest.TestCase):
|
||||||
# def testRun(self):
|
def testRun(self):
|
||||||
# cache = cache.ram
|
from gluon.cache import CacheInRam
|
||||||
# db = DAL('sqlite:memory:')
|
cache = CacheInRam()
|
||||||
# db.define_table('t', Field('a'))
|
db = DAL('sqlite:memory:')
|
||||||
# db.t.insert(a='1')
|
db.define_table('t', Field('a'))
|
||||||
# r1 = db().select(db.t.ALL, cache=(cache, 1000))
|
db.t.insert(a='1')
|
||||||
# db.t.insert(a='1')
|
r0 = db().select(db.t.ALL)
|
||||||
# r2 = db().select(db.t.ALL, cache=(cache, 1000))
|
r1 = db().select(db.t.ALL, cache=(cache, 1000))
|
||||||
# self.assertEqual(r1.response, r2.response)
|
self.assertEqual(len(r0),len(r1))
|
||||||
# db.t.drop()
|
r2 = db().select(db.t.ALL, cache=(cache, 1000))
|
||||||
|
self.assertEqual(len(r0),len(r2))
|
||||||
|
r3 = db().select(db.t.ALL, cache=(cache, 1000), cacheable=True)
|
||||||
|
self.assertEqual(len(r0),len(r3))
|
||||||
|
r4 = db().select(db.t.ALL, cache=(cache, 1000), cacheable=True)
|
||||||
|
self.assertEqual(len(r0),len(r4))
|
||||||
|
db.t.drop()
|
||||||
|
|
||||||
|
|
||||||
class TestMigrations(unittest.TestCase):
|
class TestMigrations(unittest.TestCase):
|
||||||
|
|||||||
Reference in New Issue
Block a user