tests/xmlrpc.py
branchdevel
changeset 95 3f41dfd7cb34
parent 92 f479738b4879
child 102 85ac86f7ffc4
equal deleted inserted replaced
94:4349f10d77a6 95:3f41dfd7cb34
     1 from twisted.internet import reactor
     1 from multiprocessing import Process, Pool
     2 from twisted.web import server
     2 from sqlalchemy import create_engine
     3 
     3 
     4 from view.xmlrpc import getResource
     4 from time import sleep
     5 from controller.database import createDatabase,WithSession
     5 
     6 from model import User
     6 from tempfile import mkdtemp
       
     7 import shutil
       
     8 
       
     9 from iro.controller.database import createDatabase,WithSession, DBDefer
       
    10 import iro.controller.user as imuser
       
    11 import iro.controller.database as db
       
    12 
       
    13 from iro.model import User
       
    14 
       
    15 from ngdatabase.mysql import Server,createConfig,Database
       
    16 
       
    17 class SampleDatabase(Database):
       
    18     def createPassword(self):
       
    19         self.password="test"
       
    20         return self.password
     7 
    21 
     8 import logging
    22 import logging
     9 logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(name)s(%(processName)s)-%(levelname)s: %(message)s')
    23 logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(name)s(%(processName)s)-%(levelname)s: %(message)s')
    10 
    24 
       
    25 
       
    26 def xxxxx(userid):
       
    27     import xmlrpclib
       
    28     return xmlrpclib.ServerProxy('http://localhost:7080/RPC2').status(userid)
       
    29 
    11 def main():
    30 def main():
    12     reactor.listenTCP(7080, server.Site(getResource()))
    31     from twisted.internet import reactor
       
    32     from twisted.web import xmlrpc, server
       
    33     
       
    34     from iro.view.xmlrpc import getResource
       
    35     
       
    36     class XMLRPCDebug(xmlrpc.XMLRPC): 
       
    37         def xmlrpc_stop(self):
       
    38             reactor.callLater(0.5,reactor.stop)
       
    39             return ""
       
    40 
       
    41     root=getResource()
       
    42     root.putChild('debug', XMLRPCDebug())
       
    43     reactor.listenTCP(7080, server.Site(root))
    13     reactor.run()
    44     reactor.run()
    14 
    45 
    15 if __name__ == '__main__':
    46 if __name__ == '__main__':
    16     createDatabase()
    47     tdir = mkdtemp(prefix='iro-mysql-')
    17     with WithSession(autocommit=True) as session:
    48     try:
    18         session.add(User(name='test',apikey='abcdef123456789'))
    49         with open('%s/my.cnf'%tdir,'w') as cnf:
    19     main()
    50             cnf.write(createConfig(tdir))
       
    51         s = Server('%s/my.cnf'%tdir)
       
    52         s.create()
       
    53         s.start()
       
    54         d=SampleDatabase("test","test",'%s/my.cnf'%tdir)
       
    55         d.create()
       
    56         db.engine = create_engine('mysql://test:test@localhost/test?unix_socket=%s/socket'%tdir, echo=True)
       
    57         dbdefer = DBDefer('mysql://test:test@localhost/test?unix_socket=%s/socket'%tdir, echo=True)
       
    58 
       
    59 
       
    60 
       
    61         @dbdefer
       
    62         def getuser(userhash, session):
       
    63             session.execute("SELECT SLEEP(10)")
       
    64             return imuser._getuser(userhash = userhash, session=session) 
       
    65         imuser.dbdefer=dbdefer
       
    66         imuser._getuser=imuser.getuser
       
    67         imuser.getuser=getuser
       
    68 
       
    69 
       
    70         try:
       
    71             createDatabase()
       
    72             with WithSession(autocommit=True) as session:
       
    73                 session.add(User(name='test',apikey='abcdef123456789'))
       
    74             p = Process(target=main)
       
    75             p.start()
       
    76             sleep(1)
       
    77             pool=Pool(5)
       
    78             print pool.map(xxxxx, ('abcdef123456789',)*25)
       
    79             p.join()
       
    80         finally:
       
    81             s.stop()
       
    82     finally:
       
    83         shutil.rmtree(tdir)