# HG changeset patch # User Sandro Knauß # Date 1326172045 -3600 # Node ID 3f41dfd7cb340042d202c5599e0914d17719ecec # Parent 4349f10d77a6863be40ead9a02b65a1d39bd4e46 ausformulieren des xmlrpc Testes diff -r 4349f10d77a6 -r 3f41dfd7cb34 tests/xmlrpc.py --- a/tests/xmlrpc.py Tue Jan 10 06:04:35 2012 +0100 +++ b/tests/xmlrpc.py Tue Jan 10 06:07:25 2012 +0100 @@ -1,19 +1,83 @@ -from twisted.internet import reactor -from twisted.web import server +from multiprocessing import Process, Pool +from sqlalchemy import create_engine + +from time import sleep + +from tempfile import mkdtemp +import shutil -from view.xmlrpc import getResource -from controller.database import createDatabase,WithSession -from model import User +from iro.controller.database import createDatabase,WithSession, DBDefer +import iro.controller.user as imuser +import iro.controller.database as db + +from iro.model import User + +from ngdatabase.mysql import Server,createConfig,Database + +class SampleDatabase(Database): + def createPassword(self): + self.password="test" + return self.password import logging logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(name)s(%(processName)s)-%(levelname)s: %(message)s') + +def xxxxx(userid): + import xmlrpclib + return xmlrpclib.ServerProxy('http://localhost:7080/RPC2').status(userid) + def main(): - reactor.listenTCP(7080, server.Site(getResource())) + from twisted.internet import reactor + from twisted.web import xmlrpc, server + + from iro.view.xmlrpc import getResource + + class XMLRPCDebug(xmlrpc.XMLRPC): + def xmlrpc_stop(self): + reactor.callLater(0.5,reactor.stop) + return "" + + root=getResource() + root.putChild('debug', XMLRPCDebug()) + reactor.listenTCP(7080, server.Site(root)) reactor.run() if __name__ == '__main__': - createDatabase() - with WithSession(autocommit=True) as session: - session.add(User(name='test',apikey='abcdef123456789')) - main() + tdir = mkdtemp(prefix='iro-mysql-') + try: + with open('%s/my.cnf'%tdir,'w') as cnf: + cnf.write(createConfig(tdir)) + s = Server('%s/my.cnf'%tdir) + s.create() + s.start() + d=SampleDatabase("test","test",'%s/my.cnf'%tdir) + d.create() + db.engine = create_engine('mysql://test:test@localhost/test?unix_socket=%s/socket'%tdir, echo=True) + dbdefer = DBDefer('mysql://test:test@localhost/test?unix_socket=%s/socket'%tdir, echo=True) + + + + @dbdefer + def getuser(userhash, session): + session.execute("SELECT SLEEP(10)") + return imuser._getuser(userhash = userhash, session=session) + imuser.dbdefer=dbdefer + imuser._getuser=imuser.getuser + imuser.getuser=getuser + + + try: + createDatabase() + with WithSession(autocommit=True) as session: + session.add(User(name='test',apikey='abcdef123456789')) + p = Process(target=main) + p.start() + sleep(1) + pool=Pool(5) + print pool.map(xxxxx, ('abcdef123456789',)*25) + p.join() + finally: + s.stop() + finally: + shutil.rmtree(tdir)