示例#1
0
    def test_search(self):
        # XXX: Solr 7 has a new query param 'q.op' which can not be passed to
        # the search method in Python.
        # This is why we have commented out code here.
        search_request = getData("search_request.txt").rstrip(b"\n")
        search_request_py2 = getData("search_request_py2.txt").rstrip(b"\n")
        search_response = getData("search_response.txt")
        c = SolrConnection(host="localhost:8983", persistent=True)
        output = fakehttp(c, search_response)
        parameters = {
            "q": "+id:[* TO *]",
            "fl": "* score",
            "wt": "xml",
            "rows": "10",
            "indent": "on",
            "q.op": "AND",
            "lowercaseOperators": "true",
            "sow": "true",
        }

        res = c.search(**parameters)
        res = fromstring(res.read())
        normalize = lambda x: sorted(x.split(b"&"))  # sort request params
        self.assertIn(
            normalize(output.get()),
            [normalize(search_request),
             normalize(search_request_py2)],
        )
        self.failUnless(res.find((".//doc")))
 def test_commit_no_wait(self):
     commit_request = getData('commit_request_no_wait.txt')
     commit_response = getData('commit_response.txt')
     c = SolrConnection(host='localhost:8983', persistent=True)
     output = fakehttp(c, commit_response)
     c.commit(waitFlush=False, waitSearcher=False)
     self.failUnlessEqual(str(output), commit_request)
示例#3
0
    def getConnection(self):
        """ returns an existing connection or opens one """
        if not isActive():
            return None
        conn = getLocal('connection')
        if conn is not None:
            return conn

        zcmlconfig = queryUtility(IZCMLSolrConnectionConfig)
        registry = getUtility(IRegistry)
        config_host = registry['collective.solr.host']
        if zcmlconfig is not None:
            # use connection parameters defined in zcml...
            logger.debug('opening connection to %s', zcmlconfig.host)
            conn = SolrConnection(host=zcmlconfig.host,
                                  solrBase=zcmlconfig.base,
                                  persistent=True)
            setLocal('connection', conn)
        elif config_host is not None:
            # otherwise use connection parameters defined in control panel...
            config_port = registry['collective.solr.port']
            config_base = registry['collective.solr.base']
            host = '%s:%d' % (config_host, config_port)
            logger.debug('opening connection to %s', host)
            conn = SolrConnection(host=host,
                                  solrBase=config_base,
                                  persistent=True)
            setLocal('connection', conn)
        return conn
示例#4
0
 def test_optimize(self):
     commit_request = getData('optimize_request.txt')
     commit_response = getData('commit_response.txt')
     c = SolrConnection(host='localhost:8983', persistent=True)
     output = fakehttp(c, commit_response)
     c.commit(optimize=True)
     self.failUnlessEqual(str(output), commit_request)
    def getConnection(self):
        """ returns an existing connection or opens one """
        config = getUtility(ISolrConnectionConfig)
        if not config.active:
            return None
        conn = getLocal('connection')
        if conn is not None:
            return conn

        zcmlconfig = queryUtility(IZCMLSolrConnectionConfig)
        if zcmlconfig is not None:
            # use connection parameters defined in zcml...
            logger.debug('opening connection to %s', zcmlconfig.host)
            conn = SolrConnection(host=zcmlconfig.host,
                                  solrBase=zcmlconfig.base,
                                  persistent=True)
            setLocal('connection', conn)
        elif config.host is not None:
            # otherwise use connection parameters defined in control panel...
            host = '%s:%d' % (config.host, config.port)
            logger.debug('opening connection to %s', host)
            conn = SolrConnection(host=host,
                                  solrBase=config.base,
                                  persistent=True)
            setLocal('connection', conn)
        return conn
 def test_optimize(self):
     commit_request = getData('optimize_request.txt')
     commit_response = getData('commit_response.txt')
     c = SolrConnection(host='localhost:8983', persistent=True)
     output = fakehttp(c, commit_response)
     c.commit(optimize=True)
     self.failUnlessEqual(str(output), commit_request)
示例#7
0
 def test_commit_no_wait_flush(self):
     commit_request = getData('commit_request.txt').rstrip('\n')
     commit_response = getData('commit_response.txt')
     c = SolrConnection(host='localhost:8983', persistent=True)
     output = fakehttp(c, commit_response)
     c.commit()
     self.failUnlessEqual(str(output), commit_request)
示例#8
0
 def test_commit_no_wait(self):
     commit_request = getData('commit_request_no_wait.txt')
     commit_response = getData('commit_response.txt')
     c = SolrConnection(host='localhost:8983', persistent=True)
     output = fakehttp(c, commit_response)
     c.commit(waitFlush=False, waitSearcher=False)
     self.failUnlessEqual(str(output), commit_request)
示例#9
0
 def test_optimize(self):
     commit_request = getData("optimize_request.txt").rstrip(b"\n")
     commit_response = getData("commit_response.txt")
     c = SolrConnection(host="localhost:8983", persistent=True)
     output = fakehttp(c, commit_response)
     c.commit(optimize=True)
     self.failUnlessEqual(str(output), commit_request.decode("utf-8"))
示例#10
0
 def test_commit_no_wait_searcher(self):
     commit_request = getData("commit_request_no_wait_searcher.txt").rstrip(
         b"\n")
     commit_response = getData("commit_response.txt")
     c = SolrConnection(host="localhost:8983", persistent=True)
     output = fakehttp(c, commit_response)
     c.commit(waitSearcher=False)
     self.failUnlessEqual(str(output), commit_request.decode("utf-8"))
示例#11
0
 def test_search(self):
     search_request = getData('search_request.txt')
     search_response = getData('search_response.txt')
     c = SolrConnection(host='localhost:8983', persistent=True)
     output = fakehttp(c, search_response)
     res = c.search(q='+id:[* TO *]', wt='xml', rows='10', indent='on')
     res = fromstring(res.read())
     self.failUnlessEqual(str(output), search_request)
     self.failUnless(res.find(('.//doc')))
示例#12
0
 def test_search(self):
     search_request = getData('search_request.txt')
     search_response = getData('search_response.txt')
     c = SolrConnection(host='localhost:8983', persistent=True)
     output = fakehttp(c, search_response)
     res = c.search(q='+id:[* TO *]', wt='xml', rows='10', indent='on')
     res = fromstring(res.read())
     self.failUnlessEqual(str(output), search_request)
     self.failUnless(res.find(('.//doc')))
示例#13
0
 def test_search(self):
     search_request = getData('search_request.txt')
     search_response = getData('search_response.txt')
     c = SolrConnection(host='localhost:8983', persistent=True)
     output = fakehttp(c, search_response)
     res = c.search(q='+id:[* TO *]', fl='* score', wt='xml', rows='10', indent='on')
     res = fromstring(res.read())
     normalize = lambda x: sorted(x.split('&'))      # sort request params
     self.assertEqual(normalize(output.get()), normalize(search_request))
     self.failUnless(res.find(('.//doc')))
示例#14
0
 def test_add_with_boost_values(self):
     add_request = getData('add_request_with_boost_values.txt')
     add_response = getData('add_response.txt')
     c = SolrConnection(host='localhost:8983', persistent=True)
     output = fakehttp(c, add_response)
     boost = {'': 2, 'id': 0.5, 'name': 5}
     c.add(boost_values=boost, id='500', name='python test doc')
     res = c.flush()
     self.assertEqual(len(res), 1)   # one request was sent
     res = res[0]
     self.failUnlessEqual(str(output), add_request)
 def test_search(self):
     search_request = getData('search_request.txt')
     search_response = getData('search_response.txt')
     c = SolrConnection(host='localhost:8983', persistent=True)
     output = fakehttp(c, search_response)
     res = c.search(
         q='+id:[* TO *]', fl='* score', wt='xml', rows='10', indent='on')
     res = fromstring(res.read())
     normalize = lambda x: sorted(x.split('&'))      # sort request params
     self.assertEqual(normalize(output.get()), normalize(search_request))
     self.failUnless(res.find(('.//doc')))
 def test_add_with_boost_values(self):
     add_request = getData('add_request_with_boost_values.txt')
     add_response = getData('add_response.txt')
     c = SolrConnection(host='localhost:8983', persistent=True)
     output = fakehttp(c, add_response)
     boost = {'': 2, 'id': 0.5, 'name': 5}
     c.add(boost_values=boost, id='500', name='python test doc')
     res = c.flush()
     self.assertEqual(len(res), 1)   # one request was sent
     res = res[0]
     self.failUnlessEqual(str(output), add_request)
示例#17
0
 def test_connection_str(self):
     c = SolrConnection(host='localhost:8983', persistent=True)
     self.assertEqual(
         str(c),
         "SolrConnection{host=localhost:8983, solrBase=/solr/plone, "
         "persistent=True, postHeaders={'Content-Type': 'text/xml; "
         "charset=utf-8'}, reconnects=0}")
示例#18
0
    def test_add(self):
        config = getConfig()
        config.atomic_updates = True
        add_request = getData('add_request.txt').rstrip('\n')
        add_response = getData('add_response.txt')

        c = SolrConnection(host='localhost:8983', persistent=True)

        # fake schema response - caches the schema
        fakehttp(c, getData('schema.xml'))
        c.get_schema()

        output = fakehttp(c, add_response)
        c.add(id='500', name='python test doc')
        res = c.flush()
        self.assertEqual(len(res), 1)   # one request was sent
        res = res[0]
        self.failUnlessEqual(str(output), add_request)
        # Status
        node = res.findall(".//int")[0]
        self.failUnlessEqual(node.attrib['name'], 'status')
        self.failUnlessEqual(node.text, '0')
        # QTime
        node = res.findall(".//int")[1]
        self.failUnlessEqual(node.attrib['name'], 'QTime')
        self.failUnlessEqual(node.text, '4')
        res.find('QTime')
示例#19
0
    def test_add(self):
        config = getConfig()
        config.atomic_updates = True
        add_request = getData("add_request.txt").rstrip(b"\n")
        add_response = getData("add_response.txt")

        c = SolrConnection(host="localhost:8983", persistent=True)

        # fake schema response - caches the schema
        fakehttp(c, getData("schema.xml"))
        c.get_schema()

        output = fakehttp(c, add_response)
        c.add(id="500", name="python test doc")
        res = c.flush()
        self.assertEqual(len(res), 1)  # one request was sent
        res = res[0]
        self.failUnlessEqual(str(output), add_request.decode("utf-8"))
        # Status
        node = res.findall(".//int")[0]
        self.failUnlessEqual(node.attrib["name"], "status")
        self.failUnlessEqual(node.text, "0")
        # QTime
        node = res.findall(".//int")[1]
        self.failUnlessEqual(node.attrib["name"], "QTime")
        self.failUnlessEqual(node.text, "4")
        res.find("QTime")
 def test_commit(self):
     commit_request = getData('commit_request.txt')
     commit_response = getData('commit_response.txt')
     c = SolrConnection(host='localhost:8983', persistent=True)
     output = fakehttp(c, commit_response)
     res = c.commit()
     self.assertEqual(len(res), 1)   # one request was sent
     res = res[0]
     self.failUnlessEqual(str(output), commit_request)
     # Status
     node = res.findall(".//int")[0]
     self.failUnlessEqual(node.attrib['name'], 'status')
     self.failUnlessEqual(node.text, '0')
     # QTime
     node = res.findall(".//int")[1]
     self.failUnlessEqual(node.attrib['name'], 'QTime')
     self.failUnlessEqual(node.text, '55')
     res.find('QTime')
示例#21
0
 def test_commit(self):
     commit_request = getData("commit_request.txt").rstrip(b"\n")
     commit_response = getData("commit_response.txt")
     c = SolrConnection(host="localhost:8983", persistent=True)
     output = fakehttp(c, commit_response)
     res = c.commit()
     self.assertEqual(len(res), 1)  # one request was sent
     res = res[0]
     self.failUnlessEqual(str(output), commit_request.decode("utf-8"))
     # Status
     node = res.findall(".//int")[0]
     self.failUnlessEqual(node.attrib["name"], "status")
     self.failUnlessEqual(node.text, "0")
     # QTime
     node = res.findall(".//int")[1]
     self.failUnlessEqual(node.attrib["name"], "QTime")
     self.failUnlessEqual(node.text, "55")
     res.find("QTime")
示例#22
0
 def test_commit(self):
     commit_request = getData('commit_request.txt')
     commit_response = getData('commit_response.txt')
     c = SolrConnection(host='localhost:8983', persistent=True)
     output = fakehttp(c, commit_response)
     res = c.commit()
     self.assertEqual(len(res), 1)   # one request was sent
     res = res[0]
     self.failUnlessEqual(str(output), commit_request)
     # Status
     node = res.findall(".//int")[0]
     self.failUnlessEqual(node.attrib['name'], 'status')
     self.failUnlessEqual(node.text, '0')
     # QTime
     node = res.findall(".//int")[1]
     self.failUnlessEqual(node.attrib['name'], 'QTime')
     self.failUnlessEqual(node.text, '55')
     res.find('QTime')
 def test_add(self):
     add_request = getData('add_request.txt')
     add_response = getData('add_response.txt')
     c = SolrConnection(host='localhost:8983', persistent=True)
     output = fakehttp(c, add_response)
     c.add(id='500', name='python test doc')
     res = c.flush()
     self.assertEqual(len(res), 1)   # one request was sent
     res = res[0]
     self.failUnlessEqual(str(output), add_request)
     # Status
     node = res.findall(".//int")[0]
     self.failUnlessEqual(node.attrib['name'], 'status')
     self.failUnlessEqual(node.text, '0')
     # QTime
     node = res.findall(".//int")[1]
     self.failUnlessEqual(node.attrib['name'], 'QTime')
     self.failUnlessEqual(node.text, '4')
     res.find('QTime')
示例#24
0
 def test_delete(self):
     delete_request = getData('delete_request.txt').rstrip('\n')
     delete_response = getData('delete_response.txt')
     c = SolrConnection(host='localhost:8983', persistent=True)
     output = fakehttp(c, delete_response)
     c.delete('500')
     res = c.flush()
     self.assertEqual(len(res), 1)   # one request was sent
     res = res[0]
     self.failUnlessEqual(str(output), delete_request)
     # Status
     node = res.findall(".//int")[0]
     self.failUnlessEqual(node.attrib['name'], 'status')
     self.failUnlessEqual(node.text, '0')
     # QTime
     node = res.findall(".//int")[1]
     self.failUnlessEqual(node.attrib['name'], 'QTime')
     self.failUnlessEqual(node.text, '0')
     res.find('QTime')
示例#25
0
 def test_add(self):
     add_request = getData('add_request.txt')
     add_response = getData('add_response.txt')
     c = SolrConnection(host='localhost:8983', persistent=True)
     output = fakehttp(c, add_response)
     c.add(id='500', name='python test doc')
     res = c.flush()
     self.assertEqual(len(res), 1)   # one request was sent
     res = res[0]
     self.failUnlessEqual(str(output), add_request)
     # Status
     node = res.findall(".//int")[0]
     self.failUnlessEqual(node.attrib['name'], 'status')
     self.failUnlessEqual(node.text, '0')
     # QTime
     node = res.findall(".//int")[1]
     self.failUnlessEqual(node.attrib['name'], 'QTime')
     self.failUnlessEqual(node.text, '4')
     res.find('QTime')
示例#26
0
    def test_search(self):
        # XXX: Solr 7 has a new query param 'q.op' which can not be passed to
        # the search method in Python.
        # This is why we have commented out code here.
        search_request = getData('search_request.txt').rstrip('\n')
        search_response = getData('search_response.txt')
        c = SolrConnection(host='localhost:8983', persistent=True)
        output = fakehttp(c, search_response)
        parameters = {'q': '+id:[* TO *]',
                      'fl': '* score',
                      'wt': 'xml',
                      'rows': '10',
                      'indent': 'on',
                      'q.op': 'AND',
                      'lowercaseOperators': 'true',
                      'sow': 'true'}

        res = c.search(**parameters)
        res = fromstring(res.read())
        normalize = lambda x: sorted(x.split('&'))      # sort request params
        self.assertEqual(normalize(output.get()), normalize(search_request))
        self.failUnless(res.find(('.//doc')))
示例#27
0
 def getConnection(self):
     """ returns an existing connection or opens one """
     config = getUtility(ISolrConnectionConfig)
     if not config.active:
         return None
     conn = getLocal('connection')
     if conn is None and config.host is not None:
         host = '%s:%d' % (config.host, config.port)
         logger.debug('opening connection to %s', host)
         conn = SolrConnection(host=host,
                               solrBase=config.base,
                               persistent=True)
         setLocal('connection', conn)
     return conn
示例#28
0
    def getConnection(self, core=None):
        """ returns an existing connection or opens one """
        if not isActive():
            return None
        if core is None:
            connection_key = 'connection'
        else:
            connection_key = 'connection_{0}'.format(core)
        conn = getLocal(connection_key)
        if conn is not None:
            return conn

        zcmlconfig = queryUtility(IZCMLSolrConnectionConfig)
        registry = getUtility(IRegistry)
        config_host = registry['collective.solr.host']
        if zcmlconfig is not None:
            # use connection parameters defined in zcml...
            logger.debug('opening connection to %s', zcmlconfig.host)
            conn = SolrConnection(host=zcmlconfig.host,
                                  solrBase=zcmlconfig.base,
                                  persistent=True)
            setLocal(connection_key, conn)
        elif config_host is not None:
            # otherwise use connection parameters defined in control panel...
            config_port = registry['collective.solr.port']
            config_base = registry['collective.solr.base']
            if core is not None:
                config_base = '/'.join([config_base, core])
            config_base = config_base.rstrip('/')
            host = '%s:%d' % (config_host, config_port)
            logger.debug('opening connection to %s', host)
            conn = SolrConnection(host=host,
                                  solrBase=config_base,
                                  persistent=True)
            setLocal(connection_key, conn)
        return conn
示例#29
0
    def test_add_with_boost_values(self):
        config = getConfig()
        config.atomic_updates = False
        add_request = getData('add_request_with_boost_values.txt').rstrip('\n')
        add_response = getData('add_response.txt')
        c = SolrConnection(host='localhost:8983', persistent=True)

        # fake schema response - caches the schema
        fakehttp(c, getData('schema.xml'))
        c.get_schema()

        output = fakehttp(c, add_response)
        boost = {'': 2, 'id': 0.5, 'name': 5}
        c.add(boost_values=boost,
              atomic_updates=False,  # Force disabling atomic updates
              id='500',
              name='python test doc')

        res = c.flush()
        self.assertEqual(len(res), 1)   # one request was sent
        self.failUnlessEqual(str(output), add_request)
示例#30
0
    def test_add_with_boost_values(self):
        config = getConfig()
        config.atomic_updates = False
        add_request = getData("add_request_with_boost_values.txt").rstrip(
            b"\n")
        add_response = getData("add_response.txt")
        c = SolrConnection(host="localhost:8983", persistent=True)

        # fake schema response - caches the schema
        fakehttp(c, getData("schema.xml"))
        c.get_schema()

        output = fakehttp(c, add_response)
        boost = {"": 2, "id": 0.5, "name": 5}
        c.add(
            boost_values=boost,
            atomic_updates=False,  # Force disabling atomic updates
            id="500",
            name="python test doc",
        )

        res = c.flush()
        self.assertEqual(len(res), 1)  # one request was sent
        self.failUnlessEqual(str(output), add_request.decode("utf-8"))
示例#31
0
    def test_add_with_boost_values(self):
        config = getConfig()
        config.atomic_updates = False
        add_request = getData('add_request_with_boost_values.txt')
        add_response = getData('add_response.txt')
        c = SolrConnection(host='localhost:8983', persistent=True)

        # fake schema response - caches the schema
        fakehttp(c, getData('schema.xml'))
        c.get_schema()

        output = fakehttp(c, add_response)
        boost = {'': 2, 'id': 0.5, 'name': 5}
        c.add(boost_values=boost,
              atomic_updates=False,  # Force disabling atomic updates
              id='500',
              name='python test doc')

        res = c.flush()
        self.assertEqual(len(res), 1)   # one request was sent
        self.failUnlessEqual(str(output), add_request)
示例#32
0
 def test_search_with_custom_request_handler(self):
     search_response = getData('search_response.txt')
     c = SolrConnection(host='localhost:8983', persistent=True)
     fakehttp(c, search_response)
     c.search(request_handler='custom', q='+id:[* TO *]')
     self.assertEqual('/solr/plone/custom', c.conn.url)
示例#33
0
 def test_search_with_custom_request_handler(self):
     search_response = getData("search_response.txt")
     c = SolrConnection(host="localhost:8983", persistent=True)
     fakehttp(c, search_response)
     c.search(request_handler="custom", q="+id:[* TO *]")
     self.assertEqual("/solr/plone/custom", c.conn.url)
示例#34
0
 def test_search_with_custom_request_handler(self):
     search_response = getData('search_response.txt')
     c = SolrConnection(host='localhost:8983', persistent=True)
     fakehttp(c, search_response)
     c.search(request_handler='custom', q='+id:[* TO *]')
     self.assertEqual('/solr/custom', c.conn.url)