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")))
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 _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")))
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 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)
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)
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()
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)
def _complete_search_command(self, args): fts = FullTextSearch(self.env) if len(args) == 1: return PrefixList(fts.search_realms)
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()