示例#1
0
def reputationServerOpen(self, buffer=False, **kwa):
    if buffer:
        wlog = WireLog(buffify=True, same=True)
        result = wlog.reopen()
    else:
        wlog = None

    port = int(self.port.value)
    test = True if self.test.value else False
    preload = True if self.preload.value else False

    if test:
        priming.setupTest()
        if preload:
            dbing.preloadTestDbs()

    else:
        dbDirPath = self.dbDirPath.value if self.dbDirPath.value else None
        dbDirPath = os.path.abspath(os.path.expanduser(dbDirPath)) if dbDirPath else None
        priming.setup(dbDirPath)

        self.dbDirPath.value = dbing.gDbDirPath

        app = falcon.API()
        ending.loadEnds(app, store=self.store)

        self.valet.value = Valet(port=port,
                                 bufsize=131072,
                                 wlog=wlog,
                                 store=self.store,
                                 app=app,
                                 timeout=0.5)

        result = self.valet.value.servant.reopen()
        if not result:
            console.terse("Error opening server '{0}' at '{1}'\n".format(
                self.valet.name,
                self.valet.value.servant.ha))

            return

        console.concise("Opened server '{0} at '{1}'\n".format(
            self.valet.name,
            self.valet.value.servant.ha))
示例#2
0
def dideryServerOpen(self):
    """
    Setup and open a rest server

    Ioinit attributes
        valet is Valet instance (wsgi server)
        port is server port

    Context: enter

    Example:
        do didery server open at enter
    """
    port = int(self.port.value)
    dbing.setupDbEnv(self.db.value, self.port.value, mode=self.mode.value)

    app = falcon.API(middleware=[routing.CORSMiddleware()])
    routing.loadEndPoints(app, store=self.store, mode=self.mode.value)

    self.valet.value = Valet(
        port=port,
        bufsize=131072,
        wlog=None,
        store=self.store,
        app=app,
        timeout=0.5,
    )

    console.terse("IP Address {}\n".format(self.valet.value.servant.ha))

    result = self.valet.value.servant.reopen()

    if not result:
        console.terse("Error opening server '{0}' at '{1}'\n".format(
            self.valet.name, self.valet.value.servant.ha))
        return

    console.concise("Opened server '{0}' at '{1}'\n".format(
        self.valet.name,
        self.valet.value.servant.ha,
    ))
示例#3
0
def valetServerOpen(self, buffer=False, **kwa):
    if buffer:
        wlog = WireLog(buffify=True, same=True)
        result = wlog.reopen()
    else:
        wlog = None

    port = int(self.port.value)
    app = falcon.API()
    resource.loadResource(app, store=self.store)

    test = True if self.test.value else False  # use to load test environment
    preload = True if self.preload.value else False  # load test db if test and True
    wlog = None

    prime = priming.setup()

    #self.dbDirPath.value = dbing.gDbDirPath
    #self.keepDirPath.value = keeping.gKeepDirPath

    self.valet.value = Valet(
        port=port,
        bufsize=131072,
        wlog=wlog,
        store=self.store,
        app=app,
        timeout=0.5,
    )

    result = self.valet.value.servant.reopen()
    if not result:
        console.terse("Error opening server '{0}' at '{1}'\n".format(
            self.valet.name, self.valet.value.servant.ha))
        return

    console.concise("Opened server '{0}' at '{1}'\n".format(
        self.valet.name,
        self.valet.value.servant.ha,
    ))
示例#4
0
def run_valet():
    """
    Use ioflo valet server
    """
    console.reinit(verbosity=console.Wordage.profuse)

    store = Store(stamp=0.0)

    app = falcon.API()  # falcon.API instances are callable WSGI apps
    sink = StaticSink()
    app.add_sink(sink, prefix="/")

    server = Valet(store=store, app=app, name='test', port=8080, timeout=0.5)
    server.open()

    while True:
        server.serviceAll()
        time.sleep(0.0625)
        store.advanceStamp(0.0625)
示例#5
0
def reputationServerOpen(self, buffer=False, **kwa):
    """
    Sets up and opens a rest server.

        Ioinit Attributes:
        valet - Valet instance (wsgi server)
        port - Server port number
        dbDirPath - Directory path for the database
        test - Flag; If True, uses a test configuration if any is
        available
        preload - Flag; If True (and test is True), preloads the
        database for testing

        Parameters:
        buffer - Flag; If True, creates wire log buffer for Valet

        Context:
        enter

        Example Usage:
        do reputation server open at enter
    """
    if buffer:
        wireLog = WireLog(buffify=True, same=True)
        result = wireLog.reopen()
    else:
        wireLog = None

    port = int(self.port.value)
    test = True if self.test.value else False
    preload = True if self.preload.value else False

    if test:
        priming.setupTest()
        if preload:
            dbing.preloadTestDbs()

    else:
        dbDirPath = self.dbDirPath.value if self.dbDirPath.value else None
        dbDirPath = os.path.abspath(os.path.expanduser(dbDirPath)) if dbDirPath else None
        priming.setup(dbDirPath)

        self.dbDirPath.value = dbing.gDbDirPath

        app = falcon.API()
        ending.loadEnds(app, store=self.store)

        self.valet.value = Valet(port=port,
                                 bufsize=131072,
                                 wlog=wireLog,
                                 store=self.store,
                                 app=app,
                                 timeout=0.5)

        result = self.valet.value.servant.reopen()
        if not result:
            console.terse("Error opening server '{0}' at '{1}'\n".format(
                self.valet.name,
                self.valet.value.servant.ha))

            return

        console.concise("Opened server '{0} at '{1}'\n".format(
            self.valet.name,
            self.valet.value.servant.ha))
def microserviceServerOpen(self, buffer=False, **kwa):
    """
    Setup and open a rest server

    Ioinit attributes
        valet is Valet instance (wsgi server)
        port is server port
        dbDirPath is directory path for database
        keepDirPath is directory path for private key files
        test is Flag if True load test endpoints and test database
        test is Flag if True and if test is True then preload database for testing
        fakeHidKind is Flag IF True then enable "fake" HID kind that does not require validation

    Parameters:
        buffer is boolean If True then create wire log buffer for Valet

    Context: enter

    Example:
        do bluepea server open at enter
    """

    if buffer:
        wlog = WireLog(buffify=True, same=True)
        result = wlog.reopen()
    else:
        wlog = None

    microserviceconstnclass.fakeHidKind = self.fakeHidKind.value  # set global flag

    port = int(self.port.value)
    '''
    test = True if self.test.value else False  # use to load test environment
    preload = True if self.preload.value else False  # load test db if test and True

    if test:
        priming.setupTest()
        if preload:
            dbing.preloadTestDbs()
    else:
        keepDirPath = self.keepDirPath.value if self.keepDirPath.value else None  # None is default
        keepDirPath = os.path.abspath(os.path.expanduser(keepDirPath)) if keepDirPath else None
        dbDirPath = self.dbDirPath.value if self.dbDirPath.value else None  # None is default
        dbDirPath = os.path.abspath(os.path.expanduser(dbDirPath)) if dbDirPath else None
        priming.setup(keepDirPath=keepDirPath, dbDirPath=dbDirPath)
    
    self.dbDirPath.value = dbing.gDbDirPath
    self.keepDirPath.value = keeping.gKeepDirPath
    '''
    app = falcon.API()  # falcon.API instances are callable WSGI apps
    ending.loadEnds(app, store=self.store)

    self.valet.value = Valet(
        port=port,
        bufsize=131072,
        wlog=wlog,
        store=None,
        app=app,
        timeout=0.5,
    )

    result = self.valet.value.servant.reopen()
    if not result:
        console.terse("Error opening server '{0}' at '{1}'\n".format(
            self.valet.name, self.valet.value.servant.ha))
        return

    console.concise("Opened server '{0}' at '{1}'\n".format(
        self.valet.name,
        self.valet.value.servant.ha,
    ))
示例#7
0
def test_get_backend():
    """
    """
    print("Testing Falcon Example Backend Call")

    store = Store(stamp=0.0)  # create store
    priming.setupTest()

    valet = Valet(
        port=8101,
        bufsize=131072,
        store=store,
        app=exapp,
    )

    result = valet.open()
    assert result
    assert valet.servant.ha == ('0.0.0.0', 8101)
    assert valet.servant.eha == ('127.0.0.1', 8101)

    path = "http://{}:{}{}".format('localhost', valet.servant.eha[1],
                                   "/example/backend")
    headers = odict([('Accept', 'application/json'), ('Content-Length', 0)])
    patron = Patron(
        bufsize=131072,
        store=store,
        method='GET',
        path=path,
        headers=headers,
        reconnectable=True,
    )

    assert patron.connector.reopen()
    assert patron.connector.accepted == False
    assert patron.connector.connected == False
    assert patron.connector.cutoff == False

    patron.transmit()
    timer = StoreTimer(store, duration=1.0)
    while (patron.requests or patron.connector.txes or not patron.responses
           or not valet.idle()):
        valet.serviceAll()
        time.sleep(0.05)
        patron.serviceAll()
        time.sleep(0.05)
        store.advanceStamp(0.1)

    assert patron.connector.accepted == True
    assert patron.connector.connected == True
    assert patron.connector.cutoff == False

    assert len(valet.servant.ixes) == 1
    assert len(valet.reqs) == 1
    assert len(valet.reps) == 1
    requestant = valet.reqs.values()[0]
    assert requestant.method == patron.requester.method
    assert requestant.url == patron.requester.path
    assert requestant.headers == {
        'accept': 'application/json',
        'accept-encoding': 'identity',
        'content-length': '0',
        'host': 'localhost:8101'
    }

    assert len(patron.responses) == 1
    rep = patron.responses.popleft()
    assert rep['status'] == 200
    assert rep['reason'] == 'OK'
    assert rep['body'] == bytearray(
        b'{\n  "approved": true,\n  "body": "\\nHello World\\n\\n"\n}')
    assert rep['data'] == odict([('approved', True),
                                 ('body', '\nHello World\n\n')])

    responder = valet.reps.values()[0]
    assert responder.status.startswith(str(rep['status']))
    assert responder.headers == rep['headers']

    # test for error by sending query arg path
    #request = odict([('method', 'GET'),
    #('path', '/example/backend'),
    #('qargs', odict(path='/unknown')),
    #('fragment', u''),
    #('headers', odict([('Accept', 'application/json'),
    #('Content-Length', 0)])),
    #])

    #patron.requests.append(request)

    headers = odict([('Accept', 'application/json'), ('Content-Length', 0)])
    patron.request(method='GET',
                   path='/example/backend',
                   qargs=odict(path='/unknown'),
                   headers=headers)
    timer = StoreTimer(store, duration=1.0)
    while (patron.requests or patron.connector.txes or not patron.responses
           or not valet.idle()):
        valet.serviceAll()
        time.sleep(0.05)
        patron.serviceAll()
        time.sleep(0.05)
        store.advanceStamp(0.1)

    assert len(patron.responses) == 1
    rep = patron.responses.popleft()
    assert rep['status'] == 404
    assert rep['reason'] == 'Not Found'
    assert rep['body'] == bytearray(b'404 Not Found\nBackend Validation'
                                    b' Error\nError backend validation.'
                                    b' unknown\n')
    assert not rep['data']

    valet.close()
    patron.close()
    print("Done Test")
示例#8
0
    def testBasic(self):
        """
        Test Valet Patron and Bottle
        """
        console.terse("{0}\n".format(self.testBasic.__doc__))

        store = Store(stamp=0.0)

        app = bottle.default_app() # create bottle app

        @app.get('/echo')
        @app.get('/echo/<action>')
        @app.post('/echo')
        @app.post('/echo/<action>')
        def echoGet(action=None):
            """
            Echo back request data
            """
            query = dict(bottle.request.query.items())
            body = bottle.request.json
            raw = bottle.request.body.read()
            form = odict(bottle.request.forms)

            data = odict(verb=bottle.request.method,
                        url=bottle.request.url,
                        action=action,
                        query=query,
                        form=form,
                        content=body)
            return data


        console.terse("{0}\n".format("Building Valet ...\n"))
        wireLogAlpha = WireLog(buffify=True, same=True)
        result = wireLogAlpha.reopen()

        alpha = Valet(port = 6101,
                              bufsize=131072,
                              wlog=wireLogAlpha,
                              store=store,
                              app=app)
        self.assertIs(alpha.servant.reopen(), True)
        self.assertEqual(alpha.servant.ha, ('0.0.0.0', 6101))
        self.assertEqual(alpha.servant.eha, ('127.0.0.1', 6101))

        console.terse("{0}\n".format("Building Patron ...\n"))
        wireLogBeta = WireLog(buffify=True,  same=True)
        result = wireLogBeta.reopen()

        path = "http://{0}:{1}/".format('localhost', alpha.servant.eha[1])

        beta = Patron(bufsize=131072,
                      wlog=wireLogBeta,
                      store=store,
                      path=path,
                      reconnectable=True)

        self.assertIs(beta.connector.reopen(), True)
        self.assertIs(beta.connector.accepted, False)
        self.assertIs(beta.connector.connected, False)
        self.assertIs(beta.connector.cutoff, False)

        request = odict([('method', u'GET'),
                         ('path', u'/echo?name=fame'),
                         ('qargs', odict()),
                         ('fragment', u''),
                         ('headers', odict([('Accept', 'application/json'),
                                            ('Content-Length', 0)])),
                        ])

        beta.requests.append(request)
        timer = StoreTimer(store, duration=1.0)
        while (beta.requests or beta.connector.txes or not beta.responses or
               not alpha.idle()):
            alpha.serviceAll()
            time.sleep(0.05)
            beta.serviceAll()
            time.sleep(0.05)
            store.advanceStamp(0.1)

        self.assertIs(beta.connector.accepted, True)
        self.assertIs(beta.connector.connected, True)
        self.assertIs(beta.connector.cutoff, False)

        self.assertEqual(len(alpha.servant.ixes), 1)
        self.assertEqual(len(alpha.reqs), 1)
        self.assertEqual(len(alpha.reps), 1)
        requestant = alpha.reqs.values()[0]
        self.assertEqual(requestant.method, request['method'])
        self.assertEqual(requestant.url, request['path'])
        self.assertEqual(requestant.headers, {'accept': 'application/json',
                                                'accept-encoding': 'identity',
                                                'content-length': '0',
                                                'host': 'localhost:6101'})

        self.assertEqual(len(beta.responses), 1)
        response = beta.responses.popleft()
        self.assertEqual(response['status'], 200)
        self.assertEqual(response['reason'], 'OK')
        self.assertEqual(response['body'],bytearray(b''))
        self.assertEqual(response['data'],{'action': None,
                                            'content': None,
                                            'form': {},
                                            'query': {'name': 'fame'},
                                            'url': 'http://localhost:6101/echo?name=fame',
                                            'verb': 'GET'},)

        responder = alpha.reps.values()[0]
        self.assertTrue(responder.status.startswith, str(response['status']))
        self.assertEqual(responder.headers, response['headers'])

        alpha.servant.closeAll()
        beta.connector.close()

        wireLogAlpha.close()
        wireLogBeta.close()
示例#9
0
    def testTestStream(self):
        """
        Test Valet WSGI service request response stream sse
        """
        console.terse("{0}\n".format(self.testTestStream.__doc__))

        store = Store(stamp=0.0)

        app = bottle.default_app() # create bottle app

        ending.loadTest(app, store)

        console.terse("{0}\n".format("Building Valet ...\n"))
        wireLogAlpha = WireLog(buffify=True, same=True)
        result = wireLogAlpha.reopen()

        alpha = Valet(port = 6101,
                              bufsize=131072,
                              wlog=wireLogAlpha,
                              store=store,
                              app=app)
        self.assertIs(alpha.servant.reopen(), True)
        self.assertEqual(alpha.servant.ha, ('0.0.0.0', 6101))
        self.assertEqual(alpha.servant.eha, ('127.0.0.1', 6101))

        console.terse("{0}\n".format("Building Patron ...\n"))
        wireLogBeta = WireLog(buffify=True,  same=True)
        result = wireLogBeta.reopen()

        path = "http://{0}:{1}/".format('localhost', alpha.servant.eha[1])

        beta = Patron(bufsize=131072,
                                     wlog=wireLogBeta,
                                     store=store,
                                     path=path,
                                     reconnectable=True)

        self.assertIs(beta.connector.reopen(), True)
        self.assertIs(beta.connector.accepted, False)
        self.assertIs(beta.connector.connected, False)
        self.assertIs(beta.connector.cutoff, False)

        request = odict([('method', u'GET'),
                         ('path', u'/test/stream'),
                         ('qargs', odict()),
                         ('fragment', u''),
                         ('headers', odict([('Accept', 'application/json'),
                                            ('Content-Length', 0)])),
                         ('body', None),
                        ])

        beta.requests.append(request)
        timer = StoreTimer(store, duration=1.0)
        while (not timer.expired):
            alpha.serviceAll()
            time.sleep(0.05)
            beta.serviceAll()
            time.sleep(0.05)
            store.advanceStamp(0.1)

        self.assertIs(beta.connector.accepted, True)
        self.assertIs(beta.connector.connected, True)
        self.assertIs(beta.connector.cutoff, False)

        self.assertEqual(len(alpha.servant.ixes), 1)
        self.assertEqual(len(alpha.reqs), 1)
        self.assertEqual(len(alpha.reps), 1)
        requestant = alpha.reqs.values()[0]
        self.assertEqual(requestant.method, request['method'])
        self.assertEqual(requestant.url, request['path'])
        self.assertEqual(requestant.headers, {'accept': 'application/json',
                                                'accept-encoding': 'identity',
                                                'content-length': '0',
                                                'host': 'localhost:6101'})


        #timed out while stream still open so no responses in .responses
        self.assertIs(beta.waited, True)
        self.assertIs(beta.respondent.ended, False)
        self.assertEqual(len(beta.responses), 0)
        self.assertIn('content-type', beta.respondent.headers)
        self.assertEqual(beta.respondent.headers['content-type'], 'text/event-stream')
        self.assertIn('transfer-encoding', beta.respondent.headers)
        self.assertEqual(beta.respondent.headers['transfer-encoding'], 'chunked')

        self.assertTrue(len(beta.events) >= 3)
        self.assertEqual(beta.respondent.retry, 1000)
        self.assertTrue(int(beta.respondent.leid) >= 2)
        event = beta.events.popleft()
        self.assertEqual(event, {'id': '0', 'name': '', 'data': 'START'})
        event = beta.events.popleft()
        self.assertEqual(event, {'id': '1', 'name': '', 'data': '1'})
        event = beta.events.popleft()
        self.assertEqual(event, {'id': '2', 'name': '', 'data': '2'})
        beta.events.clear()

        #keep going until ended
        timer.restart(duration=1.5)
        while (not timer.expired):
            alpha.serviceAll()
            time.sleep(0.05)
            beta.serviceAll()
            time.sleep(0.05)
            store.advanceStamp(0.1)

        self.assertTrue(len(beta.events) >= 3)
        self.assertEqual(beta.respondent.leid,  '9')
        self.assertEqual(beta.events[-2], {'id': '9', 'name': '', 'data': '9'})
        self.assertEqual(beta.events[-1], {'id': '9', 'name': '', 'data': 'END'})
        beta.events.clear()

        alpha.servant.closeAll()
        beta.connector.close()

        wireLogAlpha.close()
        wireLogBeta.close()
示例#10
0
    def testLoadTestEnds(self):
        """
        Test behavior
        """
        console.terse("{0}\n".format(self.testLoadTestEnds.__doc__))

        store = Store(stamp=0.0)

        app = bottle.default_app() # create bottle app

        ending.loadTest(app, store)

        console.terse("{0}\n".format("Building Valet ...\n"))
        wireLogAlpha = WireLog(buffify=True, same=True)
        result = wireLogAlpha.reopen()

        alpha = Valet(port = 6101,
                              bufsize=131072,
                              wlog=wireLogAlpha,
                              store=store,
                              app=app)
        self.assertIs(alpha.servant.reopen(), True)
        self.assertEqual(alpha.servant.ha, ('0.0.0.0', 6101))
        self.assertEqual(alpha.servant.eha, ('127.0.0.1', 6101))

        console.terse("{0}\n".format("Building Patron ...\n"))
        wireLogBeta = WireLog(buffify=True,  same=True)
        result = wireLogBeta.reopen()

        path = "http://{0}:{1}/".format('localhost', alpha.servant.eha[1])

        beta = Patron(bufsize=131072,
                      wlog=wireLogBeta,
                      store=store,
                      path=path,
                      reconnectable=True)

        self.assertIs(beta.connector.reopen(), True)
        self.assertIs(beta.connector.accepted, False)
        self.assertIs(beta.connector.connected, False)
        self.assertIs(beta.connector.cutoff, False)

        # get echo
        request = odict([('method', u'GET'),
                         ('path', u'/test/echo?name=fame'),
                         ('qargs', odict()),
                         ('fragment', u''),
                         ('headers', odict([('Accept', 'application/json'),
                                            ('Content-Length', 0)])),
                        ])

        beta.requests.append(request)
        timer = StoreTimer(store, duration=1.0)
        while (beta.requests or beta.connector.txes or not beta.responses or
               not alpha.idle()):
            alpha.serviceAll()
            time.sleep(0.05)
            beta.serviceAll()
            time.sleep(0.05)
            store.advanceStamp(0.1)

        self.assertIs(beta.connector.accepted, True)
        self.assertIs(beta.connector.connected, True)
        self.assertIs(beta.connector.cutoff, False)

        self.assertEqual(len(alpha.servant.ixes), 1)
        self.assertEqual(len(alpha.reqs), 1)
        self.assertEqual(len(alpha.reps), 1)
        requestant = alpha.reqs.values()[0]
        self.assertEqual(requestant.method, request['method'])
        self.assertEqual(requestant.url, request['path'])
        self.assertEqual(requestant.headers, {'accept': 'application/json',
                                                'accept-encoding': 'identity',
                                                'content-length': '0',
                                                'host': 'localhost:6101'})

        self.assertEqual(len(beta.responses), 1)
        response = beta.responses.popleft()
        self.assertEqual(response['status'], 200)
        self.assertEqual(response['reason'], 'OK')
        self.assertEqual(response['body'],bytearray(b''))
        self.assertEqual(response['data'],{'action': None,
                                            'body': '',
                                            'data': None,
                                            'form': odict([]),
                                            'headers': {'Accept': 'application/json',
                                                        'Accept-Encoding': 'identity',
                                                        'Content-Length': '0',
                                                        'Content-Type': '',
                                                        'Host': 'localhost:6101'},
                                            'query': odict([('name', 'fame')]),
                                            'url': 'http://localhost:6101/test/echo?name=fame',
                                            'verb': 'GET'},)

        responder = alpha.reps.values()[0]
        self.assertTrue(responder.status.startswith, str(response['status']))
        self.assertEqual(responder.headers, response['headers'])

        # get routes
        request = odict([('method', u'GET'),
                         ('path', u'/test/route'),
                         ('qargs', odict()),
                         ('fragment', u''),
                         ('headers', odict([('Accept', 'application/json'),
                                            ('Content-Length', 0)])),
                        ])

        beta.requests.append(request)
        timer = StoreTimer(store, duration=1.0)
        while (beta.requests or beta.connector.txes or not beta.responses or
               not alpha.idle()):
            alpha.serviceAll()
            time.sleep(0.05)
            beta.serviceAll()
            time.sleep(0.05)
            store.advanceStamp(0.1)

        self.assertIs(beta.connector.accepted, True)
        self.assertIs(beta.connector.connected, True)
        self.assertIs(beta.connector.cutoff, False)

        self.assertEqual(len(alpha.servant.ixes), 1)
        self.assertEqual(len(alpha.reqs), 1)
        self.assertEqual(len(alpha.reps), 1)
        requestant = alpha.reqs.values()[0]
        self.assertEqual(requestant.method, request['method'])
        self.assertEqual(requestant.url, request['path'])
        self.assertEqual(requestant.headers, {'accept': 'application/json',
                                                'accept-encoding': 'identity',
                                                'content-length': '0',
                                                'host': 'localhost:6101'})

        self.assertEqual(len(beta.responses), 1)
        response = beta.responses.popleft()
        self.assertEqual(response['status'], 200)
        self.assertEqual(response['reason'], 'OK')
        self.assertEqual(response['body'], bytearray(
                b'Web app file is located at /Data/Code/public/ioserve/ios'
                b'erve/end\n/echo/<action> POST\n/echo POST\n/echo/<actio'
                b'n> GET\n/echo GET\n/ GET\n/test GET\n/test/route GET\n/te'
                b'st/echo POST\n/test/echo/<action> POST\n/test/echo GET'
                b'\n/test/echo/<action> GET\n/test/auth POST\n/test/auth/'
                b'<token> POST\n/test/auth GET\n/test/auth/<token> GET\n/'
                b'test/stream GET'))
        self.assertEqual(response['data'],{
                            'action': None,
                            'body': '',
                            'data': None,
                            'form': odict([]),
                            'headers': {'Accept': 'application/json',
                                        'Accept-Encoding': 'identity',
                                        'Content-Length': '0',
                                        'Content-Type': '',
                                        'Host': 'localhost:6101'},
                            'query': odict([('name', 'fame')]),
                            'url': 'http://localhost:6101/test/echo?name=fame',
                            'verb': 'GET'},)

        responder = alpha.reps.values()[0]
        self.assertTrue(responder.status.startswith, str(response['status']))
        self.assertEqual(responder.headers, response['headers'])

        alpha.servant.closeAll()
        beta.connector.close()

        wireLogAlpha.close()
        wireLogBeta.close()