summaryrefslogtreecommitdiff
path: root/test/aaa_profiling/test_memusage.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2014-07-09 18:59:16 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2014-07-09 18:59:16 -0400
commit1fc440393a612abcb837871003ac0d81721e1938 (patch)
treef29f3bccd3caccd72ad86ab0ed3a947cf804d3b7 /test/aaa_profiling/test_memusage.py
parent5407ec9d389cfa1cdd4ed4b82ba311085132d9db (diff)
downloadsqlalchemy-1fc440393a612abcb837871003ac0d81721e1938.tar.gz
- fully flake8 test/aaa_profiling
Diffstat (limited to 'test/aaa_profiling/test_memusage.py')
-rw-r--r--test/aaa_profiling/test_memusage.py249
1 files changed, 139 insertions, 110 deletions
diff --git a/test/aaa_profiling/test_memusage.py b/test/aaa_profiling/test_memusage.py
index f9a95c3d8..9e139124a 100644
--- a/test/aaa_profiling/test_memusage.py
+++ b/test/aaa_profiling/test_memusage.py
@@ -19,13 +19,19 @@ import gc
from sqlalchemy.testing import fixtures
import weakref
+
class A(fixtures.ComparableEntity):
pass
+
+
class B(fixtures.ComparableEntity):
pass
+
+
class ASub(A):
pass
+
def profile_memory(maxtimes=50):
def decorate(func):
# run the test N times. if length of gc.get_objects()
@@ -89,16 +95,20 @@ def profile_memory(maxtimes=50):
return profile
return decorate
+
def assert_no_mappers():
clear_mappers()
gc_collect()
assert len(_mapper_registry) == 0
+
class EnsureZeroed(fixtures.ORMTest):
+
def setup(self):
_sessions.clear()
_mapper_registry.clear()
+
class MemUsageTest(EnsureZeroed):
__requires__ = 'cpython',
@@ -111,6 +121,7 @@ class MemUsageTest(EnsureZeroed):
pass
x = []
+
@profile_memory(maxtimes=10)
def go():
x[-1:] = [Foo(), Foo(), Foo(), Foo(), Foo(), Foo()]
@@ -120,22 +131,22 @@ class MemUsageTest(EnsureZeroed):
metadata = MetaData(testing.db)
table1 = Table("mytable", metadata,
- Column('col1', Integer, primary_key=True,
- test_needs_autoincrement=True),
- Column('col2', String(30)))
+ Column('col1', Integer, primary_key=True,
+ test_needs_autoincrement=True),
+ Column('col2', String(30)))
table2 = Table("mytable2", metadata,
- Column('col1', Integer, primary_key=True,
- test_needs_autoincrement=True),
- Column('col2', String(30)),
- Column('col3', Integer, ForeignKey("mytable.col1")))
+ Column('col1', Integer, primary_key=True,
+ test_needs_autoincrement=True),
+ Column('col2', String(30)),
+ Column('col3', Integer, ForeignKey("mytable.col1")))
metadata.create_all()
m1 = mapper(A, table1, properties={
- "bs":relationship(B, cascade="all, delete",
- order_by=table2.c.col1)},
- order_by=table1.c.col1)
+ "bs": relationship(B, cascade="all, delete",
+ order_by=table2.c.col1)},
+ order_by=table1.c.col1)
m2 = mapper(B, table2)
m3 = mapper(A, table1, non_primary=True)
@@ -149,7 +160,7 @@ class MemUsageTest(EnsureZeroed):
a1.bs.append(B(col2="b1"))
a1.bs.append(B(col2="b2"))
a3.bs.append(B(col2="b3"))
- for x in [a1,a2,a3]:
+ for x in [a1, a2, a3]:
sess.add(x)
sess.flush()
sess.expunge_all()
@@ -189,37 +200,37 @@ class MemUsageTest(EnsureZeroed):
metadata = MetaData(testing.db)
table1 = Table("mytable", metadata,
- Column('col1', Integer, primary_key=True,
- test_needs_autoincrement=True),
- Column('col2', String(30)))
+ Column('col1', Integer, primary_key=True,
+ test_needs_autoincrement=True),
+ Column('col2', String(30)))
table2 = Table("mytable2", metadata,
- Column('col1', Integer, primary_key=True,
- test_needs_autoincrement=True),
- Column('col2', String(30)),
- Column('col3', Integer, ForeignKey("mytable.col1")))
+ Column('col1', Integer, primary_key=True,
+ test_needs_autoincrement=True),
+ Column('col2', String(30)),
+ Column('col3', Integer, ForeignKey("mytable.col1")))
metadata.create_all()
m1 = mapper(A, table1, properties={
- "bs":relationship(B, cascade="all, delete",
- order_by=table2.c.col1)},
- order_by=table1.c.col1,
- _compiled_cache_size=10
- )
+ "bs": relationship(B, cascade="all, delete",
+ order_by=table2.c.col1)},
+ order_by=table1.c.col1,
+ _compiled_cache_size=10
+ )
m2 = mapper(B, table2,
- _compiled_cache_size=10
- )
+ _compiled_cache_size=10
+ )
m3 = mapper(A, table1, non_primary=True)
@profile_memory()
def go():
engine = engines.testing_engine(
- options={'logging_name':'FOO',
- 'pool_logging_name':'BAR',
- 'use_reaper':False}
- )
+ options={'logging_name': 'FOO',
+ 'pool_logging_name': 'BAR',
+ 'use_reaper': False}
+ )
sess = create_session(bind=engine)
a1 = A(col2="a1")
@@ -228,7 +239,7 @@ class MemUsageTest(EnsureZeroed):
a1.bs.append(B(col2="b1"))
a1.bs.append(B(col2="b2"))
a3.bs.append(B(col2="b3"))
- for x in [a1,a2,a3]:
+ for x in [a1, a2, a3]:
sess.add(x)
sess.flush()
sess.expunge_all()
@@ -277,19 +288,19 @@ class MemUsageTest(EnsureZeroed):
type_ = args[0](*args[1:])
bp = type_._cached_bind_processor(eng.dialect)
rp = type_._cached_result_processor(eng.dialect, 0)
+ bp, rp # strong reference
go()
assert not eng.dialect._type_memos
-
def test_many_updates(self):
metadata = MetaData(testing.db)
wide_table = Table('t', metadata,
- Column('id', Integer, primary_key=True,
- test_needs_autoincrement=True),
- *[Column('col%d' % i, Integer) for i in range(10)]
- )
+ Column('id', Integer, primary_key=True,
+ test_needs_autoincrement=True),
+ *[Column('col%d' % i, Integer) for i in range(10)]
+ )
class Wide(object):
pass
@@ -330,10 +341,17 @@ class MemUsageTest(EnsureZeroed):
@testing.crashes('mysql+cymysql', 'blocking')
def test_unicode_warnings(self):
metadata = MetaData(testing.db)
- table1 = Table('mytable', metadata, Column('col1', Integer,
- primary_key=True,
- test_needs_autoincrement=True), Column('col2',
- Unicode(30)))
+ table1 = Table(
+ 'mytable',
+ metadata,
+ Column(
+ 'col1',
+ Integer,
+ primary_key=True,
+ test_needs_autoincrement=True),
+ Column(
+ 'col2',
+ Unicode(30)))
metadata.create_all()
i = [1]
@@ -348,7 +366,7 @@ class MemUsageTest(EnsureZeroed):
# this warning shouldn't clog up memory.
testing.db.execute(table1.select().where(table1.c.col2
- == 'foo%d' % i[0]))
+ == 'foo%d' % i[0]))
i[0] += 1
try:
go()
@@ -359,24 +377,24 @@ class MemUsageTest(EnsureZeroed):
metadata = MetaData(testing.db)
table1 = Table("mytable", metadata,
- Column('col1', Integer, primary_key=True,
- test_needs_autoincrement=True),
- Column('col2', String(30)))
+ Column('col1', Integer, primary_key=True,
+ test_needs_autoincrement=True),
+ Column('col2', String(30)))
table2 = Table("mytable2", metadata,
- Column('col1', Integer, primary_key=True,
- test_needs_autoincrement=True),
- Column('col2', String(30)),
- Column('col3', Integer, ForeignKey("mytable.col1")))
+ Column('col1', Integer, primary_key=True,
+ test_needs_autoincrement=True),
+ Column('col2', String(30)),
+ Column('col3', Integer, ForeignKey("mytable.col1")))
@profile_memory()
def go():
- m1 = mapper(A, table1, properties={
- "bs":relationship(B, order_by=table2.c.col1)
+ mapper(A, table1, properties={
+ "bs": relationship(B, order_by=table2.c.col1)
})
- m2 = mapper(B, table2)
+ mapper(B, table2)
- m3 = mapper(A, table1, non_primary=True)
+ mapper(A, table1, non_primary=True)
sess = create_session()
a1 = A(col2="a1")
@@ -385,7 +403,7 @@ class MemUsageTest(EnsureZeroed):
a1.bs.append(B(col2="b1"))
a1.bs.append(B(col2="b2"))
a3.bs.append(B(col2="b3"))
- for x in [a1,a2,a3]:
+ for x in [a1, a2, a3]:
sess.add(x)
sess.flush()
sess.expunge_all()
@@ -416,26 +434,26 @@ class MemUsageTest(EnsureZeroed):
metadata = MetaData(testing.db)
a = Table("a", metadata,
- Column('id', Integer, primary_key=True,
- test_needs_autoincrement=True),
- Column('bid', Integer, ForeignKey('b.id')),
- Column('type', String(30))
- )
+ Column('id', Integer, primary_key=True,
+ test_needs_autoincrement=True),
+ Column('bid', Integer, ForeignKey('b.id')),
+ Column('type', String(30))
+ )
asub = Table("asub", metadata,
- Column('id', Integer, ForeignKey('a.id'),
- primary_key=True),
- Column('data', String(30)))
+ Column('id', Integer, ForeignKey('a.id'),
+ primary_key=True),
+ Column('data', String(30)))
b = Table("b", metadata,
- Column('id', Integer, primary_key=True,
- test_needs_autoincrement=True),
- )
+ Column('id', Integer, primary_key=True,
+ test_needs_autoincrement=True),
+ )
mapper(A, a, polymorphic_identity='a',
- polymorphic_on=a.c.type)
- mapper(ASub, asub, inherits=A,polymorphic_identity='asub')
- m1 = mapper(B, b, properties={
- 'as_':relationship(A)
+ polymorphic_on=a.c.type)
+ mapper(ASub, asub, inherits=A, polymorphic_identity='asub')
+ mapper(B, b, properties={
+ 'as_': relationship(A)
})
metadata.create_all()
@@ -465,11 +483,12 @@ class MemUsageTest(EnsureZeroed):
def test_path_registry(self):
metadata = MetaData()
a = Table("a", metadata,
- Column('id', Integer, primary_key=True),
- Column('foo', Integer),
- Column('bar', Integer)
- )
+ Column('id', Integer, primary_key=True),
+ Column('foo', Integer),
+ Column('bar', Integer)
+ )
m1 = mapper(A, a)
+
@profile_memory()
def go():
ma = sa.inspect(aliased(A))
@@ -481,21 +500,22 @@ class MemUsageTest(EnsureZeroed):
metadata = MetaData(testing.db)
table1 = Table("mytable", metadata,
- Column('col1', Integer, primary_key=True,
- test_needs_autoincrement=True),
- Column('col2', String(30))
- )
+ Column('col1', Integer, primary_key=True,
+ test_needs_autoincrement=True),
+ Column('col2', String(30))
+ )
table2 = Table("mytable2", metadata,
- Column('col1', Integer, ForeignKey('mytable.col1'),
- primary_key=True, test_needs_autoincrement=True),
- Column('col3', String(30)),
- )
+ Column('col1', Integer, ForeignKey('mytable.col1'),
+ primary_key=True, test_needs_autoincrement=True),
+ Column('col3', String(30)),
+ )
@profile_memory()
def go():
class A(fixtures.ComparableEntity):
pass
+
class B(A):
pass
@@ -511,7 +531,7 @@ class MemUsageTest(EnsureZeroed):
a2 = A()
b1 = B(col3='b1')
b2 = B(col3='b2')
- for x in [a1,a2,b1, b2]:
+ for x in [a1, a2, b1, b2]:
sess.add(x)
sess.flush()
sess.expunge_all()
@@ -542,32 +562,33 @@ class MemUsageTest(EnsureZeroed):
metadata = MetaData(testing.db)
table1 = Table("mytable", metadata,
- Column('col1', Integer, primary_key=True,
- test_needs_autoincrement=True),
- Column('col2', String(30))
- )
+ Column('col1', Integer, primary_key=True,
+ test_needs_autoincrement=True),
+ Column('col2', String(30))
+ )
table2 = Table("mytable2", metadata,
- Column('col1', Integer, primary_key=True,
- test_needs_autoincrement=True),
- Column('col2', String(30)),
- )
+ Column('col1', Integer, primary_key=True,
+ test_needs_autoincrement=True),
+ Column('col2', String(30)),
+ )
table3 = Table('t1tot2', metadata,
- Column('t1', Integer, ForeignKey('mytable.col1')),
- Column('t2', Integer, ForeignKey('mytable2.col1')),
- )
+ Column('t1', Integer, ForeignKey('mytable.col1')),
+ Column('t2', Integer, ForeignKey('mytable2.col1')),
+ )
@profile_memory()
def go():
class A(fixtures.ComparableEntity):
pass
+
class B(fixtures.ComparableEntity):
pass
mapper(A, table1, properties={
- 'bs':relationship(B, secondary=table3,
- backref='as', order_by=table3.c.t1)
+ 'bs': relationship(B, secondary=table3,
+ backref='as', order_by=table3.c.t1)
})
mapper(B, table2)
@@ -578,7 +599,7 @@ class MemUsageTest(EnsureZeroed):
b2 = B(col2='b2')
a1.bs.append(b1)
a2.bs.append(b2)
- for x in [a1,a2]:
+ for x in [a1, a2]:
sess.add(x)
sess.flush()
sess.expunge_all()
@@ -611,7 +632,8 @@ class MemUsageTest(EnsureZeroed):
m = self.metadata
t = Table('t', m, Column('x', Integer), Column('y', Integer))
m.create_all(e)
- e.execute(t.insert(), {"x":1, "y":1})
+ e.execute(t.insert(), {"x": 1, "y": 1})
+
@profile_memory()
def go():
r = e.execute(t.alias().select())
@@ -626,15 +648,25 @@ class MemUsageTest(EnsureZeroed):
@testing.crashes('mysql+cymysql', 'blocking')
def test_join_cache(self):
metadata = MetaData(testing.db)
- table1 = Table('table1', metadata, Column('id', Integer,
- primary_key=True,
- test_needs_autoincrement=True), Column('data',
- String(30)))
- table2 = Table('table2', metadata, Column('id', Integer,
- primary_key=True,
- test_needs_autoincrement=True), Column('data',
- String(30)), Column('t1id', Integer,
- ForeignKey('table1.id')))
+ table1 = Table(
+ 'table1',
+ metadata,
+ Column(
+ 'id',
+ Integer,
+ primary_key=True,
+ test_needs_autoincrement=True),
+ Column(
+ 'data',
+ String(30)))
+ table2 = Table(
+ 'table2', metadata,
+ Column(
+ 'id', Integer, primary_key=True,
+ test_needs_autoincrement=True),
+ Column(
+ 'data', String(30)), Column(
+ 't1id', Integer, ForeignKey('table1.id')))
class Foo(object):
pass
@@ -642,8 +674,8 @@ class MemUsageTest(EnsureZeroed):
class Bar(object):
pass
- mapper(Foo, table1, properties={'bars'
- : relationship(mapper(Bar, table2))})
+ mapper(Foo, table1, properties={
+ 'bars': relationship(mapper(Bar, table2))})
metadata.create_all()
session = sessionmaker()
@@ -658,11 +690,10 @@ class MemUsageTest(EnsureZeroed):
finally:
metadata.drop_all()
-
-
def test_type_compile(self):
from sqlalchemy.dialects.sqlite.base import dialect as SQLiteDialect
cast = sa.cast(column('x'), sa.Integer)
+
@profile_memory()
def go():
dialect = SQLiteDialect()
@@ -689,5 +720,3 @@ class MemUsageTest(EnsureZeroed):
def go():
to_unicode_processor_factory('utf8')
go()
-
-