From eecaad8b8e2c447429c31a01d49260ddd6b4ee03 Mon Sep 17 00:00:00 2001
From: Paul Martin <paul@paulsputer.com>
Date: Sat, 16 Apr 2016 17:35:32 -0400
Subject: [PATCH] Proof of concept #1026

---
 src/test/java/com/gitblit/tests/LuceneExecutorTest.java |   84 ++++++++++++++++++++++-------------------
 1 files changed, 45 insertions(+), 39 deletions(-)

diff --git a/src/test/java/com/gitblit/tests/LuceneExecutorTest.java b/src/test/java/com/gitblit/tests/LuceneExecutorTest.java
index 0b67f5d..b9ecbbb 100644
--- a/src/test/java/com/gitblit/tests/LuceneExecutorTest.java
+++ b/src/test/java/com/gitblit/tests/LuceneExecutorTest.java
@@ -15,49 +15,55 @@
  */
 package com.gitblit.tests;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
 import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 
 import org.eclipse.jgit.lib.Repository;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 
-import com.gitblit.LuceneExecutor;
+import com.gitblit.Keys;
+import com.gitblit.manager.FilestoreManager;
+import com.gitblit.manager.RepositoryManager;
+import com.gitblit.manager.RuntimeManager;
+import com.gitblit.manager.UserManager;
 import com.gitblit.models.RefModel;
 import com.gitblit.models.RepositoryModel;
 import com.gitblit.models.SearchResult;
+import com.gitblit.service.LuceneService;
 import com.gitblit.tests.mock.MemorySettings;
 import com.gitblit.utils.FileUtils;
 import com.gitblit.utils.JGitUtils;
+import com.gitblit.utils.XssFilter;
+import com.gitblit.utils.XssFilter.AllowXssFilter;
 
 /**
  * Tests Lucene indexing and querying.
- * 
+ *
  * @author James Moger
- * 
+ *
  */
-public class LuceneExecutorTest {
+public class LuceneExecutorTest extends GitblitUnitTest {
 
-	LuceneExecutor lucene;
-	
-	private LuceneExecutor newLuceneExecutor() {
-		Map<String, Object> map = new HashMap<String, Object>();
-		MemorySettings settings = new MemorySettings(map);		
-		return new LuceneExecutor(settings, GitBlitSuite.REPOSITORIES);
+	LuceneService lucene;
+
+	private LuceneService newLuceneExecutor() {
+		MemorySettings settings = new MemorySettings();
+		settings.put(Keys.git.repositoriesFolder, GitBlitSuite.REPOSITORIES);
+		XssFilter xssFilter = new AllowXssFilter();
+		RuntimeManager runtime = new RuntimeManager(settings, xssFilter, GitBlitSuite.BASEFOLDER).start();
+		UserManager users = new UserManager(runtime, null).start();
+		RepositoryManager repos = new RepositoryManager(runtime, null, users, null);
+		//TODO: May need filestore
+		return new LuceneService(settings, repos, null);
 	}
-	
-	private RepositoryModel newRepositoryModel(Repository repository) {		
+
+	private RepositoryModel newRepositoryModel(Repository repository) {
 		RepositoryModel model = new RepositoryModel();
 		model.name = FileUtils.getRelativePath(GitBlitSuite.REPOSITORIES, repository.getDirectory());
 		model.hasCommits = JGitUtils.hasCommits(repository);
-		
+
 		// index all local branches
 		model.indexedBranches = new ArrayList<String>();
 		for (RefModel ref : JGitUtils.getLocalBranches(repository, true, -1)) {
@@ -65,29 +71,29 @@
 		}
 		return model;
 	}
-	
+
 	@Before
 	public void setup() {
 		lucene = newLuceneExecutor();
 	}
-	
+
 	@After
 	public void tearDown() {
 		lucene.close();
 	}
-	
+
 	@Test
-	public void testIndex() throws Exception {
+	public void testIndex() {
 		// reindex helloworld
 		Repository repository = GitBlitSuite.getHelloworldRepository();
 		RepositoryModel model = newRepositoryModel(repository);
 		lucene.reindex(model, repository);
 		repository.close();
-		
-		SearchResult result = lucene.search("type:blob AND path:bit.bit", 1, 1, model.name).get(0);		
+
+		SearchResult result = lucene.search("type:blob AND path:bit.bit", 1, 1, model.name).get(0);
 		assertEquals("Mike Donaghy", result.author);
-		result = lucene.search("type:blob AND path:clipper.prg", 1, 1, model.name).get(0);		
-		assertEquals("tinogomes", result.author);		
+		result = lucene.search("type:blob AND path:clipper.prg", 1, 1, model.name).get(0);
+		assertEquals("tinogomes", result.author);
 
 		// reindex JGit
 		repository = GitBlitSuite.getJGitRepository();
@@ -99,10 +105,10 @@
 	@Test
 	public void testQuery() throws Exception {
 		// 2 occurrences on the master branch
-		Repository repository = GitBlitSuite.getHelloworldRepository();				
+		Repository repository = GitBlitSuite.getHelloworldRepository();
 		RepositoryModel model = newRepositoryModel(repository);
 		repository.close();
-		
+
 		List<SearchResult> results = lucene.search("ada", 1, 10, model.name);
 		assertEquals(2, results.size());
 		for (SearchResult res : results) {
@@ -112,37 +118,37 @@
 		// author test
 		results = lucene.search("author: tinogomes AND type:commit", 1, 10, model.name);
 		assertEquals(2, results.size());
-		
+
 		// blob test
 		results = lucene.search("type: blob AND \"import std.stdio\"", 1, 10, model.name);
 		assertEquals(1, results.size());
 		assertEquals("d.D", results.get(0).path);
-		
+
 		// commit test
 		repository = GitBlitSuite.getJGitRepository();
 		model = newRepositoryModel(repository);
 		repository.close();
-		
+
 		results = lucene.search("\"initial jgit contribution to eclipse.org\"", 1, 10, model.name);
 		assertEquals(1, results.size());
 		assertEquals("Git Development Community", results.get(0).author);
 		assertEquals("1a6964c8274c50f0253db75f010d78ef0e739343", results.get(0).commitId);
 		assertEquals("refs/heads/master", results.get(0).branch);
-		
+
 		// hash id tests
 		results = lucene.search("type:commit AND commit:1a6964c8274c50f0253db75f010d78ef0e739343", 1, 10, model.name);
 		assertEquals(1, results.size());
 
 		results = lucene.search("type:commit AND commit:1a6964c8274*", 1, 10, model.name);
 		assertEquals("Shawn O. Pearce", results.get(0).committer);
-		assertEquals(1, results.size());		
-		
+		assertEquals(1, results.size());
+
 		// annotated tag test
 		results = lucene.search("I663208919f297836a9c16bf458e4a43ffaca4c12", 1, 10, model.name);
 		assertEquals(1, results.size());
-		assertEquals("[v1.3.0.201202151440-r]", results.get(0).tags.toString());		
+		assertEquals("[v1.3.0.201202151440-r]", results.get(0).tags.toString());
 	}
-	
+
 	@Test
 	public void testMultiSearch() throws Exception {
 		List<String> list = new ArrayList<String>();
@@ -157,14 +163,14 @@
 		List<SearchResult> results = lucene.search("test", 1, 10, list);
 		assertEquals(10, results.size());
 	}
-	
+
 	@Test
 	public void testDeleteBlobFromIndex() throws Exception {
 		// start with a fresh reindex of entire repository
 		Repository repository = GitBlitSuite.getHelloworldRepository();
 		RepositoryModel model = newRepositoryModel(repository);
 		lucene.reindex(model, repository);
-		
+
 		// now delete a blob
 		assertTrue(lucene.deleteBlob(model.name, "refs/heads/master", "java.java"));
 		assertFalse(lucene.deleteBlob(model.name, "refs/heads/master", "java.java"));

--
Gitblit v1.9.1