File: test_compiler.py

package info (click to toggle)
sqlalchemy 1.0.15%2Bds1-1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 13,056 kB
  • ctags: 26,600
  • sloc: python: 169,901; ansic: 1,346; makefile: 260; xml: 17
file content (79 lines) | stat: -rw-r--r-- 2,434 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
from sqlalchemy.engine import default
from sqlalchemy.testing import fixtures, AssertsExecutionResults, profiling
from sqlalchemy import MetaData, Table, Column, Integer, String, select

t1 = t2 = None


class CompileTest(fixtures.TestBase, AssertsExecutionResults):
    __requires__ = 'cpython',
    __backend__ = True

    @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 list(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(variance=.15)
    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()

    def test_select_labels(self):
        # give some of the cached type values
        # a chance to warm up
        s = select([t1], t1.c.c2 == t2.c.c1).apply_labels()
        s.compile(dialect=self.dialect)

        @profiling.function_call_count()
        def go():
            s = select([t1], t1.c.c2 == t2.c.c1).apply_labels()
            s.compile(dialect=self.dialect)
        go()