def _do_list(self, realm=None):
     fts = FullTextSearch(self.env)
     realms = realm and [realm] or fts.index_realms
     fields = ['realm', 'id']
     query, response = fts._do_search('*', realms, sort_by=fields,
                                      field_limit=fields)
     rows = ((doc['realm'], doc['id']) for doc in fts._docs(query))
     print_table(rows, (_("Realm"), _("Id")))
Пример #2
0
 def setUp(self):
     self.env = EnvironmentStub(enable=['trac.*', FullTextSearch])
     DbRepositoryProvider(self.env).add_repository('', self.repos_path,
                                                   'svn')
     self.repos = self.env.get_repository('')
     self.repos.sync()
     self.fts = FullTextSearch(self.env)
     self.fts.backend = Backend(self.fts.solr_endpoint, self.env.log,
                                MockSolrInterface)
Пример #3
0
 def _do_list(self, realm=None):
     fts = FullTextSearch(self.env)
     realms = realm and [realm] or fts.index_realms
     fields = ['realm', 'id']
     query, response = fts._do_search('*',
                                      realms,
                                      sort_by=fields,
                                      field_limit=fields)
     rows = ((doc['realm'], doc['id']) for doc in fts._docs(query))
     print_table(rows, (_("Realm"), _("Id")))
Пример #4
0
 def _index(self, realm, clean):
     fts = FullTextSearch(self.env)
     realms = realm and [realm] or fts.index_realms
     if clean:
         printout(_("Wiping search index and re-indexing all items in "
                    "realms: %(realms)s", realms=fts._fmt_realms(realms)))
     else:
         printout(_("Indexing new and changed items in realms: %(realms)s",
                    realms=fts._fmt_realms(realms)))
     fts.index(realms, clean, self._index_feedback, self._clean_feedback)
     printout(_("Indexing finished"))
Пример #5
0
 def setUp(self):
     self.env = EnvironmentStub(enable=['trac.*', FullTextSearch])
     self.env.path = tempfile.mkdtemp(prefix='trac-testenv')
     self.basename = os.path.basename(self.env.path)
     #self.env.config.set('search', 'solr_endpoint', 'http://localhost:8983/solr/')
     self.fts = FullTextSearch(self.env)
     self.fts.backend = Backend(self.fts.solr_endpoint, self.env.log,
                                MockSolrInterface)
 def setUp(self):
     self.env = EnvironmentStub(enable=['trac.*', FullTextSearch])
     DbRepositoryProvider(self.env).add_repository('', self.repos_path, 'svn')
     self.repos = self.env.get_repository('')
     self.repos.sync()
     self.fts = FullTextSearch(self.env)
     self.fts.backend = Backend(self.fts.solr_endpoint, self.env.log,
                                MockSolrInterface)
Пример #7
0
    def setUp(self):
        self.env = EnvironmentStub(
            '', enable=['trac.*', FullTextSearch, FullTextSearchAdmin])
        self.db = self.env.get_db_cnx()

        self._admin = console.TracAdmin()
        self._admin.env_set('', self.env)

        self.fts = FullTextSearch(self.env)
        self.fts.backend = Backend(self.fts.solr_endpoint, self.env.log,
                                   MockSolrInterface)
Пример #8
0
 def _index(self, realm, clean):
     fts = FullTextSearch(self.env)
     realms = realm and [realm] or fts.index_realms
     if clean:
         printout(
             _(
                 "Wiping search index and re-indexing all items in "
                 "realms: %(realms)s",
                 realms=fts._fmt_realms(realms)))
     else:
         printout(
             _("Indexing new and changed items in realms: %(realms)s",
               realms=fts._fmt_realms(realms)))
     fts.index(realms, clean, self._index_feedback, self._clean_feedback)
     printout(_("Indexing finished"))
 def _do_remove(self, realm=None):
     fts = FullTextSearch(self.env)
     realms = realm and [realm] or fts.index_realms
     fts.remove_index(realms)
 def _do_optimize(self):
     fts = FullTextSearch(self.env)
     fts.optimize()
Пример #11
0
class ChangesetsSvnTestCase(unittest.TestCase):
    @classmethod
    def setupClass(cls):
        svn_fs._import_svn()
        core.apr_initialize()
        pool = core.svn_pool_create(None)
        dumpstream = None
        cls.repos_path = tempfile.mkdtemp(prefix='svn-tmp')
        shutil.rmtree(cls.repos_path)
        dumpfile = open(os.path.join(os.path.split(__file__)[0], 'svn.dump'))
        try:
            r = repos.svn_repos_create(cls.repos_path, '', '', None, None,
                                       pool)
            if hasattr(repos, 'svn_repos_load_fs2'):
                repos.svn_repos_load_fs2(r, dumpfile, StringIO(),
                                         repos.svn_repos_load_uuid_default, '',
                                         0, 0, None, pool)
            else:
                dumpstream = core.svn_stream_from_aprfile(dumpfile, pool)
                repos.svn_repos_load_fs(r, dumpstream, None,
                                        repos.svn_repos_load_uuid_default, '',
                                        None, None, pool)
        finally:
            if dumpstream:
                core.svn_stream_close(dumpstream)
            core.svn_pool_destroy(pool)
            core.apr_terminate()

    @classmethod
    def teardownClass(cls):
        if os.name == 'nt':
            # The Windows version of 'shutil.rmtree' doesn't override the
            # permissions of read-only files, so we have to do it ourselves:
            import stat
            format_file = os.path.join(cls.repos_path, 'db', 'format')
            if os.path.isfile(format_file):
                os.chmod(format_file, stat.S_IRWXU)
            os.chmod(os.path.join(cls.repos_path, 'format'), stat.S_IRWXU)
        shutil.rmtree(cls.repos_path)

    def setUp(self):
        self.env = EnvironmentStub(enable=['trac.*', FullTextSearch])
        DbRepositoryProvider(self.env).add_repository('', self.repos_path,
                                                      'svn')
        self.repos = self.env.get_repository('')
        self.repos.sync()
        self.fts = FullTextSearch(self.env)
        self.fts.backend = Backend(self.fts.solr_endpoint, self.env.log,
                                   MockSolrInterface)

    def tearDown(self):
        self.env.reset_db()
        self.repos.close()
        self.repos = None

    def _get_so(self, i=-1):
        si = self.fts.backend.si_class(self.fts.backend.solr_endpoint)
        return si.hist[i][2]

    def _feedback(self, realm, resource):
        pass

    def _finish_fb(self, realm, resource):
        pass

    def test_reindex_changeset(self):
        self.assertEquals({'changeset': self.repos.youngest_rev},
                          self.fts.index(['changeset'], True, self._feedback,
                                         self._finish_fb))

    def test_add_changeset(self):
        sw = SubversionWriter(self.env, self.repos, 'kalle')
        new_rev = sw.put_content('/trunk/foo.txt',
                                 content='Foo Bar',
                                 commit_msg='A comment')
        RepositoryManager(self.env).notify('changeset_added', '', [new_rev])
        # Node
        so = self._get_so()
        self.assertEquals('trac:source:trunk/foo.txt', so.doc_id)
        self.assertEquals('source', so.realm)
        self.assertEquals('trunk/foo.txt', so.id)
        self.assertEquals('trunk/foo.txt', so.title)
        self.assertEquals('kalle', so.author)
        self.assertEquals('Foo Bar', so.body.read())
        self.assertTrue('A comment' in so.comments)
        # Changeset
        so = self._get_so(-2)
        self.assertEquals('trac:changeset:%i' % new_rev, so.doc_id)
        self.assertEquals('changeset', so.realm)
        self.assertEquals('%i' % new_rev, so.id)
        self.assertTrue(so.title.startswith('[%i]: A comment' % new_rev))
        self.assertEquals('kalle', so.author)
        self.assertEquals('A comment', so.body)
class ChangesetsSvnTestCase(unittest.TestCase):
    @classmethod
    def setupClass(cls):
        svn_fs._import_svn()
        core.apr_initialize()
        pool = core.svn_pool_create(None)
        dumpstream = None
        cls.repos_path = tempfile.mkdtemp(prefix='svn-tmp')
        shutil.rmtree(cls.repos_path)
        dumpfile = open(os.path.join(os.path.split(__file__)[0], 'svn.dump'))
        try:
            r = repos.svn_repos_create(cls.repos_path, '', '', None, None, pool)
            if hasattr(repos, 'svn_repos_load_fs2'):
                repos.svn_repos_load_fs2(r, dumpfile, StringIO(),
                                        repos.svn_repos_load_uuid_default, '',
                                        0, 0, None, pool)
            else:
                dumpstream = core.svn_stream_from_aprfile(dumpfile, pool)
                repos.svn_repos_load_fs(r, dumpstream, None,
                                        repos.svn_repos_load_uuid_default, '',
                                        None, None, pool)
        finally:
            if dumpstream:
                core.svn_stream_close(dumpstream)
            core.svn_pool_destroy(pool)
            core.apr_terminate()
    @classmethod
    def teardownClass(cls):
        if os.name == 'nt':
            # The Windows version of 'shutil.rmtree' doesn't override the
            # permissions of read-only files, so we have to do it ourselves:
            import stat
            format_file = os.path.join(cls.repos_path, 'db', 'format')
            if os.path.isfile(format_file):
                os.chmod(format_file, stat.S_IRWXU)
            os.chmod(os.path.join(cls.repos_path, 'format'), stat.S_IRWXU)
        shutil.rmtree(cls.repos_path)
    
    def setUp(self):
        self.env = EnvironmentStub(enable=['trac.*', FullTextSearch])
        DbRepositoryProvider(self.env).add_repository('', self.repos_path, 'svn')
        self.repos = self.env.get_repository('')
        self.repos.sync()
        self.fts = FullTextSearch(self.env)
        self.fts.backend = Backend(self.fts.solr_endpoint, self.env.log,
                                   MockSolrInterface)
        
    def tearDown(self):
        self.env.reset_db()
        self.repos.close()
        self.repos = None

    def _get_so(self, i=-1):
        si = self.fts.backend.si_class(self.fts.backend.solr_endpoint)
        return si.hist[i][2]

    def _feedback(self, realm, resource):
        pass

    def _finish_fb(self, realm, resource):
        pass

    def test_reindex_changeset(self):
        self.assertEquals({'changeset': self.repos.youngest_rev},
                          self.fts.index(['changeset'], True,
                                         self._feedback, self._finish_fb))
    
    def test_add_changeset(self):
        sw = SubversionWriter(self.env, self.repos, 'kalle')
        new_rev = sw.put_content('/trunk/foo.txt', content='Foo Bar', commit_msg='A comment')
        RepositoryManager(self.env).notify('changeset_added', '', [new_rev])
        # Node
        so = self._get_so()
        self.assertEquals('trac:source:trunk/foo.txt', so.doc_id)
        self.assertEquals('source', so.realm)
        self.assertEquals('trunk/foo.txt', so.id)
        self.assertEquals('trunk/foo.txt', so.title)
        self.assertEquals('kalle', so.author)
        self.assertEquals('Foo Bar', so.body.read())
        self.assertTrue('A comment' in so.comments)
        # Changeset
        so = self._get_so(-2)
        self.assertEquals('trac:changeset:%i' % new_rev, so.doc_id)
        self.assertEquals('changeset', so.realm)
        self.assertEquals('%i' % new_rev, so.id)
        self.assertTrue(so.title.startswith('[%i]: A comment' % new_rev))
        self.assertEquals('kalle', so.author)
        self.assertEquals('A comment', so.body)
Пример #13
0
 def _complete_search_command(self, args):
     fts = FullTextSearch(self.env)
     if len(args) == 1:
         return PrefixList(fts.search_realms)
Пример #14
0
 def _do_remove(self, realm=None):
     fts = FullTextSearch(self.env)
     realms = realm and [realm] or fts.index_realms
     fts.remove_index(realms)
Пример #15
0
 def _do_optimize(self):
     fts = FullTextSearch(self.env)
     fts.optimize()