from multiprocessing import Process
from sqlalchemy import create_engine
from tempfile import mkdtemp
import shutil
from iro.controller.database import createDatabase,WithSession, DBDefer
import iro.model.user as imuser
import iro.controller.database as db
from iro.model.schema import User
from ngdatabase.mysql import Server,createConfig,Database
class SampleDatabase(Database):
def createPassword(self):
self.password="test"
return self.password
from twisted.python import log
import logging
logging.basicConfig(level=logging.INFO, format='%(asctime)s %(name)s(%(processName)s)-%(levelname)s: %(message)s')
#observer = log.PythonLoggingObserver()
#observer.start()
def xxxxx(userid):
import xmlrpclib
return xmlrpclib.ServerProxy('http://localhost:7080/RPC2').listMethods()
def main():
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.suggestThreadPoolSize(5)
reactor.run()
if __name__ == '__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)
dbdefer = DBDefer('mysql://test:test@localhost/test?unix_socket=%s/socket'%tdir, pool_size=5)
@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()
p.join()
finally:
s.stop()
finally:
shutil.rmtree(tdir)