Example #1
0
 def testLuceneServerHostPortDynamic(self):
     multiLucene = MultiLucene(defaultCore='core1')
     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))
     multiLucene.addObserver(observer)
     query = QueryExpressionToLuceneQueryDict([], LuceneSettings()).convert(cqlToExpression("field=value"))
     response = retval(multiLucene.executeComposedQuery(ComposedQuery('core1', query)))
     self.assertEquals(887, response.total)
     self.assertEquals(['luceneServer', 'httprequest1_1'], observer.calledMethodNames())
Example #2
0
 def setUp(self):
     SeecrTestCase.setUp(self)
     self.registry = FieldRegistry()
     self._multiLucene = MultiLucene(defaultCore='coreA', host="localhost", port=12345)
     self._lucene = Lucene(host="localhost", port=12345, settings=LuceneSettings(), name='coreA')
     self._multiLucene.addObserver(self._lucene)
     self.post = []
     self.response = ""
     def mockPost(data, path, **kwargs):
         self.post.append(dict(data=data, path=path))
         raise StopIteration(self.response)
         yield
     connect = self._multiLucene._connect()
     connect._post = mockPost
     self._multiLucene._connect = lambda: connect
    def setUp(self):
        SeecrTestCase.setUp(self)
        self.registry = FieldRegistry()

        self._multiLucene = MultiLucene(defaultCore='coreA', host="localhost", port=12345)
        self._lucene = Lucene(host="localhost", port=12345, settings=LuceneSettings(), name='coreA')
        self._multiLucene.addObserver(self._lucene)
        self.post = []
        self.response = ""
        def mockPost(data, path, **kwargs):
            self.post.append(dict(data=data, path=path))
            raise StopIteration(self.response)
            yield
        self._multiLucene._connect._post = mockPost
Example #4
0
class MultiLuceneTest(SeecrTestCase):
    def setUp(self):
        SeecrTestCase.setUp(self)
        self.registry = FieldRegistry()
        self._multiLucene = MultiLucene(defaultCore='coreA', host="localhost", port=12345)
        self._lucene = Lucene(host="localhost", port=12345, settings=LuceneSettings(), name='coreA')
        self._multiLucene.addObserver(self._lucene)
        self.post = []
        self.response = ""
        def mockPost(data, path, **kwargs):
            self.post.append(dict(data=data, path=path))
            raise StopIteration(self.response)
            yield
        connect = self._multiLucene._connect()
        connect._post = mockPost
        self._multiLucene._connect = lambda: connect

    def testInfoOnQuery(self):
        self.response = JsonDict({
                "total": 887,
                "queryTime": 6,
                "hits": [{"id": "record:1", "score": 0.1234}]
            }).dumps()

        q = ComposedQuery('coreA')
        q.addFilterQuery('coreB', query='N=true')
        q.addMatch(dict(core='coreA', uniqueKey='A'), dict(core='coreB', key='B'))
        result = retval(self._multiLucene.executeComposedQuery(q))
        self.assertEquals({
            'query': {
                'cores': ['coreB', 'coreA'],
                'drilldownQueries': {},
                'facets': {},
                'filterQueries': {'coreB': ['N=true']},
                'matches': {'coreA->coreB': [{'core': 'coreA', 'uniqueKey': 'A'}, {'core': 'coreB', 'key': 'B'}]},
                'otherCoreFacetFilters': {},
                'queries': {},
                'rankQueries': {},
                'resultsFrom': 'coreA',
                'sortKeys': [],
                'unites': []
            },
            'type': 'ComposedQuery'
        }, result.info)

    def testComposedQuery(self):
        self.response = JsonDict({
                "total": 887,
                "queryTime": 6,
                "hits": [{"id": "record:1", "score": 0.1234}]
            }).dumps()

        cq = ComposedQuery('coreA')
        q = QueryExpressionToLuceneQueryDict([], LuceneSettings()).convert(cqlToExpression("field=value"))
        cq.setCoreQuery("coreA", q)

        consume(self._multiLucene.executeComposedQuery(cq))
        self.assertEqual(1, len(self.post))
        self.assertEqual("/query/", self.post[0]['path'])
        self.assertEqual({
                "_sortKeys": [],
                "resultsFrom": "coreA",
                "_matches": {},
                "_facets": {},
                "_otherCoreFacetFilters": {},
                "_rankQueries": {},
                "_drilldownQueries": {},
                "_unites": [],
                "_queries": {"coreA": {"term": {"field": "field", "value": "value"}, "type": "TermQuery"}},
                "cores": ["coreA"],
                "_filterQueries": {}
            }, loads(self.post[0]['data']))

    def testAddTypeAndMissingValueToSortField(self):
        self.response = JsonDict({
                "total": 887,
                "queryTime": 6,
                "hits": [{"id": "record:1", "score": 0.1234}]
            }).dumps()

        cq = ComposedQuery('coreA')
        q = QueryExpressionToLuceneQueryDict([], LuceneSettings()).convert(cqlToExpression("field=value"))
        cq.setCoreQuery('coreB', q)
        cq.sortKeys = [dict(sortBy='sortField', core='coreA', sortDescending=True)]
        cq.addMatch(dict(core='coreA', uniqueKey='A'), dict(core='coreB', key='B'))
        consume(self._multiLucene.executeComposedQuery(cq))
        self.assertEqual({
                "_sortKeys": [{'core': 'coreA', 'sortBy': 'sortField', 'sortDescending': True, 'type': 'String', 'missingValue': 'STRING_FIRST'}],
                "resultsFrom": "coreA",
                '_matches': {'coreA->coreB': [{'core': 'coreA', 'uniqueKey': 'A'}, {'core': 'coreB', 'key': 'B'}]},
                "_facets": {},
                "_otherCoreFacetFilters": {},
                "_rankQueries": {},
                "_drilldownQueries": {},
                "_unites": [],
                '_queries': {'coreB': {'term': {'field': 'field', 'value': 'value'}, 'type': 'TermQuery'}},
                "cores": ["coreB", "coreA"],
                "_filterQueries": {}
            }, loads(self.post[0]['data']))

    def testCoreInfo(self):
        infos = asList(self._multiLucene.coreInfo())
        self.assertEquals(1, len(infos))

    def testLuceneServerHostPortDynamic(self):
        multiLucene = MultiLucene(defaultCore='core1')
        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))
        multiLucene.addObserver(observer)
        query = QueryExpressionToLuceneQueryDict([], LuceneSettings()).convert(cqlToExpression("field=value"))
        response = retval(multiLucene.executeComposedQuery(ComposedQuery('core1', query)))
        self.assertEquals(887, response.total)
        self.assertEquals(['luceneServer', 'httprequest1_1'], observer.calledMethodNames())
Example #5
0
class MultiLuceneTest(SeecrTestCase):
    def setUp(self):
        SeecrTestCase.setUp(self)
        self.registry = FieldRegistry()

        self._multiLucene = MultiLucene(defaultCore="coreA", host="localhost", port=12345)
        self._lucene = Lucene(host="localhost", port=12345, settings=LuceneSettings(), name="coreA")
        self._multiLucene.addObserver(self._lucene)
        self.post = []
        self.response = ""

        def mockPost(data, path, **kwargs):
            self.post.append(dict(data=data, path=path))
            raise StopIteration(self.response)
            yield

        self._multiLucene._connect._post = mockPost

    def testInfoOnQuery(self):
        self.response = JsonDict({"total": 887, "queryTime": 6, "hits": [{"id": "record:1", "score": 0.1234}]}).dumps()

        q = ComposedQuery("coreA")
        q.addFilterQuery("coreB", query="N=true")
        q.addMatch(dict(core="coreA", uniqueKey="A"), dict(core="coreB", key="B"))
        result = retval(self._multiLucene.executeComposedQuery(q))
        self.assertEquals(
            {
                "query": {
                    "cores": ["coreB", "coreA"],
                    "drilldownQueries": {},
                    "facets": {},
                    "filterQueries": {"coreB": ["N=true"]},
                    "matches": {"coreA->coreB": [{"core": "coreA", "uniqueKey": "A"}, {"core": "coreB", "key": "B"}]},
                    "otherCoreFacetFilters": {},
                    "queries": {},
                    "rankQueries": {},
                    "resultsFrom": "coreA",
                    "sortKeys": [],
                    "unites": [],
                },
                "type": "ComposedQuery",
            },
            result.info,
        )

    def testComposedQuery(self):
        self.response = JsonDict({"total": 887, "queryTime": 6, "hits": [{"id": "record:1", "score": 0.1234}]}).dumps()

        cq = ComposedQuery("coreA")
        q = QueryExpressionToLuceneQueryDict([], LuceneSettings()).convert(cqlToExpression("field=value"))
        cq.setCoreQuery("coreA", q)

        consume(self._multiLucene.executeComposedQuery(cq))
        self.assertEqual(1, len(self.post))
        self.assertEqual("/query/", self.post[0]["path"])
        self.assertEqual(
            {
                "_sortKeys": [],
                "resultsFrom": "coreA",
                "_matches": {},
                "_facets": {},
                "_otherCoreFacetFilters": {},
                "_rankQueries": {},
                "_drilldownQueries": {},
                "_unites": [],
                "_queries": {"coreA": {"term": {"field": "field", "value": "value"}, "type": "TermQuery"}},
                "cores": ["coreA"],
                "_filterQueries": {},
            },
            loads(self.post[0]["data"]),
        )

    def testAddTypeAndMissingValueToSortField(self):
        self.response = JsonDict({"total": 887, "queryTime": 6, "hits": [{"id": "record:1", "score": 0.1234}]}).dumps()

        cq = ComposedQuery("coreA")
        q = QueryExpressionToLuceneQueryDict([], LuceneSettings()).convert(cqlToExpression("field=value"))
        cq.setCoreQuery("coreB", q)
        cq.sortKeys = [dict(sortBy="sortField", core="coreA", sortDescending=True)]
        cq.addMatch(dict(core="coreA", uniqueKey="A"), dict(core="coreB", key="B"))
        consume(self._multiLucene.executeComposedQuery(cq))
        self.assertEqual(
            {
                "_sortKeys": [
                    {
                        "core": "coreA",
                        "sortBy": "sortField",
                        "sortDescending": True,
                        "type": "String",
                        "missingValue": "STRING_FIRST",
                    }
                ],
                "resultsFrom": "coreA",
                "_matches": {"coreA->coreB": [{"core": "coreA", "uniqueKey": "A"}, {"core": "coreB", "key": "B"}]},
                "_facets": {},
                "_otherCoreFacetFilters": {},
                "_rankQueries": {},
                "_drilldownQueries": {},
                "_unites": [],
                "_queries": {"coreB": {"term": {"field": "field", "value": "value"}, "type": "TermQuery"}},
                "cores": ["coreB", "coreA"],
                "_filterQueries": {},
            },
            loads(self.post[0]["data"]),
        )

    def testCoreInfo(self):
        infos = asList(self._multiLucene.coreInfo())
        self.assertEquals(1, len(infos))