def testHandleRequestAsynchronous(self):
        logger = ApacheLogger(StringIO())
        observer = CallTrace('handler')
        observer.returnValues['handleRequest'] = (f for f in [str, okPlainText, 'text', int])
        logger.addObserver(observer)
        
        result = list(compose(logger.handleRequest(Method='GET', Client=('127.0.0.1', 1234), RequestURI='http://example.org/path?key=value', query='key=value', path='/path', Headers={}, otherKwarg='value'))) 

        self.assertEquals([str, okPlainText, 'text', int], result)
Example #2
0
    def testHandleRequestAsynchronous(self):
        logger = ApacheLogger(StringIO())
        observer = CallTrace('handler')
        observer.returnValues['handleRequest'] = (f for f in [str, okPlainText, 'text', int])
        logger.addObserver(observer)
        
        result = list(compose(logger.handleRequest(Method='GET', Client=('127.0.0.1', 1234), RequestURI='http://example.org/path?key=value', query='key=value', path='/path', Headers={}, otherKwarg='value'))) 

        self.assertEqual([str, okPlainText, 'text', int], result)
    def testLogHttpError(self):
        output = StringIO()
        logger = ApacheLogger(output)
        observer = CallTrace('handler')
        logger.addObserver(observer)

        logger.logHttpError(Method='GET', ResponseCode=503, Client=('127.0.0.1', 1234), RequestURI='http://example.org/path?key=value', Headers={}, otherKwarg='value')

        logline = output.getvalue()
        beforeTimestamp = logline.split('[',1)[0]
        afterTimestamp = logline.split(']', 1)[-1]
        self.assertEquals('127.0.0.1 - - ', beforeTimestamp)
        self.assertEquals(' "GET /path?key=value HTTP/1.0" 503 ?? "-" "-"\n'
                , afterTimestamp)

        self.assertEquals(['logHttpError'], [m.name for m in observer.calledMethods])
        self.assertEquals([dict(Method='GET', ResponseCode=503, Client=('127.0.0.1', 1234), RequestURI='http://example.org/path?key=value', Headers={}, otherKwarg='value')], [m.kwargs for m in observer.calledMethods])
Example #4
0
    def testLogHandleRequest(self):
        output = StringIO()
        logger = ApacheLogger(output)
        observer = CallTrace('handler')
        observer.returnValues['handleRequest'] = (f for f in [okPlainText, 'text'])
        logger.addObserver(observer)
        
        result = ''.join(compose(logger.handleRequest(Method='GET', Client=('127.0.0.1', 1234), RequestURI='http://example.org/path?key=value', query='key=value', path='/path', Headers={}, otherKwarg='value'))) 

        self.assertEqual(okPlainText + 'text', result)

        logline = output.getvalue()
        beforeTimestamp = logline.split('[',1)[0]
        afterTimestamp = logline.split(']', 1)[-1]
        self.assertEqual('127.0.0.1 - - ', beforeTimestamp)
        self.assertEqual(' "GET /path?key=value HTTP/1.0" 200 ?? "-" "-"\n'
                , afterTimestamp)

        self.assertEqual(['handleRequest'], [m.name for m in observer.calledMethods])
        self.assertEqual([dict(Method='GET', Client=('127.0.0.1', 1234), RequestURI='http://example.org/path?key=value', query='key=value', path='/path', Headers={}, otherKwarg='value')], [m.kwargs for m in observer.calledMethods])
    def testLogHandleRequest(self):
        output = StringIO()
        logger = ApacheLogger(output)
        observer = CallTrace('handler')
        observer.returnValues['handleRequest'] = (f for f in [okPlainText, 'text'])
        logger.addObserver(observer)
        
        result = ''.join(compose(logger.handleRequest(Method='GET', Client=('127.0.0.1', 1234), RequestURI='http://example.org/path?key=value', query='key=value', path='/path', Headers={}, otherKwarg='value'))) 

        self.assertEquals(okPlainText + 'text', result)

        logline = output.getvalue()
        beforeTimestamp = logline.split('[',1)[0]
        afterTimestamp = logline.split(']', 1)[-1]
        self.assertEquals('127.0.0.1 - - ', beforeTimestamp)
        self.assertEquals(' "GET /path?key=value HTTP/1.0" 200 ?? "-" "-"\n'
                , afterTimestamp)

        self.assertEquals(['handleRequest'], [m.name for m in observer.calledMethods])
        self.assertEquals([dict(Method='GET', Client=('127.0.0.1', 1234), RequestURI='http://example.org/path?key=value', query='key=value', path='/path', Headers={}, otherKwarg='value')], [m.kwargs for m in observer.calledMethods])
    def testLogHttpError(self):
        output = StringIO()
        logger = ApacheLogger(output)
        observer = CallTrace('handler')
        logger.addObserver(observer)

        logger.logHttpError(Method='GET',
                            ResponseCode=503,
                            Client=('127.0.0.1', 1234),
                            RequestURI='http://example.org/path?key=value',
                            Headers={},
                            otherKwarg='value')

        logline = output.getvalue()
        beforeTimestamp = logline.split('[', 1)[0]
        afterTimestamp = logline.split(']', 1)[-1]
        self.assertEquals('127.0.0.1 - - ', beforeTimestamp)
        self.assertEquals(' "GET /path?key=value HTTP/1.0" 503 ?? "-" "-"\n',
                          afterTimestamp)

        self.assertEquals(['logHttpError'],
                          [m.name for m in observer.calledMethods])
        self.assertEquals([
            dict(Method='GET',
                 ResponseCode=503,
                 Client=('127.0.0.1', 1234),
                 RequestURI='http://example.org/path?key=value',
                 Headers={},
                 otherKwarg='value')
        ], [m.kwargs for m in observer.calledMethods])
Example #7
0
def main(reactor, port, databasePath):
    drilldownFields = [
        DrilldownField('untokenized.field2'),
        DrilldownField('untokenized.fieldHier', hierarchical=True)
    ]

    fieldRegistry = FieldRegistry(drilldownFields)
    luceneSettings = LuceneSettings(fieldRegistry=fieldRegistry,
                                    commitCount=30,
                                    commitTimeout=1,
                                    analyzer=MerescoDutchStemmingAnalyzer())
    lucene = Lucene(path=join(databasePath, 'lucene'),
                    reactor=reactor,
                    name='main',
                    settings=luceneSettings)

    lucene2Settings = LuceneSettings(fieldRegistry=fieldRegistry,
                                     commitTimeout=0.1)
    lucene2 = Lucene(path=join(databasePath, 'lucene2'),
                     reactor=reactor,
                     name='main2',
                     settings=lucene2Settings)

    termNumerator = TermNumerator(path=join(databasePath, 'termNumerator'))

    emptyLuceneSettings = LuceneSettings(commitTimeout=1)
    multiLuceneHelix = (
        MultiLucene(defaultCore='main'),
        (Lucene(path=join(databasePath, 'lucene-empty'),
                reactor=reactor,
                name='empty-core',
                settings=emptyLuceneSettings), ),
        (lucene, ),
        (lucene2, ),
    )
    storageComponent = StorageComponent(
        directory=join(databasePath, 'storage'))

    return \
    (Observable(),
        (ObservableHttpServer(reactor=reactor, port=port),
            (BasicHttpHandler(),
                (ApacheLogger(outputStream=stdout),
                    (PathFilter("/info", excluding=[
                            '/info/version',
                            '/info/name',
                            '/update',
                            '/sru',
                            '/remote',
                            '/via-remote-sru',
                        ]),
                        (DynamicHtml(
                                [dynamicPath],
                                reactor=reactor,
                                indexPage='/info',
                                additionalGlobals={
                                    'VERSION': version,
                                }
                            ),
                        )
                    ),
                    (PathFilter("/info/version"),
                        (StringServer(version, ContentTypePlainText), )
                    ),
                    (PathFilter("/info/name"),
                        (StringServer('Meresco Lucene', ContentTypePlainText),)
                    ),
                    (PathFilter("/static"),
                        (PathRename(lambda path: path[len('/static'):]),
                            (FileServer(staticPath),)
                        )
                    ),
                    (PathFilter("/update_main", excluding=['/update_main2']),
                        uploadHelix(lucene, termNumerator, storageComponent, drilldownFields, fieldRegistry=luceneSettings.fieldRegistry),
                    ),
                    (PathFilter("/update_main2"),
                        uploadHelix(lucene2, termNumerator, storageComponent, drilldownFields, fieldRegistry=lucene2Settings.fieldRegistry),
                    ),
                    (PathFilter('/sru'),
                        (SruParser(defaultRecordSchema='record'),
                            (SruHandler(),
                                (MultiCqlToLuceneQuery(
                                    defaultCore='main',
                                    coreToCqlLuceneQueries={
                                        "main": CqlToLuceneQuery([], luceneSettings=luceneSettings),
                                        "main2": CqlToLuceneQuery([], luceneSettings=lucene2Settings),
                                        "empty-core": CqlToLuceneQuery([], luceneSettings=emptyLuceneSettings),
                                    }),
                                    multiLuceneHelix,
                                ),
                                (SRUTermDrilldown(defaultFormat='xml'),),
                                (SruDuplicateCount(),),
                                (storageComponent,),
                            )
                        )
                    ),
                    (PathFilter('/via-remote-sru'),
                        (SruParser(defaultRecordSchema='record'),
                            (SruHandler(),
                                (LuceneRemote(host='localhost', port=port, path='/remote'),),
                                (SRUTermDrilldown(defaultFormat='xml'),),
                                (SruDuplicateCount(),),
                                (storageComponent,),
                            )
                        )
                    ),
                    (PathFilter('/remote'),
                        (LuceneRemoteService(reactor=reactor),
                            (MultiCqlToLuceneQuery(
                                    defaultCore='main',
                                    coreToCqlLuceneQueries={
                                        "main": CqlToLuceneQuery([], luceneSettings=luceneSettings),
                                        "main2": CqlToLuceneQuery([], luceneSettings=lucene2Settings),
                                        "empty-core": CqlToLuceneQuery([], luceneSettings=emptyLuceneSettings),
                                    }),
                                multiLuceneHelix,
                            )
                        )
                    ),
                    (PathFilter('/autocomplete'),
                        (Autocomplete('localhost', port, '/autocomplete', '__all__', '?', 5, '?', '?'),
                            (lucene,),
                        )
                    )
                )
            )
        )
    )