def testLuceneServerHostPortDynamic(self): lucene = Lucene(name='lucene', settings=LuceneSettings(), readonly=True) def httprequest1_1Mock(**kwargs): raise StopIteration(parseResponse(HTTP_RESPONSE)) yield observer = CallTrace( 'observer', returnValues=dict(luceneServer=('example.org', 1234)), methods=dict(httprequest1_1=httprequest1_1Mock)) lucene.addObserver(observer) query = QueryExpressionToLuceneQueryDict([], LuceneSettings()).convert(cqlToExpression("field=value")) response = retval(lucene.executeQuery( luceneQuery=query, start=1, stop=5, )) self.assertEquals(887, response.total) self.assertEquals(['luceneServer', 'httprequest1_1'], observer.calledMethodNames())
class LuceneTestCase(SeecrTestCase): def setUp(self, fieldRegistry=FieldRegistry()): super(LuceneTestCase, self).setUp() self._javaObjects = self._getJavaObjects() self._reactor = CallTrace('reactor', methods={'addTimer': lambda seconds, callback: CallTrace('timer')}) self._defaultSettings = LuceneSettings(commitCount=1, commitTimeout=1, fieldRegistry=fieldRegistry) self.lucene = Lucene( join(self.tempdir, 'lucene'), reactor=self._reactor, settings=self._defaultSettings, ) self.observer = CallTrace() self.lucene.addObserver(self.observer) def tearDown(self): try: self._reactor.calledMethods.reset() # don't keep any references. self.lucene.close() self.lucene = None gc.collect() diff = self._getJavaObjects() - self._javaObjects self.assertEquals(0, len(diff), diff) finally: SeecrTestCase.tearDown(self) def _getJavaObjects(self): refs = VM._dumpRefs(classes=True) return set( [(c, refs[c]) for c in refs.keys() if c != 'class java.lang.Class' and c != 'class org.apache.lucene.document.Field' and # Fields are kept in FieldRegistry for reusing c != 'class org.apache.lucene.document.NumericDocValuesField' and c != 'class org.apache.lucene.facet.FacetsConfig' ])