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)
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])
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])
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,), ) ) ) ) ) )