merging devel
authorSandro Knauß <knauss@netzguerilla.net>
Tue, 10 Jan 2012 06:11:46 +0100
branchdevel
changeset 100 2c94da9e7036
parent 99 aa6eb84d96ce (current diff)
parent 95 3f41dfd7cb34 (diff)
child 101 97b745751d49
merging
--- 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)