mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-26 04:17:08 +00:00 
			
		
		
		
	Support elastic search for code search (#10273)
* Support elastic search for code search * Finished elastic search implementation and add some tests * Enable test on drone and added docs * Add new fields to elastic search * Fix bug * remove unused changes * Use indexer alias to keep the gitea indexer version * Improve codes * Some code improvements * The real indexer name changed to xxx.v1 Co-authored-by: zeripath <art27@cantab.net>
This commit is contained in:
		
							
								
								
									
										83
									
								
								modules/indexer/code/indexer_test.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										83
									
								
								modules/indexer/code/indexer_test.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,83 @@ | ||||
| // Copyright 2020 The Gitea Authors. All rights reserved. | ||||
| // Use of this source code is governed by a MIT-style | ||||
| // license that can be found in the LICENSE file. | ||||
|  | ||||
| package code | ||||
|  | ||||
| import ( | ||||
| 	"path/filepath" | ||||
| 	"testing" | ||||
|  | ||||
| 	"code.gitea.io/gitea/models" | ||||
|  | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| ) | ||||
|  | ||||
| func TestMain(m *testing.M) { | ||||
| 	models.MainTest(m, filepath.Join("..", "..", "..")) | ||||
| } | ||||
|  | ||||
| func testIndexer(name string, t *testing.T, indexer Indexer) { | ||||
| 	t.Run(name, func(t *testing.T) { | ||||
| 		var repoID int64 = 1 | ||||
| 		err := index(indexer, repoID) | ||||
| 		assert.NoError(t, err) | ||||
| 		var ( | ||||
| 			keywords = []struct { | ||||
| 				RepoIDs []int64 | ||||
| 				Keyword string | ||||
| 				IDs     []int64 | ||||
| 				Langs   int | ||||
| 			}{ | ||||
| 				{ | ||||
| 					RepoIDs: nil, | ||||
| 					Keyword: "Description", | ||||
| 					IDs:     []int64{repoID}, | ||||
| 					Langs:   1, | ||||
| 				}, | ||||
| 				{ | ||||
| 					RepoIDs: []int64{2}, | ||||
| 					Keyword: "Description", | ||||
| 					IDs:     []int64{}, | ||||
| 					Langs:   0, | ||||
| 				}, | ||||
| 				{ | ||||
| 					RepoIDs: nil, | ||||
| 					Keyword: "repo1", | ||||
| 					IDs:     []int64{repoID}, | ||||
| 					Langs:   1, | ||||
| 				}, | ||||
| 				{ | ||||
| 					RepoIDs: []int64{2}, | ||||
| 					Keyword: "repo1", | ||||
| 					IDs:     []int64{}, | ||||
| 					Langs:   0, | ||||
| 				}, | ||||
| 				{ | ||||
| 					RepoIDs: nil, | ||||
| 					Keyword: "non-exist", | ||||
| 					IDs:     []int64{}, | ||||
| 					Langs:   0, | ||||
| 				}, | ||||
| 			} | ||||
| 		) | ||||
|  | ||||
| 		for _, kw := range keywords { | ||||
| 			t.Run(kw.Keyword, func(t *testing.T) { | ||||
| 				total, res, langs, err := indexer.Search(kw.RepoIDs, "", kw.Keyword, 1, 10) | ||||
| 				assert.NoError(t, err) | ||||
| 				assert.EqualValues(t, len(kw.IDs), total) | ||||
| 				assert.EqualValues(t, kw.Langs, len(langs)) | ||||
|  | ||||
| 				var ids = make([]int64, 0, len(res)) | ||||
| 				for _, hit := range res { | ||||
| 					ids = append(ids, hit.RepoID) | ||||
| 					assert.EqualValues(t, "# repo1\n\nDescription for repo1", hit.Content) | ||||
| 				} | ||||
| 				assert.EqualValues(t, kw.IDs, ids) | ||||
| 			}) | ||||
| 		} | ||||
|  | ||||
| 		assert.NoError(t, indexer.Delete(repoID)) | ||||
| 	}) | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 Lunny Xiao
					Lunny Xiao