--- a/tests/xmlrpc.py Tue Jan 10 06:11:26 2012 +0100
+++ b/tests/xmlrpc.py Tue Jan 10 06:11:46 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)