added caching tests and minor rewtite

This commit is contained in:
mdipierro
2012-09-08 16:04:07 -05:00
parent da4b90b3b0
commit d2aa73570d
3 changed files with 24 additions and 20 deletions
+1 -1
View File
@@ -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
View File
@@ -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
View File
@@ -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):