tests/xmlrpc.py
author Sandro Knauß <knauss@netzguerilla.net>
Sun, 22 Jan 2012 23:53:27 +0100
branchdevel
changeset 108 cadc01b2bdc0
parent 107 f11520354165
child 113 abdece5f6be6
permissions -rw-r--r--
model.user uses now the decorator DBDefer
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
105
48f2b8adc7da eigenständiger client datei für den xmlrpc test
Sandro Knauß <knauss@netzguerilla.net>
parents: 102
diff changeset
     1
from multiprocessing import Process
107
f11520354165 controller.database -> model.utils
Sandro Knauß <knauss@netzguerilla.net>
parents: 106
diff changeset
     2
from sqlalchemy import create_engine, pool
95
3f41dfd7cb34 ausformulieren des xmlrpc Testes
Sandro Knauß <knauss@netzguerilla.net>
parents: 92
diff changeset
     3
3f41dfd7cb34 ausformulieren des xmlrpc Testes
Sandro Knauß <knauss@netzguerilla.net>
parents: 92
diff changeset
     4
from tempfile import mkdtemp
3f41dfd7cb34 ausformulieren des xmlrpc Testes
Sandro Knauß <knauss@netzguerilla.net>
parents: 92
diff changeset
     5
import shutil
92
f479738b4879 umbau zu MVC
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     6
108
cadc01b2bdc0 model.user uses now the decorator DBDefer
Sandro Knauß <knauss@netzguerilla.net>
parents: 107
diff changeset
     7
from iro.model.utils import WithSession, POOL_SIZE as DB_POOL_SIZE
106
d2992f011930 controller/user moved to model
Sandro Knauß <knauss@netzguerilla.net>
parents: 105
diff changeset
     8
import iro.model.user as imuser
95
3f41dfd7cb34 ausformulieren des xmlrpc Testes
Sandro Knauß <knauss@netzguerilla.net>
parents: 92
diff changeset
     9
107
f11520354165 controller.database -> model.utils
Sandro Knauß <knauss@netzguerilla.net>
parents: 106
diff changeset
    10
from iro.model.schema import User, Base
95
3f41dfd7cb34 ausformulieren des xmlrpc Testes
Sandro Knauß <knauss@netzguerilla.net>
parents: 92
diff changeset
    11
107
f11520354165 controller.database -> model.utils
Sandro Knauß <knauss@netzguerilla.net>
parents: 106
diff changeset
    12
from ngdatabase.mysql import Server, createConfig, Database
95
3f41dfd7cb34 ausformulieren des xmlrpc Testes
Sandro Knauß <knauss@netzguerilla.net>
parents: 92
diff changeset
    13
3f41dfd7cb34 ausformulieren des xmlrpc Testes
Sandro Knauß <knauss@netzguerilla.net>
parents: 92
diff changeset
    14
class SampleDatabase(Database):
3f41dfd7cb34 ausformulieren des xmlrpc Testes
Sandro Knauß <knauss@netzguerilla.net>
parents: 92
diff changeset
    15
    def createPassword(self):
3f41dfd7cb34 ausformulieren des xmlrpc Testes
Sandro Knauß <knauss@netzguerilla.net>
parents: 92
diff changeset
    16
        self.password="test"
3f41dfd7cb34 ausformulieren des xmlrpc Testes
Sandro Knauß <knauss@netzguerilla.net>
parents: 92
diff changeset
    17
        return self.password
92
f479738b4879 umbau zu MVC
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    18
105
48f2b8adc7da eigenständiger client datei für den xmlrpc test
Sandro Knauß <knauss@netzguerilla.net>
parents: 102
diff changeset
    19
from twisted.python import log
92
f479738b4879 umbau zu MVC
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    20
import logging
107
f11520354165 controller.database -> model.utils
Sandro Knauß <knauss@netzguerilla.net>
parents: 106
diff changeset
    21
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(name)s(%(processName)s)-%(levelname)s: %(message)s')
105
48f2b8adc7da eigenständiger client datei für den xmlrpc test
Sandro Knauß <knauss@netzguerilla.net>
parents: 102
diff changeset
    22
#observer = log.PythonLoggingObserver()
48f2b8adc7da eigenständiger client datei für den xmlrpc test
Sandro Knauß <knauss@netzguerilla.net>
parents: 102
diff changeset
    23
#observer.start()
95
3f41dfd7cb34 ausformulieren des xmlrpc Testes
Sandro Knauß <knauss@netzguerilla.net>
parents: 92
diff changeset
    24
3f41dfd7cb34 ausformulieren des xmlrpc Testes
Sandro Knauß <knauss@netzguerilla.net>
parents: 92
diff changeset
    25
def xxxxx(userid):
3f41dfd7cb34 ausformulieren des xmlrpc Testes
Sandro Knauß <knauss@netzguerilla.net>
parents: 92
diff changeset
    26
    import xmlrpclib
105
48f2b8adc7da eigenständiger client datei für den xmlrpc test
Sandro Knauß <knauss@netzguerilla.net>
parents: 102
diff changeset
    27
    return xmlrpclib.ServerProxy('http://localhost:7080/RPC2').listMethods()
95
3f41dfd7cb34 ausformulieren des xmlrpc Testes
Sandro Knauß <knauss@netzguerilla.net>
parents: 92
diff changeset
    28
92
f479738b4879 umbau zu MVC
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    29
def main():
95
3f41dfd7cb34 ausformulieren des xmlrpc Testes
Sandro Knauß <knauss@netzguerilla.net>
parents: 92
diff changeset
    30
    from twisted.internet import reactor
3f41dfd7cb34 ausformulieren des xmlrpc Testes
Sandro Knauß <knauss@netzguerilla.net>
parents: 92
diff changeset
    31
    from twisted.web import xmlrpc, server
3f41dfd7cb34 ausformulieren des xmlrpc Testes
Sandro Knauß <knauss@netzguerilla.net>
parents: 92
diff changeset
    32
    
3f41dfd7cb34 ausformulieren des xmlrpc Testes
Sandro Knauß <knauss@netzguerilla.net>
parents: 92
diff changeset
    33
    from iro.view.xmlrpc import getResource
3f41dfd7cb34 ausformulieren des xmlrpc Testes
Sandro Knauß <knauss@netzguerilla.net>
parents: 92
diff changeset
    34
    
3f41dfd7cb34 ausformulieren des xmlrpc Testes
Sandro Knauß <knauss@netzguerilla.net>
parents: 92
diff changeset
    35
    class XMLRPCDebug(xmlrpc.XMLRPC): 
3f41dfd7cb34 ausformulieren des xmlrpc Testes
Sandro Knauß <knauss@netzguerilla.net>
parents: 92
diff changeset
    36
        def xmlrpc_stop(self):
3f41dfd7cb34 ausformulieren des xmlrpc Testes
Sandro Knauß <knauss@netzguerilla.net>
parents: 92
diff changeset
    37
            reactor.callLater(0.5,reactor.stop)
3f41dfd7cb34 ausformulieren des xmlrpc Testes
Sandro Knauß <knauss@netzguerilla.net>
parents: 92
diff changeset
    38
            return ""
3f41dfd7cb34 ausformulieren des xmlrpc Testes
Sandro Knauß <knauss@netzguerilla.net>
parents: 92
diff changeset
    39
3f41dfd7cb34 ausformulieren des xmlrpc Testes
Sandro Knauß <knauss@netzguerilla.net>
parents: 92
diff changeset
    40
    root=getResource()
3f41dfd7cb34 ausformulieren des xmlrpc Testes
Sandro Knauß <knauss@netzguerilla.net>
parents: 92
diff changeset
    41
    root.putChild('debug', XMLRPCDebug())
3f41dfd7cb34 ausformulieren des xmlrpc Testes
Sandro Knauß <knauss@netzguerilla.net>
parents: 92
diff changeset
    42
    reactor.listenTCP(7080, server.Site(root))
107
f11520354165 controller.database -> model.utils
Sandro Knauß <knauss@netzguerilla.net>
parents: 106
diff changeset
    43
    logging.info("Server is running now...")
92
f479738b4879 umbau zu MVC
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    44
    reactor.run()
f479738b4879 umbau zu MVC
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    45
f479738b4879 umbau zu MVC
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    46
if __name__ == '__main__':
95
3f41dfd7cb34 ausformulieren des xmlrpc Testes
Sandro Knauß <knauss@netzguerilla.net>
parents: 92
diff changeset
    47
    tdir = mkdtemp(prefix='iro-mysql-')
3f41dfd7cb34 ausformulieren des xmlrpc Testes
Sandro Knauß <knauss@netzguerilla.net>
parents: 92
diff changeset
    48
    try:
3f41dfd7cb34 ausformulieren des xmlrpc Testes
Sandro Knauß <knauss@netzguerilla.net>
parents: 92
diff changeset
    49
        with open('%s/my.cnf'%tdir,'w') as cnf:
3f41dfd7cb34 ausformulieren des xmlrpc Testes
Sandro Knauß <knauss@netzguerilla.net>
parents: 92
diff changeset
    50
            cnf.write(createConfig(tdir))
3f41dfd7cb34 ausformulieren des xmlrpc Testes
Sandro Knauß <knauss@netzguerilla.net>
parents: 92
diff changeset
    51
        s = Server('%s/my.cnf'%tdir)
3f41dfd7cb34 ausformulieren des xmlrpc Testes
Sandro Knauß <knauss@netzguerilla.net>
parents: 92
diff changeset
    52
        s.create()
3f41dfd7cb34 ausformulieren des xmlrpc Testes
Sandro Knauß <knauss@netzguerilla.net>
parents: 92
diff changeset
    53
        s.start()
3f41dfd7cb34 ausformulieren des xmlrpc Testes
Sandro Knauß <knauss@netzguerilla.net>
parents: 92
diff changeset
    54
        d=SampleDatabase("test","test",'%s/my.cnf'%tdir)
3f41dfd7cb34 ausformulieren des xmlrpc Testes
Sandro Knauß <knauss@netzguerilla.net>
parents: 92
diff changeset
    55
        d.create()
107
f11520354165 controller.database -> model.utils
Sandro Knauß <knauss@netzguerilla.net>
parents: 106
diff changeset
    56
        engine = create_engine('mysql://test:test@localhost/test?unix_socket=%s/socket'%tdir,
f11520354165 controller.database -> model.utils
Sandro Knauß <knauss@netzguerilla.net>
parents: 106
diff changeset
    57
               poolclass = pool.SingletonThreadPool,  pool_size=DB_POOL_SIZE, )
108
cadc01b2bdc0 model.user uses now the decorator DBDefer
Sandro Knauß <knauss@netzguerilla.net>
parents: 107
diff changeset
    58
cadc01b2bdc0 model.user uses now the decorator DBDefer
Sandro Knauß <knauss@netzguerilla.net>
parents: 107
diff changeset
    59
        imuser.setEngine(engine)
95
3f41dfd7cb34 ausformulieren des xmlrpc Testes
Sandro Knauß <knauss@netzguerilla.net>
parents: 92
diff changeset
    60
3f41dfd7cb34 ausformulieren des xmlrpc Testes
Sandro Knauß <knauss@netzguerilla.net>
parents: 92
diff changeset
    61
        try:
107
f11520354165 controller.database -> model.utils
Sandro Knauß <knauss@netzguerilla.net>
parents: 106
diff changeset
    62
            Base.metadata.create_all(engine)
108
cadc01b2bdc0 model.user uses now the decorator DBDefer
Sandro Knauß <knauss@netzguerilla.net>
parents: 107
diff changeset
    63
            with WithSession(engine, autocommit=True) as session:
95
3f41dfd7cb34 ausformulieren des xmlrpc Testes
Sandro Knauß <knauss@netzguerilla.net>
parents: 92
diff changeset
    64
                session.add(User(name='test',apikey='abcdef123456789'))
3f41dfd7cb34 ausformulieren des xmlrpc Testes
Sandro Knauß <knauss@netzguerilla.net>
parents: 92
diff changeset
    65
            p = Process(target=main)
3f41dfd7cb34 ausformulieren des xmlrpc Testes
Sandro Knauß <knauss@netzguerilla.net>
parents: 92
diff changeset
    66
            p.start()
3f41dfd7cb34 ausformulieren des xmlrpc Testes
Sandro Knauß <knauss@netzguerilla.net>
parents: 92
diff changeset
    67
            p.join()
3f41dfd7cb34 ausformulieren des xmlrpc Testes
Sandro Knauß <knauss@netzguerilla.net>
parents: 92
diff changeset
    68
        finally:
3f41dfd7cb34 ausformulieren des xmlrpc Testes
Sandro Knauß <knauss@netzguerilla.net>
parents: 92
diff changeset
    69
            s.stop()
3f41dfd7cb34 ausformulieren des xmlrpc Testes
Sandro Knauß <knauss@netzguerilla.net>
parents: 92
diff changeset
    70
    finally:
3f41dfd7cb34 ausformulieren des xmlrpc Testes
Sandro Knauß <knauss@netzguerilla.net>
parents: 92
diff changeset
    71
        shutil.rmtree(tdir)