summaryrefslogtreecommitdiff
path: root/test/transaction.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2006-05-28 17:46:45 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2006-05-28 17:46:45 +0000
commit6b03def6cc293bd0117a21999706f43e675f1005 (patch)
tree7937b0716ed40b3cae6de12f58d94eb2d89ebac7 /test/transaction.py
parentb62451e321574f4a39ac0deee01f42c5846b2d38 (diff)
downloadsqlalchemy-6b03def6cc293bd0117a21999706f43e675f1005.tar.gz
TLEngine needed a partial rewrite....
Diffstat (limited to 'test/transaction.py')
-rw-r--r--test/transaction.py63
1 files changed, 63 insertions, 0 deletions
diff --git a/test/transaction.py b/test/transaction.py
index d76d7e0f4..244da1649 100644
--- a/test/transaction.py
+++ b/test/transaction.py
@@ -5,6 +5,7 @@ import tables
db = testbase.db
from sqlalchemy import *
+
class TransactionTest(testbase.PersistTest):
def setUpAll(self):
global users, metadata
@@ -34,6 +35,23 @@ class TransactionTest(testbase.PersistTest):
assert len(result.fetchall()) == 0
connection.close()
+ def testnesting(self):
+ connection = testbase.db.connect()
+ transaction = connection.begin()
+ connection.execute(users.insert(), user_id=1, user_name='user1')
+ connection.execute(users.insert(), user_id=2, user_name='user2')
+ connection.execute(users.insert(), user_id=3, user_name='user3')
+ trans2 = connection.begin()
+ connection.execute(users.insert(), user_id=4, user_name='user4')
+ connection.execute(users.insert(), user_id=5, user_name='user5')
+ trans2.commit()
+ transaction.rollback()
+ self.assert_(connection.scalar("select count(1) from query_users") == 0)
+
+ result = connection.execute("select * from query_users")
+ assert len(result.fetchall()) == 0
+ connection.close()
+
class AutoRollbackTest(testbase.PersistTest):
def setUpAll(self):
global metadata
@@ -58,6 +76,51 @@ class AutoRollbackTest(testbase.PersistTest):
# comment out the rollback in pool/ConnectionFairy._close() to see !
users.drop(conn2)
conn2.close()
+
+class TLTransactionTest(testbase.PersistTest):
+ def setUpAll(self):
+ global users, metadata, tlengine
+ tlengine = create_engine(testbase.db_uri, strategy='threadlocal', echo=True)
+ metadata = MetaData()
+ users = Table('query_users', metadata,
+ Column('user_id', INT, primary_key = True),
+ Column('user_name', VARCHAR(20)),
+ )
+ users.create(tlengine)
+ def tearDown(self):
+ tlengine.execute(users.delete())
+ def tearDownAll(self):
+ users.drop(tlengine)
+ tlengine.dispose()
+
+ @testbase.unsupported('mysql')
+ def testrollback(self):
+ """test a basic rollback"""
+ tlengine.begin()
+ tlengine.execute(users.insert(), user_id=1, user_name='user1')
+ tlengine.execute(users.insert(), user_id=2, user_name='user2')
+ tlengine.execute(users.insert(), user_id=3, user_name='user3')
+ tlengine.rollback()
+
+ result = tlengine.execute("select * from query_users")
+ assert len(result.fetchall()) == 0
+
+ @testbase.unsupported('mysql', 'sqlite')
+ def testnesting(self):
+ """test a basic rollback"""
+ external_connection = tlengine.connect()
+ self.assert_(external_connection.connection is not tlengine.contextual_connect().connection)
+ tlengine.begin()
+ tlengine.execute(users.insert(), user_id=1, user_name='user1')
+ tlengine.execute(users.insert(), user_id=2, user_name='user2')
+ tlengine.execute(users.insert(), user_id=3, user_name='user3')
+ tlengine.begin()
+ tlengine.execute(users.insert(), user_id=4, user_name='user4')
+ tlengine.execute(users.insert(), user_id=5, user_name='user5')
+ tlengine.commit()
+ tlengine.rollback()
+ self.assert_(external_connection.scalar("select count(1) from query_users") == 0)
+ external_connection.close()
if __name__ == "__main__":
testbase.main()