pass
self.__tcount = 0
+ def _conn_closed(self):
+ if self.__tcount == 1:
+ self.__trans._trans.rollback()
+ self.reset()
+
def in_transaction(self):
return self.__tcount > 0
def close(self):
if self.__opencount == 1:
base.Connection.close(self)
+ self.__session._conn_closed()
self.__opencount -= 1
def _force_close(self):
def tearDownAll(self):
users.drop(tlengine)
tlengine.dispose()
+
+ def testclose(self):
+ """test that when connections are closed for real, transactions are rolled back and disposed."""
+
+ c = tlengine.contextual_connect()
+ c.begin()
+ assert tlengine.session.in_transaction()
+ assert hasattr(tlengine.session, '_TLSession__transaction')
+ assert hasattr(tlengine.session, '_TLSession__trans')
+ c.close()
+ assert not tlengine.session.in_transaction()
+ assert not hasattr(tlengine.session, '_TLSession__transaction')
+ assert not hasattr(tlengine.session, '_TLSession__trans')
def testrollback(self):
"""test a basic rollback"""
external_connection.close()
def testcommits(self):
+ assert tlengine.connect().execute("select count(1) from query_users").scalar() == 0
+
connection = tlengine.contextual_connect()
transaction = connection.begin()
connection.execute(users.insert(), user_id=1, user_name='user1')
transaction = connection.begin()
result = connection.execute("select * from query_users")
- assert len(result.fetchall()) == 3
+ l = result.fetchall()
+ assert len(l) == 3, "expected 3 got %d" % len(l)
transaction.commit()
def testrollback_off_conn(self):