diff -r 214fddcf7133 -r fae3fdfece65 tests/dbtestcase.py --- 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() +