Simplify BatchUpdateTest and CommitsCollectionTest
Both of these tests use exactly the setup provided by InMemoryTestEnvironment. Use that JUnit rule to avoid duplicate code and improve readability of those classes. The previous code in BatchUpdateTest and CommitsCollectionTest closed the created repository after use. This shouldn't be necessary as the Javadoc of InMemoryRepository states that closing the repository has no impact on its memory/GC. Change-Id: I64f62a3acb38b18030f00ebb41b662be7c602900
This commit is contained in:
committed by
David Pursehouse
parent
25ea50afa4
commit
d4967d7b90
@@ -17,98 +17,37 @@ package com.google.gerrit.server.update;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
import com.google.gerrit.common.TimeUtil;
|
||||
import com.google.gerrit.lifecycle.LifecycleManager;
|
||||
import com.google.gerrit.reviewdb.client.Account;
|
||||
import com.google.gerrit.reviewdb.client.Project;
|
||||
import com.google.gerrit.reviewdb.server.ReviewDb;
|
||||
import com.google.gerrit.server.CurrentUser;
|
||||
import com.google.gerrit.server.IdentifiedUser;
|
||||
import com.google.gerrit.server.account.AccountManager;
|
||||
import com.google.gerrit.server.account.AuthRequest;
|
||||
import com.google.gerrit.server.schema.SchemaCreator;
|
||||
import com.google.gerrit.server.util.RequestContext;
|
||||
import com.google.gerrit.server.util.ThreadLocalRequestContext;
|
||||
import com.google.gerrit.testing.InMemoryDatabase;
|
||||
import com.google.gerrit.testing.InMemoryModule;
|
||||
import com.google.gerrit.testing.InMemoryRepositoryManager;
|
||||
import com.google.gwtorm.server.SchemaFactory;
|
||||
import com.google.inject.Guice;
|
||||
import com.google.gerrit.server.git.GitRepositoryManager;
|
||||
import com.google.gerrit.testing.InMemoryTestEnvironment;
|
||||
import com.google.inject.Inject;
|
||||
import com.google.inject.Injector;
|
||||
import com.google.inject.Provider;
|
||||
import com.google.inject.util.Providers;
|
||||
import org.eclipse.jgit.internal.storage.dfs.InMemoryRepository;
|
||||
import org.eclipse.jgit.junit.TestRepository;
|
||||
import org.eclipse.jgit.lib.Repository;
|
||||
import org.eclipse.jgit.revwalk.RevCommit;
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
|
||||
public class BatchUpdateTest {
|
||||
@Inject private AccountManager accountManager;
|
||||
@Inject private IdentifiedUser.GenericFactory userFactory;
|
||||
@Inject private SchemaFactory<ReviewDb> schemaFactory;
|
||||
@Inject private InMemoryRepositoryManager repoManager;
|
||||
@Inject private SchemaCreator schemaCreator;
|
||||
@Inject private ThreadLocalRequestContext requestContext;
|
||||
@Rule public InMemoryTestEnvironment testEnvironment = new InMemoryTestEnvironment();
|
||||
|
||||
@Inject private GitRepositoryManager repoManager;
|
||||
@Inject private BatchUpdate.Factory batchUpdateFactory;
|
||||
@Inject private ReviewDb db;
|
||||
@Inject private Provider<CurrentUser> user;
|
||||
|
||||
// Only for use in setting up/tearing down injector; other users should use schemaFactory.
|
||||
@Inject private InMemoryDatabase inMemoryDatabase;
|
||||
|
||||
private LifecycleManager lifecycle;
|
||||
private ReviewDb db;
|
||||
private TestRepository<InMemoryRepository> repo;
|
||||
private Project.NameKey project;
|
||||
private IdentifiedUser user;
|
||||
private TestRepository<Repository> repo;
|
||||
|
||||
@Before
|
||||
public void setUp() throws Exception {
|
||||
Injector injector = Guice.createInjector(new InMemoryModule());
|
||||
injector.injectMembers(this);
|
||||
lifecycle = new LifecycleManager();
|
||||
lifecycle.add(injector);
|
||||
lifecycle.start();
|
||||
|
||||
try (ReviewDb underlyingDb = inMemoryDatabase.getDatabase().open()) {
|
||||
schemaCreator.create(underlyingDb);
|
||||
}
|
||||
db = schemaFactory.open();
|
||||
Account.Id userId = accountManager.authenticate(AuthRequest.forUser("user")).getAccountId();
|
||||
user = userFactory.create(userId);
|
||||
|
||||
project = new Project.NameKey("test");
|
||||
|
||||
InMemoryRepository inMemoryRepo = repoManager.createRepository(project);
|
||||
Repository inMemoryRepo = repoManager.createRepository(project);
|
||||
repo = new TestRepository<>(inMemoryRepo);
|
||||
|
||||
requestContext.setContext(
|
||||
new RequestContext() {
|
||||
@Override
|
||||
public CurrentUser getUser() {
|
||||
return user;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Provider<ReviewDb> getReviewDbProvider() {
|
||||
return Providers.of(db);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@After
|
||||
public void tearDown() {
|
||||
if (repo != null) {
|
||||
repo.getRepository().close();
|
||||
}
|
||||
if (lifecycle != null) {
|
||||
lifecycle.stop();
|
||||
}
|
||||
requestContext.setContext(null);
|
||||
if (db != null) {
|
||||
db.close();
|
||||
}
|
||||
InMemoryDatabase.drop(inMemoryDatabase);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -116,7 +55,7 @@ public class BatchUpdateTest {
|
||||
final RevCommit masterCommit = repo.branch("master").commit().create();
|
||||
final RevCommit branchCommit = repo.branch("branch").commit().parent(masterCommit).create();
|
||||
|
||||
try (BatchUpdate bu = batchUpdateFactory.create(db, project, user, TimeUtil.nowTs())) {
|
||||
try (BatchUpdate bu = batchUpdateFactory.create(db, project, user.get(), TimeUtil.nowTs())) {
|
||||
bu.addRepoOnlyOp(
|
||||
new RepoOnlyOp() {
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user