Esempio n. 1
0
class SolrCoreAdminTestCase(unittest.TestCase):
    def setUp(self):
        super(SolrCoreAdminTestCase, self).setUp()
        self.solr_admin = SolrCoreAdmin('http://localhost:8983/solr/admin/cores')

    def test_status(self):
        self.assertTrue('name="defaultCoreName"' in self.solr_admin.status())
        self.assertTrue('<int name="status">' in self.solr_admin.status(core='core0'))

    def test_create(self):
        self.assertTrue('<int name="status">0</int>' in self.solr_admin.create('wheatley'))

    def test_reload(self):
        self.assertTrue('<int name="status">0</int>' in self.solr_admin.reload('wheatley'))

    def test_rename(self):
        self.solr_admin.create('wheatley')
        self.assertTrue('<int name="status">0</int>' in self.solr_admin.rename('wheatley', 'rick'))

    def test_swap(self):
        self.solr_admin.create('wheatley')
        self.solr_admin.create('rick')
        self.assertTrue('<int name="status">0</int>' in self.solr_admin.swap('wheatley', 'rick'))

    def test_unload(self):
        self.solr_admin.create('wheatley')
        self.assertTrue('<int name="status">0</int>' in self.solr_admin.unload('wheatley'))

    def test_load(self):
        self.assertRaises(NotImplementedError, self.solr_admin.load, 'wheatley')
Esempio n. 2
0
class SolrCoreAdminTestCase(unittest.TestCase):
    def setUp(self):
        super(SolrCoreAdminTestCase, self).setUp()
        self.solr_admin = SolrCoreAdmin("http://localhost:8983/solr/admin/cores")

    def test_status(self):
        self.assertIn('name="defaultCoreName"', self.solr_admin.status())
        self.assertIn('<int name="status">', self.solr_admin.status(core="core0"))

    def test_create(self):
        self.assertIn('<int name="status">0</int>', self.solr_admin.create("wheatley"))

    def test_reload(self):
        self.assertIn('<int name="status">0</int>', self.solr_admin.reload("wheatley"))

    def test_rename(self):
        self.solr_admin.create("wheatley")
        self.assertIn(
            '<int name="status">0</int>', self.solr_admin.rename("wheatley", "rick")
        )

    def test_swap(self):
        self.solr_admin.create("wheatley")
        self.solr_admin.create("rick")
        self.assertIn(
            '<int name="status">0</int>', self.solr_admin.swap("wheatley", "rick")
        )

    def test_unload(self):
        self.solr_admin.create("wheatley")
        self.assertIn('<int name="status">0</int>', self.solr_admin.unload("wheatley"))

    def test_load(self):
        self.assertRaises(NotImplementedError, self.solr_admin.load, "wheatley")
Esempio n. 3
0
class SolrCoreAdminTestCase(unittest.TestCase):
    def setUp(self):
        super(SolrCoreAdminTestCase, self).setUp()
        self.solr_admin = SolrCoreAdmin('http://localhost:8983/solr/admin/cores')

    def test_status(self):
        self.assertTrue('name="defaultCoreName"' in self.solr_admin.status())
        self.assertTrue('<int name="status">' in self.solr_admin.status(core='core0'))

    def test_create(self):
        self.assertTrue('<int name="status">0</int>' in self.solr_admin.create('wheatley'))

    def test_reload(self):
        self.assertTrue('<int name="status">0</int>' in self.solr_admin.reload('wheatley'))

    def test_rename(self):
        self.solr_admin.create('wheatley')
        self.assertTrue('<int name="status">0</int>' in self.solr_admin.rename('wheatley', 'rick'))

    def test_swap(self):
        self.solr_admin.create('wheatley')
        self.solr_admin.create('rick')
        self.assertTrue('<int name="status">0</int>' in self.solr_admin.swap('wheatley', 'rick'))

    def test_unload(self):
        self.solr_admin.create('wheatley')
        self.assertTrue('<int name="status">0</int>' in self.solr_admin.unload('wheatley'))

    def test_load(self):
        self.assertRaises(NotImplementedError, self.solr_admin.load, 'wheatley')
Esempio n. 4
0
 def wrapper(*args, **kwargs):
     if settings.HAYSTACK_SEARCH_ENGINE == 'solr':
         try:
             soldadmin = SolrCoreAdmin(SearchQuerySet().query.backend.conn.url)
             soldadmin.status()
             func(*args, **kwargs)
         except Exception, e:
             logger.error('Error contacting SOLR backend: %s' % 
                 getattr(e, 'reason', str(e)))
             raise HaystackError('Error contacting SOLR backend.')
Esempio n. 5
0
 def check_solr_status(self, request):
     """ Returns a boolean indicating if the Solr service is available. """
     status = True
     solr_admin = SolrCoreAdmin(settings.SOLR_ADMIN)
     try:
         solr_admin.status()
     except ConnectionError:
         # The Solr index is not accessible!
         logger.error('Solr index unavailable', exc_info=True, extra={
             'request': request, })
         status = False
     return status
Esempio n. 6
0
class SolrCoreAdminTestCase(unittest.TestCase):
    def assertIn(self, member, container, msg=None):
        """
        Just like self.assertTrue(a in b), but with a nicer default message.
        Backported from Python 2.7 unittest library.
        """
        if member not in container:
            standardMsg = '%s not found in %s' % (safe_repr(member),
                                                  safe_repr(container))
            self.fail(self._formatMessage(msg, standardMsg))


    def setUp(self):
        super(SolrCoreAdminTestCase, self).setUp()
        self.solr_admin = SolrCoreAdmin('http://localhost:8080/solr/admin/cores')

    def create(self, core_name):
        return self.solr_admin.create(core_name, instance_dir=os.path.join(
            os.path.dirname(__file__), 'fixtures'))

    def test_status(self):
        self.assertIn('<int name="status">0</int>', self.solr_admin.status())
        self.assertIn('<int name="status">0</int>', self.solr_admin.status(core='core0'))

    def test_create(self):
        self.assertIn('<int name="status">0</int>', self.create('wheatley'))

    def test_reload(self):
        self.assertIn('<int name="status">0</int>', self.solr_admin.reload('wheatley'))

    def test_rename(self):
        self.create('wheatley')
        self.assertIn('<int name="status">0</int>', self.solr_admin.rename('wheatley', 'rick'))

    def test_swap(self):
        self.create('wheatley')
        self.create('rick')
        self.assertIn('<int name="status">0</int>', self.solr_admin.swap('wheatley', 'rick'))

    def test_unload(self):
        self.create('wheatley')
        self.assertIn('<int name="status">0</int>', self.solr_admin.unload('wheatley'))

    def test_load(self):
        self.assertRaises(NotImplementedError, self.solr_admin.load, 'wheatley')
Esempio n. 7
0
class SolrCoreAdminTestCase(unittest.TestCase):
    def setUp(self):
        super(SolrCoreAdminTestCase, self).setUp()
        self.solr_admin = SolrCoreAdmin('http://localhost:8983')
        self.solr_admin.create('test_core', instance_dir="collection1")

    def tearDown(self):
        try:
            self.solr_admin.unload('test_core')
        except:
            # already cleaned up
            pass

    def test_status(self):
        self.assertTrue('name="defaultCoreName"' in self.solr_admin.status())
        self.assertTrue('<int name="status">' in self.solr_admin.status(core='test_core'))

    def test_create(self):
        result = self.solr_admin.create('wheatley', instance_dir="collection1")
        self.assertTrue('<int name="status">0</int>' in result)
        self.assertTrue('<str name="core">wheatley</str>' in result)
        # cleanup
        self.solr_admin.unload('wheatley')

    def test_reload(self):
        self.assertTrue('<int name="status">0</int>' in self.solr_admin.reload('test_core'))

    def test_rename(self):
        self.assertTrue('<int name="status">0</int>' in self.solr_admin.rename('test_core', 'rick'))
        res = self.solr_admin.status()
        self.assertTrue('<lst name="rick">' in res)
        self.assertFalse('<lst name="test_core">' in res)

    def _get_uptime(self, core):
        self.solr_admin.status(core)
        uptime_pattern = r'<long name="uptime">(?P<uptime>\d+)</long>'
        res = re.search(
            uptime_pattern,
            self.solr_admin.status(core)
        ).groupdict()
        if res:
            return int(res['uptime'])
        else:
            None
    
    def test_swap(self):
        self.solr_admin.create('rick', instance_dir="collection1")
        #TODO find a better way to assert the swap than uptime
        test_up = self._get_uptime('test_core')
        rick_up = self._get_uptime('rick')
        self.assertTrue(test_up > rick_up)
        self.assertTrue('<int name="status">0</int>' in self.solr_admin.swap('test_core', 'rick'))
        res = self.solr_admin.status()
        self.assertTrue('<lst name="rick">' in res)
        self.assertTrue('<lst name="test_core">' in res)
        test_up = self._get_uptime('test_core')
        rick_up = self._get_uptime('rick')
        self.assertTrue(test_up < rick_up)

        # cleanup
        self.solr_admin.unload('rick')

    def test_unload(self):
        self.solr_admin.create('wheatley', instance_dir="collection1")
        self.assertTrue('<int name="status">0</int>' in self.solr_admin.unload('wheatley'))

    def test_load(self):
        self.assertRaises(NotImplementedError, self.solr_admin.load, 'wheatley')