summaryrefslogtreecommitdiff
path: root/test/aaa_profiling/test_memusage.py
diff options
context:
space:
mode:
authorTaavi Burns <taavi.burns@gmail.com>2010-11-19 17:44:39 -0500
committerTaavi Burns <taavi.burns@gmail.com>2010-11-19 17:44:39 -0500
commitf19d7e5b972e60c843acb3389e8ae07eb6043818 (patch)
tree05c6827df0297423636e436433aed8ca3e54fd7e /test/aaa_profiling/test_memusage.py
parente15fa0342d2ac83414c563abd8fd478251d4d35f (diff)
downloadsqlalchemy-f19d7e5b972e60c843acb3389e8ae07eb6043818.tar.gz
Fix memory leaks in the cprocessors DecimalResultProcessor, including tests. [ticket:1978]
Diffstat (limited to 'test/aaa_profiling/test_memusage.py')
-rw-r--r--test/aaa_profiling/test_memusage.py42
1 files changed, 41 insertions, 1 deletions
diff --git a/test/aaa_profiling/test_memusage.py b/test/aaa_profiling/test_memusage.py
index 5fa40a997..3fb6bfa55 100644
--- a/test/aaa_profiling/test_memusage.py
+++ b/test/aaa_profiling/test_memusage.py
@@ -7,10 +7,11 @@ from sqlalchemy.util import jython
import operator
from sqlalchemy.test import testing, engines
from sqlalchemy import MetaData, Integer, String, ForeignKey, \
- PickleType, create_engine, Unicode
+ PickleType, create_engine, Unicode, Float
from sqlalchemy.test.schema import Table, Column
import sqlalchemy as sa
from sqlalchemy.sql import column
+from sqlalchemy.processors import to_decimal_processor_factory
from sqlalchemy.test.util import gc_collect
import gc
import weakref
@@ -566,3 +567,42 @@ class MemUsageTest(EnsureZeroed):
cast.compile(dialect=dialect)
go()
+ def test_DecimalResultProcessor_processing(self):
+ metadata = MetaData(testing.db)
+
+ table1 = Table("mytable", metadata,
+ Column('col1', Integer, primary_key=True,
+ test_needs_autoincrement=True),
+ Column('col2', Float(asdecimal=True))
+ )
+
+ class Foo(object):
+ def __init__(self, col2):
+ self.col2 = col2
+
+ mapper(Foo, table1)
+ metadata.create_all()
+
+ session = create_session()
+ session.begin()
+ session.add(Foo(1.1))
+ session.commit()
+ session.close()
+ del session
+
+ @profile_memory
+ def go():
+ session = create_session()
+ session.query(Foo).all()
+ session.rollback()
+ session.close()
+ try:
+ go()
+ finally:
+ metadata.drop_all()
+
+ def test_DecimalResultProcessor_dealloc(self):
+ @profile_memory
+ def go():
+ to_decimal_processor_factory({}, 10)
+ go()