server/test/unittest_extlite.py
branchstable
changeset 2053 fb156d69bfd9
child 2200 25bb65dc4559
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/server/test/unittest_extlite.py	Fri Jun 05 13:21:31 2009 +0200
@@ -0,0 +1,62 @@
+import threading, os, time
+
+from logilab.common.testlib import TestCase, unittest_main
+from logilab.common.db import get_connection
+
+class SQLiteTC(TestCase):
+    sqlite_file = '_extlite_test.sqlite'
+    def setUp(self):
+        cnx1 = get_connection('sqlite', database=self.sqlite_file)
+        print 'SET IP'
+        cu = cnx1.cursor()
+        cu.execute('CREATE TABLE toto(name integer);')
+        cnx1.commit()
+        cnx1.close()
+        
+    def tearDown(self):
+        try:
+            os.remove(self.sqlite_file)
+        except:
+            pass
+    def test(self):
+        lock = threading.Lock()
+        
+        def run_thread():
+            print 'run_thread'
+            cnx2 = get_connection('sqlite', database=self.sqlite_file)
+            lock.acquire()
+            print 't2 sel1'
+            cu = cnx2.cursor()
+            cu.execute('SELECT name FROM toto')
+            self.failIf(cu.fetchall())
+            cnx2.commit()
+            print 'done'
+            lock.release()
+            time.sleep(0.1)
+            lock.acquire()
+            print 't2 sel2'
+            cu.execute('SELECT name FROM toto')
+            self.failUnless(cu.fetchall())
+            print 'done'
+            lock.release()
+
+        cnx1 = get_connection('sqlite', database=self.sqlite_file)
+        lock.acquire()
+        thread = threading.Thread(target=run_thread)
+        thread.start()
+        cu = cnx1.cursor()
+        print 't1 sel'
+        cu.execute('SELECT name FROM toto')
+        print 'done'
+        lock.release()
+        time.sleep(0.1)
+        cnx1.commit()
+        lock.acquire()
+        print 't1 insert'
+        cu.execute("INSERT INTO toto(name) VALUES ('toto')")
+        cnx1.commit()
+        print 'done'
+        lock.release()
+
+if __name__ == '__main__':
+    unittest_main()