Merge changes I338df11c,I3d1bf717,Id9c8c438

* changes:
  Mark getRemoteHead as @Nullable
  Push group operations down into leaf test classes.
  Use new test API for group creation in AbstractDaemonTest
This commit is contained in:
Alice Kober-Sotzek
2018-11-13 11:04:22 +00:00
committed by Gerrit Code Review
7 changed files with 64 additions and 38 deletions

View File

@@ -38,6 +38,7 @@ import com.google.common.jimfs.Jimfs;
import com.google.common.primitives.Chars; import com.google.common.primitives.Chars;
import com.google.gerrit.acceptance.AcceptanceTestRequestScope.Context; import com.google.gerrit.acceptance.AcceptanceTestRequestScope.Context;
import com.google.gerrit.acceptance.testsuite.account.TestSshKeys; import com.google.gerrit.acceptance.testsuite.account.TestSshKeys;
import com.google.gerrit.acceptance.testsuite.group.GroupOperations;
import com.google.gerrit.common.Nullable; import com.google.gerrit.common.Nullable;
import com.google.gerrit.common.data.AccessSection; import com.google.gerrit.common.data.AccessSection;
import com.google.gerrit.common.data.ContributorAgreement; import com.google.gerrit.common.data.ContributorAgreement;
@@ -55,7 +56,6 @@ import com.google.gerrit.extensions.api.changes.ReviewInput;
import com.google.gerrit.extensions.api.changes.RevisionApi; import com.google.gerrit.extensions.api.changes.RevisionApi;
import com.google.gerrit.extensions.api.changes.SubmittedTogetherInfo; import com.google.gerrit.extensions.api.changes.SubmittedTogetherInfo;
import com.google.gerrit.extensions.api.groups.GroupApi; import com.google.gerrit.extensions.api.groups.GroupApi;
import com.google.gerrit.extensions.api.groups.GroupInput;
import com.google.gerrit.extensions.api.projects.BranchApi; import com.google.gerrit.extensions.api.projects.BranchApi;
import com.google.gerrit.extensions.api.projects.BranchInput; import com.google.gerrit.extensions.api.projects.BranchInput;
import com.google.gerrit.extensions.api.projects.ProjectInput; import com.google.gerrit.extensions.api.projects.ProjectInput;
@@ -264,6 +264,7 @@ public abstract class AbstractDaemonTest {
@Inject protected ChangeNotes.Factory notesFactory; @Inject protected ChangeNotes.Factory notesFactory;
@Inject protected BatchAbandon batchAbandon; @Inject protected BatchAbandon batchAbandon;
@Inject protected TestSshKeys sshKeys; @Inject protected TestSshKeys sshKeys;
@Inject protected GroupOperations groupOperations;
protected EventRecorder eventRecorder; protected EventRecorder eventRecorder;
protected GerritServer server; protected GerritServer server;
@@ -1193,27 +1194,7 @@ public abstract class AbstractDaemonTest {
return changeResourceFactory.create(notes.get(0), atrScope.get().getUser()); return changeResourceFactory.create(notes.get(0), atrScope.get().getUser());
} }
protected String createGroup(String name) throws Exception { @Nullable
return createGroup(name, "Administrators");
}
protected String createGroupWithRealName(String name) throws Exception {
GroupInput in = new GroupInput();
in.name = name;
in.ownerId = "Administrators";
gApi.groups().create(in);
return name;
}
protected String createGroup(String name, String owner) throws Exception {
name = name(name);
GroupInput in = new GroupInput();
in.name = name;
in.ownerId = owner;
gApi.groups().create(in);
return name;
}
protected RevCommit getHead(Repository repo, String name) throws Exception { protected RevCommit getHead(Repository repo, String name) throws Exception {
try (RevWalk rw = new RevWalk(repo)) { try (RevWalk rw = new RevWalk(repo)) {
Ref r = repo.exactRef(name); Ref r = repo.exactRef(name);
@@ -1225,16 +1206,19 @@ public abstract class AbstractDaemonTest {
return getHead(repo, "HEAD"); return getHead(repo, "HEAD");
} }
@Nullable
protected RevCommit getRemoteHead(Project.NameKey project, String branch) throws Exception { protected RevCommit getRemoteHead(Project.NameKey project, String branch) throws Exception {
try (Repository repo = repoManager.openRepository(project)) { try (Repository repo = repoManager.openRepository(project)) {
return getHead(repo, branch.startsWith(Constants.R_REFS) ? branch : "refs/heads/" + branch); return getHead(repo, branch.startsWith(Constants.R_REFS) ? branch : "refs/heads/" + branch);
} }
} }
@Nullable
protected RevCommit getRemoteHead(String project, String branch) throws Exception { protected RevCommit getRemoteHead(String project, String branch) throws Exception {
return getRemoteHead(new Project.NameKey(project), branch); return getRemoteHead(new Project.NameKey(project), branch);
} }
@Nullable
protected RevCommit getRemoteHead() throws Exception { protected RevCommit getRemoteHead() throws Exception {
return getRemoteHead(project, "master"); return getRemoteHead(project, "master");
} }
@@ -1248,7 +1232,8 @@ public abstract class AbstractDaemonTest {
protected ContributorAgreement configureContributorAgreement(boolean autoVerify) protected ContributorAgreement configureContributorAgreement(boolean autoVerify)
throws Exception { throws Exception {
ContributorAgreement ca; ContributorAgreement ca;
String g = createGroup(autoVerify ? "cla-test-group" : "cla-test-no-auto-verify-group"); String name = autoVerify ? "cla-test-group" : "cla-test-no-auto-verify-group";
String g = groupOperations.newGroup().name(name).create().get();
GroupApi groupApi = gApi.groups().id(g); GroupApi groupApi = gApi.groups().id(g);
groupApi.description("CLA test group"); groupApi.description("CLA test group");
InternalGroup caGroup = group(new AccountGroup.UUID(groupApi.detail().id)); InternalGroup caGroup = group(new AccountGroup.UUID(groupApi.detail().id));

View File

@@ -56,6 +56,7 @@ import com.google.gerrit.acceptance.TestAccount;
import com.google.gerrit.acceptance.UseSsh; import com.google.gerrit.acceptance.UseSsh;
import com.google.gerrit.acceptance.testsuite.account.AccountOperations; import com.google.gerrit.acceptance.testsuite.account.AccountOperations;
import com.google.gerrit.acceptance.testsuite.account.TestSshKeys; import com.google.gerrit.acceptance.testsuite.account.TestSshKeys;
import com.google.gerrit.acceptance.testsuite.group.GroupOperations;
import com.google.gerrit.common.Nullable; import com.google.gerrit.common.Nullable;
import com.google.gerrit.common.data.AccessSection; import com.google.gerrit.common.data.AccessSection;
import com.google.gerrit.common.data.GlobalCapability; import com.google.gerrit.common.data.GlobalCapability;
@@ -97,6 +98,7 @@ import com.google.gerrit.gpg.PublicKeyStore;
import com.google.gerrit.gpg.testing.TestKey; import com.google.gerrit.gpg.testing.TestKey;
import com.google.gerrit.mail.Address; import com.google.gerrit.mail.Address;
import com.google.gerrit.reviewdb.client.Account; import com.google.gerrit.reviewdb.client.Account;
import com.google.gerrit.reviewdb.client.AccountGroup;
import com.google.gerrit.reviewdb.client.Branch; import com.google.gerrit.reviewdb.client.Branch;
import com.google.gerrit.reviewdb.client.Change; import com.google.gerrit.reviewdb.client.Change;
import com.google.gerrit.reviewdb.client.Project; import com.google.gerrit.reviewdb.client.Project;
@@ -233,6 +235,8 @@ public class AccountIT extends AbstractDaemonTest {
@Inject private AccountManager accountManager; @Inject private AccountManager accountManager;
@Inject protected GroupOperations groupOperations;
private AccountIndexedCounter accountIndexedCounter; private AccountIndexedCounter accountIndexedCounter;
private RegistrationHandle accountIndexEventCounterHandle; private RegistrationHandle accountIndexEventCounterHandle;
private RefUpdateCounter refUpdateCounter; private RefUpdateCounter refUpdateCounter;
@@ -2208,7 +2212,9 @@ public class AccountIT extends AbstractDaemonTest {
public void allGroupsForAUserAccountCanBeRetrieved() throws Exception { public void allGroupsForAUserAccountCanBeRetrieved() throws Exception {
String username = name("user1"); String username = name("user1");
accountOperations.newAccount().username(username).create(); accountOperations.newAccount().username(username).create();
String group = createGroup("group"); AccountGroup.UUID groupID = groupOperations.newGroup().name("group").create();
String group = groupOperations.group(groupID).get().name();
gApi.groups().id(group).addMembers(username); gApi.groups().id(group).addMembers(username);
List<GroupInfo> allGroups = gApi.accounts().id(username).getGroups(); List<GroupInfo> allGroups = gApi.accounts().id(username).getGroups();

View File

@@ -68,6 +68,7 @@ import com.google.gerrit.acceptance.NoHttpd;
import com.google.gerrit.acceptance.PushOneCommit; import com.google.gerrit.acceptance.PushOneCommit;
import com.google.gerrit.acceptance.TestProjectInput; import com.google.gerrit.acceptance.TestProjectInput;
import com.google.gerrit.acceptance.testsuite.account.AccountOperations; import com.google.gerrit.acceptance.testsuite.account.AccountOperations;
import com.google.gerrit.acceptance.testsuite.group.GroupOperations;
import com.google.gerrit.common.FooterConstants; import com.google.gerrit.common.FooterConstants;
import com.google.gerrit.common.data.LabelFunction; import com.google.gerrit.common.data.LabelFunction;
import com.google.gerrit.common.data.LabelType; import com.google.gerrit.common.data.LabelType;
@@ -194,6 +195,8 @@ public class ChangeIT extends AbstractDaemonTest {
@Inject private ChangeIndexCollection changeIndexCollection; @Inject private ChangeIndexCollection changeIndexCollection;
@Inject private IndexConfig indexConfig; @Inject private IndexConfig indexConfig;
@Inject protected GroupOperations groupOperations;
private ChangeIndexedCounter changeIndexedCounter; private ChangeIndexedCounter changeIndexedCounter;
private RegistrationHandle changeIndexedCounterHandle; private RegistrationHandle changeIndexedCounterHandle;
@@ -1823,7 +1826,7 @@ public class ChangeIT extends AbstractDaemonTest {
.preferredEmail(email) .preferredEmail(email)
.fullname(fullname) .fullname(fullname)
.create(); .create();
String testGroup = createGroupWithRealName("ab"); String testGroup = groupOperations.newGroup().name("ab").create().get();
GroupApi groupApi = gApi.groups().id(testGroup); GroupApi groupApi = gApi.groups().id(testGroup);
groupApi.description("test group"); groupApi.description("test group");
groupApi.addMembers(user.fullName); groupApi.addMembers(user.fullName);
@@ -1884,7 +1887,7 @@ public class ChangeIT extends AbstractDaemonTest {
.fullname(myGroupUserFullname) .fullname(myGroupUserFullname)
.create(); .create();
String testGroup = createGroupWithRealName("kobe"); String testGroup = groupOperations.newGroup().name("kobe").create().get();
GroupApi groupApi = gApi.groups().id(testGroup); GroupApi groupApi = gApi.groups().id(testGroup);
groupApi.description("test group"); groupApi.description("test group");
groupApi.addMembers(myGroupUserFullname); groupApi.addMembers(myGroupUserFullname);

View File

@@ -20,6 +20,7 @@ import static com.google.gerrit.server.group.SystemGroupBackend.REGISTERED_USERS
import com.google.gerrit.acceptance.AbstractDaemonTest; import com.google.gerrit.acceptance.AbstractDaemonTest;
import com.google.gerrit.acceptance.NoHttpd; import com.google.gerrit.acceptance.NoHttpd;
import com.google.gerrit.acceptance.Sandboxed; import com.google.gerrit.acceptance.Sandboxed;
import com.google.gerrit.acceptance.testsuite.group.GroupOperations;
import com.google.gerrit.common.data.GlobalCapability; import com.google.gerrit.common.data.GlobalCapability;
import com.google.gerrit.extensions.api.config.ConsistencyCheckInfo; import com.google.gerrit.extensions.api.config.ConsistencyCheckInfo;
import com.google.gerrit.extensions.api.config.ConsistencyCheckInfo.ConsistencyProblemInfo; import com.google.gerrit.extensions.api.config.ConsistencyCheckInfo.ConsistencyProblemInfo;
@@ -30,6 +31,7 @@ import com.google.gerrit.reviewdb.client.RefNames;
import com.google.gerrit.server.group.db.GroupConfig; import com.google.gerrit.server.group.db.GroupConfig;
import com.google.gerrit.server.group.db.GroupNameNotes; import com.google.gerrit.server.group.db.GroupNameNotes;
import com.google.gerrit.server.group.db.testing.GroupTestUtil; import com.google.gerrit.server.group.db.testing.GroupTestUtil;
import com.google.inject.Inject;
import java.util.List; import java.util.List;
import org.eclipse.jgit.lib.Config; import org.eclipse.jgit.lib.Config;
import org.eclipse.jgit.lib.RefRename; import org.eclipse.jgit.lib.RefRename;
@@ -47,6 +49,8 @@ import org.junit.Test;
@Sandboxed @Sandboxed
@NoHttpd @NoHttpd
public class GroupsConsistencyIT extends AbstractDaemonTest { public class GroupsConsistencyIT extends AbstractDaemonTest {
@Inject protected GroupOperations groupOperations;
private GroupInfo gAdmin; private GroupInfo gAdmin;
private GroupInfo g1; private GroupInfo g1;
private GroupInfo g2; private GroupInfo g2;
@@ -57,8 +61,8 @@ public class GroupsConsistencyIT extends AbstractDaemonTest {
public void basicSetup() throws Exception { public void basicSetup() throws Exception {
allowGlobalCapabilities(REGISTERED_USERS, GlobalCapability.ACCESS_DATABASE); allowGlobalCapabilities(REGISTERED_USERS, GlobalCapability.ACCESS_DATABASE);
String name1 = createGroup("g1"); String name1 = groupOperations.newGroup().name("g1").create().get();
String name2 = createGroup("g2"); String name2 = groupOperations.newGroup().name("g2").create().get();
gApi.groups().id(name1).addMembers(user.fullName); gApi.groups().id(name1).addMembers(user.fullName);
gApi.groups().id(name2).addMembers(admin.fullName); gApi.groups().id(name2).addMembers(admin.fullName);
@@ -218,7 +222,7 @@ public class GroupsConsistencyIT extends AbstractDaemonTest {
@Test @Test
public void cyclicSubgroup() throws Exception { public void cyclicSubgroup() throws Exception {
updateGroupFile(RefNames.refsGroups(new AccountGroup.UUID(g1.id)), "subgroups", g1.id + "\n"); updateGroupFile(RefNames.refsGroups(new AccountGroup.UUID(g1.id)), "subgroups", g1.id + "\n");
assertWarning("cyclic"); assertWarning("cycle");
} }
private void assertError(String msg) throws Exception { private void assertError(String msg) throws Exception {

View File

@@ -144,6 +144,23 @@ public class GroupsIT extends AbstractDaemonTest {
} }
} }
// Creates a group, but with uniquified name.
protected String createGroup(String name) throws Exception {
// TODO(hanwen): rewrite this test in terms of UUID. This requires redoing the assertion helpers
// too.
AccountGroup.UUID g = groupOperations.newGroup().ownerGroupUuid(adminGroupUuid()).create();
return groupRef(g).getName();
}
protected String createGroup(String name, String owner) throws Exception {
name = name(name);
GroupInput in = new GroupInput();
in.name = name;
in.ownerId = owner;
gApi.groups().create(in);
return name;
}
@Override @Override
protected ProjectResetter.Config resetProjects() { protected ProjectResetter.Config resetProjects() {
// Don't reset All-Users since deleting users makes groups inconsistent (e.g. groups would // Don't reset All-Users since deleting users makes groups inconsistent (e.g. groups would

View File

@@ -31,6 +31,7 @@ import com.google.gerrit.acceptance.PushOneCommit;
import com.google.gerrit.acceptance.RestResponse; import com.google.gerrit.acceptance.RestResponse;
import com.google.gerrit.acceptance.Sandboxed; import com.google.gerrit.acceptance.Sandboxed;
import com.google.gerrit.acceptance.TestAccount; import com.google.gerrit.acceptance.TestAccount;
import com.google.gerrit.acceptance.testsuite.group.GroupOperations;
import com.google.gerrit.common.data.Permission; import com.google.gerrit.common.data.Permission;
import com.google.gerrit.extensions.api.changes.AddReviewerInput; import com.google.gerrit.extensions.api.changes.AddReviewerInput;
import com.google.gerrit.extensions.api.changes.AddReviewerResult; import com.google.gerrit.extensions.api.changes.AddReviewerResult;
@@ -52,6 +53,7 @@ import com.google.gerrit.reviewdb.client.RefNames;
import com.google.gerrit.server.change.ReviewerAdder; import com.google.gerrit.server.change.ReviewerAdder;
import com.google.gerrit.testing.FakeEmailSender.Message; import com.google.gerrit.testing.FakeEmailSender.Message;
import com.google.gson.stream.JsonReader; import com.google.gson.stream.JsonReader;
import com.google.inject.Inject;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.Collections; import java.util.Collections;
@@ -62,12 +64,15 @@ import java.util.Map;
import org.junit.Test; import org.junit.Test;
public class ChangeReviewersIT extends AbstractDaemonTest { public class ChangeReviewersIT extends AbstractDaemonTest {
@Inject protected GroupOperations groupOperations;
@Test @Test
public void addGroupAsReviewer() throws Exception { public void addGroupAsReviewer() throws Exception {
// Set up two groups, one that is too large too add as reviewer, and one // Set up two groups, one that is too large too add as reviewer, and one
// that is too large to add without confirmation. // that is too large to add without confirmation.
String largeGroup = createGroup("largeGroup"); String largeGroup = groupOperations.newGroup().name("largeGroup").create().get();
String mediumGroup = createGroup("mediumGroup"); String mediumGroup = groupOperations.newGroup().name("mediumGroup").create().get();
int largeGroupSize = ReviewerAdder.DEFAULT_MAX_REVIEWERS + 1; int largeGroupSize = ReviewerAdder.DEFAULT_MAX_REVIEWERS + 1;
int mediumGroupSize = ReviewerAdder.DEFAULT_MAX_REVIEWERS_WITHOUT_CHECK + 1; int mediumGroupSize = ReviewerAdder.DEFAULT_MAX_REVIEWERS_WITHOUT_CHECK + 1;
@@ -170,7 +175,7 @@ public class ChangeReviewersIT extends AbstractDaemonTest {
PushOneCommit.Result r = createChange(); PushOneCommit.Result r = createChange();
String changeId = r.getChangeId(); String changeId = r.getChangeId();
AddReviewerInput in = new AddReviewerInput(); AddReviewerInput in = new AddReviewerInput();
in.reviewer = createGroup("cc1"); in.reviewer = groupOperations.newGroup().name("cc1").create().get();
in.state = CC; in.state = CC;
gApi.groups() gApi.groups()
.id(in.reviewer) .id(in.reviewer)
@@ -209,7 +214,7 @@ public class ChangeReviewersIT extends AbstractDaemonTest {
result = addReviewer(changeId, reviewer.username); result = addReviewer(changeId, reviewer.username);
assertThat(result.error).isNull(); assertThat(result.error).isNull();
sender.clear(); sender.clear();
in.reviewer = createGroup("cc2"); in.reviewer = groupOperations.newGroup().name("cc2").create().get();
gApi.groups().id(in.reviewer).addMembers(usernames.toArray(new String[usernames.size()])); gApi.groups().id(in.reviewer).addMembers(usernames.toArray(new String[usernames.size()]));
gApi.groups().id(in.reviewer).addMembers(reviewer.username); gApi.groups().id(in.reviewer).addMembers(reviewer.username);
result = addReviewer(changeId, in); result = addReviewer(changeId, in);
@@ -479,8 +484,8 @@ public class ChangeReviewersIT extends AbstractDaemonTest {
usernames.add(u.username); usernames.add(u.username);
} }
String largeGroup = createGroup("largeGroup"); String largeGroup = groupOperations.newGroup().name("largeGroup").create().get();
String mediumGroup = createGroup("mediumGroup"); String mediumGroup = groupOperations.newGroup().name("mediumGroup").create().get();
gApi.groups().id(largeGroup).addMembers(usernames.toArray(new String[largeGroupSize])); gApi.groups().id(largeGroup).addMembers(usernames.toArray(new String[largeGroupSize]));
gApi.groups() gApi.groups()
.id(mediumGroup) .id(mediumGroup)
@@ -622,8 +627,8 @@ public class ChangeReviewersIT extends AbstractDaemonTest {
accountCreator.create(name("user2"), emailPrefix + "user2@example.com", "User2"); accountCreator.create(name("user2"), emailPrefix + "user2@example.com", "User2");
TestAccount user3 = TestAccount user3 =
accountCreator.create(name("user3"), emailPrefix + "user3@example.com", "User3"); accountCreator.create(name("user3"), emailPrefix + "user3@example.com", "User3");
String group1 = createGroup("group1"); String group1 = groupOperations.newGroup().name("group1").create().get();
String group2 = createGroup("group2"); String group2 = groupOperations.newGroup().name("group2").create().get();
gApi.groups().id(group1).addMembers(user1.username, user2.username); gApi.groups().id(group1).addMembers(user1.username, user2.username);
gApi.groups().id(group2).addMembers(user2.username, user3.username); gApi.groups().id(group2).addMembers(user2.username, user3.username);

View File

@@ -20,17 +20,22 @@ import static com.google.gerrit.server.group.SystemGroupBackend.REGISTERED_USERS
import com.google.gerrit.acceptance.AbstractDaemonTest; import com.google.gerrit.acceptance.AbstractDaemonTest;
import com.google.gerrit.acceptance.PushOneCommit; import com.google.gerrit.acceptance.PushOneCommit;
import com.google.gerrit.acceptance.TestAccount; import com.google.gerrit.acceptance.TestAccount;
import com.google.gerrit.acceptance.testsuite.group.GroupOperations;
import com.google.gerrit.common.data.Permission; import com.google.gerrit.common.data.Permission;
import com.google.gerrit.extensions.common.ChangeInfo; import com.google.gerrit.extensions.common.ChangeInfo;
import com.google.gerrit.reviewdb.client.AccountGroup; import com.google.gerrit.reviewdb.client.AccountGroup;
import com.google.gerrit.reviewdb.client.Project; import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.server.project.testing.Util; import com.google.gerrit.server.project.testing.Util;
import com.google.inject.Inject;
import java.util.List; import java.util.List;
import org.eclipse.jgit.internal.storage.dfs.InMemoryRepository; import org.eclipse.jgit.internal.storage.dfs.InMemoryRepository;
import org.eclipse.jgit.junit.TestRepository; import org.eclipse.jgit.junit.TestRepository;
import org.junit.Test; import org.junit.Test;
public class IndexChangeIT extends AbstractDaemonTest { public class IndexChangeIT extends AbstractDaemonTest {
@Inject protected GroupOperations groupOperations;
@Test @Test
public void indexChange() throws Exception { public void indexChange() throws Exception {
String changeId = createChange().getChangeId(); String changeId = createChange().getChangeId();
@@ -48,7 +53,8 @@ public class IndexChangeIT extends AbstractDaemonTest {
public void indexChangeAfterOwnerLosesVisibility() throws Exception { public void indexChangeAfterOwnerLosesVisibility() throws Exception {
// Create a test group with 2 users as members // Create a test group with 2 users as members
TestAccount user2 = accountCreator.user2(); TestAccount user2 = accountCreator.user2();
String group = createGroup("test"); AccountGroup.UUID groupId = groupOperations.newGroup().name("test").create();
String group = groupOperations.group(groupId).get().name();
gApi.groups().id(group).addMembers("admin", "user", user2.username); gApi.groups().id(group).addMembers("admin", "user", user2.username);
// Create a project and restrict its visibility to the group // Create a project and restrict its visibility to the group