--- a/tests/dbtestcase.py Wed Feb 08 14:19:46 2012 +0100
+++ b/tests/dbtestcase.py Thu Feb 09 17:34:47 2012 +0100
@@ -1,9 +1,10 @@
-import unittest
+from twisted.trial import unittest
from sqlalchemy import create_engine, pool
from tempfile import mkdtemp
-import shutil
+from shutil import rmtree
+import atexit
from ngdatabase.mysql import Server, createConfig, Database
from iro.model import schema, setEngine
@@ -16,8 +17,11 @@
'''a TestCase with DB connection
you have to set self.session manually in setUp'''
def __init__(self,*args,**kwargs):
+ unittest.TestCase.__init__(self,*args,**kwargs)
self.engine = md.engine
- unittest.TestCase.__init__(self,*args,**kwargs)
+
+ def setUp(self):
+ md.setUp()
def tearDown(self):
self.__cleanDB()
@@ -32,38 +36,40 @@
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:
+class ModuleData(object):
def __init__(self):
+ self.create()
+
+ def close(self):
+ self.server.stop()
+ rmtree(self.tdir)
+ self.valid= False
+
+ def create(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)
+ self.vaild = False
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)
- setEngine(self.engine)
+ if not self.vaild:
+ 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)
+ setEngine(self.engine)
+ self.vaild = True
- def tearDown(self):
- self.server.stop()
- shutil.rmtree(self.tdir)
-
md=ModuleData()
-
-def setUpModule():
- md.setUp()
-
-def tearDownModule():
- md.tearDown()
-
+atexit.register(md.close)