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) |