tests/dbtestcase.py
branchdevel
changeset 134 fae3fdfece65
parent 131 c51c3e8c3ec0
child 135 f8640c663e3e
--- a/tests/dbtestcase.py	Mon Feb 06 12:32:14 2012 +0100
+++ b/tests/dbtestcase.py	Mon Feb 06 14:39:33 2012 +0100
@@ -1,13 +1,22 @@
 import unittest
 
+from sqlalchemy import create_engine, pool
+from tempfile import mkdtemp
+import shutil
+
+from ngdatabase.mysql import Server, createConfig, Database
+
 from iro.model import schema
 from iro.model.utils import WithSession
+from iro.model.schema import Base
+
+from iro.controller.pool import dbPool
 
 class DBTestCase(unittest.TestCase):
     '''a TestCase with DB connection
     you have to set self.session manually in setUp'''
     def __init__(self,*args,**kwargs):
-        self.engine=None
+        self.engine = md.engine
         unittest.TestCase.__init__(self,*args,**kwargs)
 
     def tearDown(self):
@@ -22,3 +31,38 @@
         with self.session() as session:
             for table in schema.__tables__:
                 session.query(getattr(schema,table)).delete()
+
+class SampleDatabase(Database):
+    def createPassword(self):
+        self.password="test"
+        return self.password
+
+class ModuleData:
+    def __init__(self):
+        self.tdir = mkdtemp(prefix='iro-mysql-')
+        self.server = Server('%s/my.cnf'%self.tdir)
+        self.db = SampleDatabase("test","test",'%s/my.cnf'%self.tdir)
+        self.engine = create_engine('mysql://test:test@localhost/test?unix_socket=%s/socket'%self.tdir,
+                poolclass = pool.SingletonThreadPool,  pool_size=dbPool.maxthreads, )#echo=True)
+
+    def setUp(self):
+        with open('%s/my.cnf'%self.tdir,'w') as cnf:
+            cnf.write(createConfig(self.tdir))
+        self.server.create()
+        self.server.start()
+        self.db.create()
+        Base.metadata.create_all(self.engine)
+    
+    def tearDown(self):
+        self.server.stop()
+        shutil.rmtree(self.tdir)
+ 
+
+md=ModuleData()
+
+def setUpModule():
+    md.setUp()
+
+def tearDownModule():
+    md.tearDown()
+