1 from multiprocessing import Process |
1 from multiprocessing import Process |
2 from sqlalchemy import create_engine |
2 from sqlalchemy import create_engine, pool |
3 |
3 |
4 from tempfile import mkdtemp |
4 from tempfile import mkdtemp |
5 import shutil |
5 import shutil |
6 |
6 |
7 from iro.controller.database import createDatabase,WithSession, DBDefer |
7 from iro.model.utils import WithSession, DBDefer, POOL_SIZE as DB_POOL_SIZE |
8 import iro.model.user as imuser |
8 import iro.model.user as imuser |
9 import iro.controller.database as db |
|
10 |
9 |
11 from iro.model.schema import User |
10 from iro.model.schema import User, Base |
12 |
11 |
13 from ngdatabase.mysql import Server,createConfig,Database |
12 from ngdatabase.mysql import Server, createConfig, Database |
14 |
13 |
15 class SampleDatabase(Database): |
14 class SampleDatabase(Database): |
16 def createPassword(self): |
15 def createPassword(self): |
17 self.password="test" |
16 self.password="test" |
18 return self.password |
17 return self.password |
19 |
18 |
20 from twisted.python import log |
19 from twisted.python import log |
21 import logging |
20 import logging |
22 logging.basicConfig(level=logging.INFO, format='%(asctime)s %(name)s(%(processName)s)-%(levelname)s: %(message)s') |
21 logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(name)s(%(processName)s)-%(levelname)s: %(message)s') |
23 #observer = log.PythonLoggingObserver() |
22 #observer = log.PythonLoggingObserver() |
24 #observer.start() |
23 #observer.start() |
25 |
24 |
26 def xxxxx(userid): |
25 def xxxxx(userid): |
27 import xmlrpclib |
26 import xmlrpclib |
39 return "" |
38 return "" |
40 |
39 |
41 root=getResource() |
40 root=getResource() |
42 root.putChild('debug', XMLRPCDebug()) |
41 root.putChild('debug', XMLRPCDebug()) |
43 reactor.listenTCP(7080, server.Site(root)) |
42 reactor.listenTCP(7080, server.Site(root)) |
44 reactor.suggestThreadPoolSize(5) |
43 logging.info("Server is running now...") |
45 reactor.run() |
44 reactor.run() |
46 |
45 |
47 if __name__ == '__main__': |
46 if __name__ == '__main__': |
48 tdir = mkdtemp(prefix='iro-mysql-') |
47 tdir = mkdtemp(prefix='iro-mysql-') |
49 try: |
48 try: |
52 s = Server('%s/my.cnf'%tdir) |
51 s = Server('%s/my.cnf'%tdir) |
53 s.create() |
52 s.create() |
54 s.start() |
53 s.start() |
55 d=SampleDatabase("test","test",'%s/my.cnf'%tdir) |
54 d=SampleDatabase("test","test",'%s/my.cnf'%tdir) |
56 d.create() |
55 d.create() |
57 db.engine = create_engine('mysql://test:test@localhost/test?unix_socket=%s/socket'%tdir) |
56 engine = create_engine('mysql://test:test@localhost/test?unix_socket=%s/socket'%tdir, |
58 dbdefer = DBDefer('mysql://test:test@localhost/test?unix_socket=%s/socket'%tdir, pool_size=5) |
57 poolclass = pool.SingletonThreadPool, pool_size=DB_POOL_SIZE, ) |
59 |
58 dbdefer = DBDefer(engine) |
|
59 withsession=WithSession(engine, autocommit=True) |
60 @dbdefer |
60 @dbdefer |
61 def getuser(userhash, session): |
61 def getuser(userhash, session): |
62 #session.execute("SELECT SLEEP(10)") |
62 #session.execute("SELECT SLEEP(10)") |
63 return imuser._getuser(userhash = userhash, session=session) |
63 return imuser._getuser(userhash = userhash, session=session) |
64 |
64 |
65 imuser.dbdefer=dbdefer |
65 imuser.dbdefer=dbdefer |
66 imuser._getuser=imuser.getuser |
66 imuser._getuser=imuser.getuser |
67 imuser.getuser=getuser |
67 imuser.getuser=getuser |
68 |
68 |
69 |
|
70 try: |
69 try: |
71 createDatabase() |
70 Base.metadata.create_all(engine) |
72 with WithSession(autocommit=True) as session: |
71 with withsession as session: |
73 session.add(User(name='test',apikey='abcdef123456789')) |
72 session.add(User(name='test',apikey='abcdef123456789')) |
74 p = Process(target=main) |
73 p = Process(target=main) |
75 p.start() |
74 p.start() |
76 p.join() |
75 p.join() |
77 finally: |
76 finally: |