Files
sqlalchemy/test/aaa_profiling/test_compiler.py
T
Mike Bayer 20cdc64588 trying different approaches to test layout. in this one, the testing modules
become an externally usable package but still remains within the main sqlalchemy parent package.
in this system, we use kind of an ugly hack to get the noseplugin imported outside of the
"sqlalchemy" package, while still making it available within sqlalchemy for usage by
third party libraries.
2012-09-27 02:37:33 -04:00

63 lines
1.8 KiB
Python

from sqlalchemy import *
from sqlalchemy.testing import *
from sqlalchemy.engine import default
class CompileTest(fixtures.TestBase, AssertsExecutionResults):
__requires__ = 'cpython',
@classmethod
def setup_class(cls):
global t1, t2, metadata
metadata = MetaData()
t1 = Table('t1', metadata,
Column('c1', Integer, primary_key=True),
Column('c2', String(30)))
t2 = Table('t2', metadata,
Column('c1', Integer, primary_key=True),
Column('c2', String(30)))
# do a "compile" ahead of time to load
# deferred imports
t1.insert().compile()
# go through all the TypeEngine
# objects in use and pre-load their _type_affinity
# entries.
for t in (t1, t2):
for c in t.c:
c.type._type_affinity
from sqlalchemy import types
for t in types._type_map.values():
t._type_affinity
cls.dialect = default.DefaultDialect()
@profiling.function_call_count()
def test_insert(self):
t1.insert().compile(dialect=self.dialect)
@profiling.function_call_count()
def test_update(self):
t1.update().compile(dialect=self.dialect)
def test_update_whereclause(self):
t1.update().where(t1.c.c2 == 12).compile(dialect=self.dialect)
@profiling.function_call_count()
def go():
t1.update().where(t1.c.c2 == 12).compile(dialect=self.dialect)
go()
def test_select(self):
# give some of the cached type values
# a chance to warm up
s = select([t1], t1.c.c2 == t2.c.c1)
s.compile(dialect=self.dialect)
@profiling.function_call_count()
def go():
s = select([t1], t1.c.c2 == t2.c.c1)
s.compile(dialect=self.dialect)
go()