Files
sqlalchemy/test/aaa_profiling/test_resultset.py
T
2011-01-02 14:23:42 -05:00

87 lines
3.1 KiB
Python

from sqlalchemy import *
from test.lib import *
NUM_FIELDS = 10
NUM_RECORDS = 1000
class ResultSetTest(TestBase, AssertsExecutionResults):
__only_on__ = 'sqlite'
@classmethod
def setup_class(cls):
global t, t2, metadata
metadata = MetaData(testing.db)
t = Table('table', metadata, *[Column('field%d' % fnum, String)
for fnum in range(NUM_FIELDS)])
t2 = Table('table2', metadata, *[Column('field%d' % fnum,
Unicode) for fnum in range(NUM_FIELDS)])
def setup(self):
metadata.create_all()
t.insert().execute([dict(('field%d' % fnum, u'value%d' % fnum)
for fnum in range(NUM_FIELDS)) for r_num in
range(NUM_RECORDS)])
t2.insert().execute([dict(('field%d' % fnum, u'value%d' % fnum)
for fnum in range(NUM_FIELDS)) for r_num in
range(NUM_RECORDS)])
# warm up type caches
t.select().execute().fetchall()
t2.select().execute().fetchall()
def teardown(self):
metadata.drop_all()
@profiling.function_call_count(versions={
'2.4': 13214,
'2.6':14416,
'2.7':14416,
'2.6+cextension': 345,
'2.7+cextension':345})
def test_string(self):
[tuple(row) for row in t.select().execute().fetchall()]
# sqlite3 returns native unicode. so shouldn't be an increase here.
@profiling.function_call_count(versions={
'2.7':14396,
'2.6':14396,
'2.6+cextension': 345,
'2.7+cextension':345})
def test_unicode(self):
[tuple(row) for row in t2.select().execute().fetchall()]
class ExecutionTest(TestBase):
__only_on__ = 'sqlite'
def test_minimal_connection_execute(self):
# create an engine without any instrumentation.
e = create_engine('sqlite://')
c = e.connect()
# ensure initial connect activities complete
c.execute("select 1")
@profiling.function_call_count(versions={'2.7':36, '2.6':35, '2.5':35,
'2.4':21, '3':34},
variance=.10)
def go():
c.execute("select 1")
go()
def test_minimal_engine_execute(self):
# create an engine without any instrumentation.
e = create_engine('sqlite://')
# ensure initial connect activities complete
e.execute("select 1")
@profiling.function_call_count(versions={'2.4':41, '2.5':58,
'2.6':58, '3':57,
'2.7':56,
'2.6+cextension':56},
variance=.05)
def go():
e.execute("select 1")
go()