From 3811378e0ec542e1ec3139406bbf0fc395e9d3df Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Fri, 29 Nov 2013 12:02:58 -0500
Subject: [PATCH] Invalidate all cached repository data on "clear cache" (issue-346)
---
src/test/java/com/gitblit/tests/LuceneExecutorTest.java | 134 +++++++++++++++++++++-----------------------
1 files changed, 63 insertions(+), 71 deletions(-)
diff --git a/src/test/java/com/gitblit/tests/LuceneExecutorTest.java b/src/test/java/com/gitblit/tests/LuceneExecutorTest.java
index 6b45b9f..319c09c 100644
--- a/src/test/java/com/gitblit/tests/LuceneExecutorTest.java
+++ b/src/test/java/com/gitblit/tests/LuceneExecutorTest.java
@@ -15,45 +15,50 @@
*/
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.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;
/**
* Tests Lucene indexing and querying.
- *
+ *
* @author James Moger
- *
+ *
*/
-public class LuceneExecutorTest {
+public class LuceneExecutorTest extends GitblitUnitTest {
- 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);
+ RuntimeManager runtime = new RuntimeManager(settings, GitBlitSuite.BASEFOLDER).start();
+ UserManager users = new UserManager(runtime).start();
+ RepositoryManager repos = new RepositoryManager(runtime, users);
+ return new LuceneService(settings, repos);
}
-
- 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)) {
@@ -61,46 +66,44 @@
}
return model;
}
-
+
+ @Before
+ public void setup() {
+ lucene = newLuceneExecutor();
+ }
+
+ @After
+ public void tearDown() {
+ lucene.close();
+ }
+
@Test
- public void testIndex() throws Exception {
- LuceneExecutor lucene = newLuceneExecutor();
-
+ 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);
- assertEquals("Mike Donaghy", result.author);
- result = lucene.search("type:blob AND path:clipper.prg", 1, 1, model.name).get(0);
- assertEquals("tinogomes", result.author);
- // reindex theoretical physics
- repository = GitBlitSuite.getTheoreticalPhysicsRepository();
- 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);
+ assertEquals("Mike Donaghy", 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();
model = newRepositoryModel(repository);
lucene.reindex(model, repository);
repository.close();
-
- lucene.close();
}
@Test
public void testQuery() throws Exception {
- LuceneExecutor lucene = new LuceneExecutor(null, GitBlitSuite.REPOSITORIES);
-
// 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) {
@@ -110,48 +113,39 @@
// 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);
-
- // 1 occurrence on the gh-pages branch
- repository = GitBlitSuite.getTheoreticalPhysicsRepository();
- model = newRepositoryModel(repository);
- repository.close();
-
- results = lucene.search("\"add the .nojekyll file\"", 1, 10, model.name);
- assertEquals(1, results.size());
- assertEquals("Ondrej Certik", results.get(0).author);
- assertEquals("2648c0c98f2101180715b4d432fc58d0e21a51d7", results.get(0).commitId);
- assertEquals("refs/heads/gh-pages", results.get(0).branch);
-
- results = lucene.search("type:blob AND \"src/intro.rst\"", 1, 10, model.name);
- assertEquals(4, results.size());
-
- // hash id tests
- results = lucene.search("commit:57c4f26f157ece24b02f4f10f5f68db1d2ce7ff5", 1, 10, model.name);
- assertEquals(1, results.size());
- results = lucene.search("commit:57c4f26f157*", 1, 10, model.name);
- assertEquals(1, results.size());
-
- // annotated tag test
+ // 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());
+
+ // 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());
-
- lucene.close();
+ assertEquals("[v1.3.0.201202151440-r]", results.get(0).tags.toString());
}
-
+
@Test
public void testMultiSearch() throws Exception {
- LuceneExecutor lucene = newLuceneExecutor();
List<String> list = new ArrayList<String>();
Repository repository = GitBlitSuite.getHelloworldRepository();
list.add(newRepositoryModel(repository).name);
@@ -162,18 +156,16 @@
repository.close();
List<SearchResult> results = lucene.search("test", 1, 10, list);
- lucene.close();
assertEquals(10, results.size());
}
-
+
@Test
public void testDeleteBlobFromIndex() throws Exception {
// start with a fresh reindex of entire repository
- LuceneExecutor lucene = newLuceneExecutor();
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