Merge branch 'stable-2.15' into stable-2.16

* stable-2.15:
  Update mockito-core to 2.24.5

Change-Id: Ib73ade5e0f486f0d312995a43a254bf67adaf940
diff --git a/WORKSPACE b/WORKSPACE
index 4f512b9..081cc2f 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -3,7 +3,7 @@
 load("//:bazlets.bzl", "load_bazlets")
 
 load_bazlets(
-    commit = "2b1d68959119920e5fa9bdfb9f0cf926bfef4929",
+    commit = "b084bd74743f4303971a2a057bcea4f3352ddf4e",
     #local_path = "/home/<user>/projects/bazlets",
 )
 
diff --git a/src/main/java/com/googlesource/gerrit/plugins/ratelimiter/Configuration.java b/src/main/java/com/googlesource/gerrit/plugins/ratelimiter/Configuration.java
index db21aa9..c05a01b 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/ratelimiter/Configuration.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/ratelimiter/Configuration.java
@@ -17,11 +17,11 @@
 import com.google.common.collect.ArrayTable;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Table;
-import com.google.gerrit.common.data.GroupDescription;
+import com.google.gerrit.common.data.GroupDescription.Basic;
 import com.google.gerrit.extensions.annotations.PluginName;
 import com.google.gerrit.reviewdb.client.AccountGroup;
 import com.google.gerrit.server.config.PluginConfigFactory;
-import com.google.gerrit.server.group.GroupsCollection;
+import com.google.gerrit.server.group.GroupResolver;
 import com.google.inject.Inject;
 import com.google.inject.ProvisionException;
 import com.google.inject.Singleton;
@@ -30,14 +30,10 @@
 import java.util.Map;
 import java.util.Map.Entry;
 import org.eclipse.jgit.lib.Config;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 @Singleton
 class Configuration {
 
-  private static final Logger log = LoggerFactory.getLogger(Configuration.class);
-
   static final String RATE_LIMIT_TOKEN = "${rateLimit}";
   private static final String GROUP_SECTION = "group";
   private static final String DEFAULT_UPLOADPACK_LIMIT_EXCEEDED_MSG =
@@ -50,13 +46,13 @@
   Configuration(
       PluginConfigFactory pluginConfigFactory,
       @PluginName String pluginName,
-      GroupsCollection groupsCollection) {
+      GroupResolver groupsCollection) {
     Config config = pluginConfigFactory.getGlobalPluginConfig(pluginName);
     parseAllGroupsRateLimits(config, groupsCollection);
     rateLimitExceededMsg = parseLimitExceededMsg(config);
   }
 
-  private void parseAllGroupsRateLimits(Config config, GroupsCollection groupsCollection) {
+  private void parseAllGroupsRateLimits(Config config, GroupResolver groupsCollection) {
     Map<String, AccountGroup.UUID> groups = getResolvedGroups(config, groupsCollection);
     if (groups.size() == 0) {
       return;
@@ -68,16 +64,12 @@
   }
 
   private Map<String, AccountGroup.UUID> getResolvedGroups(
-      Config config, GroupsCollection groupsCollection) {
+      Config config, GroupResolver groupsCollection) {
     LinkedHashMap<String, AccountGroup.UUID> groups = new LinkedHashMap<>();
     for (String groupName : config.getSubsections(GROUP_SECTION)) {
-      GroupDescription.Basic groupDesc = groupsCollection.parseId(groupName);
-
-      // Group either is mis-configured, never existed, or was deleted/removed since.
-      if (groupDesc == null) {
-        log.warn("Invalid configuration, group not found: {}", groupName);
-      } else {
-        groups.put(groupName, groupDesc.getGroupUUID());
+      Basic basic = groupsCollection.parseId(groupName);
+      if (basic != null) {
+        groups.put(groupName, basic.getGroupUUID());
       }
     }
     return groups;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/ratelimiter/UserResolver.java b/src/main/java/com/googlesource/gerrit/plugins/ratelimiter/UserResolver.java
index 852367e..11dffed 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/ratelimiter/UserResolver.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/ratelimiter/UserResolver.java
@@ -39,7 +39,9 @@
 
   Optional<String> getUserName(String key) {
     Optional<IdentifiedUser> user = getIdentifiedUser(key);
-    return user.isPresent() ? Optional.ofNullable(user.get().getUserName()) : Optional.empty();
+    return user.isPresent()
+        ? Optional.ofNullable(user.get().getUserName().get())
+        : Optional.empty();
   }
 
   private static boolean isNumeric(String key) {
diff --git a/src/test/java/com/googlesource/gerrit/plugins/ratelimiter/ConfigurationTest.java b/src/test/java/com/googlesource/gerrit/plugins/ratelimiter/ConfigurationTest.java
index 78ef8dc..c17839d 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/ratelimiter/ConfigurationTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/ratelimiter/ConfigurationTest.java
@@ -20,7 +20,7 @@
 import com.google.gerrit.common.data.GroupDescription;
 import com.google.gerrit.reviewdb.client.AccountGroup;
 import com.google.gerrit.server.config.PluginConfigFactory;
-import com.google.gerrit.server.group.GroupsCollection;
+import com.google.gerrit.server.group.GroupResolver;
 import com.google.inject.ProvisionException;
 import java.util.Map;
 import org.eclipse.jgit.errors.ConfigInvalidException;
@@ -40,7 +40,7 @@
   @Rule public ExpectedException exception = ExpectedException.none();
 
   @Mock private PluginConfigFactory pluginConfigFactoryMock;
-  @Mock private GroupsCollection groupsCollectionMock;
+  @Mock private GroupResolver groupsCollectionMock;
   @Mock private GroupDescription.Basic administratorsGroupDescMock;
   @Mock private GroupDescription.Basic someGroupDescMock;
 
@@ -51,17 +51,16 @@
   @Before
   public void setUp() {
     globalPluginConfig = new Config();
+
     when(pluginConfigFactoryMock.getGlobalPluginConfig(PLUGIN_NAME)).thenReturn(globalPluginConfig);
 
-    when(administratorsGroupDescMock.getName()).thenReturn("Administrators");
     when(administratorsGroupDescMock.getGroupUUID())
         .thenReturn(new AccountGroup.UUID("admin_uuid"));
-    when(groupsCollectionMock.parseId(administratorsGroupDescMock.getName()))
-        .thenReturn(administratorsGroupDescMock);
+    when(groupsCollectionMock.parseId("Administrators")).thenReturn(administratorsGroupDescMock);
 
     when(someGroupDescMock.getName()).thenReturn("someGroup");
     when(someGroupDescMock.getGroupUUID()).thenReturn(new AccountGroup.UUID("some_uuid"));
-    when(groupsCollectionMock.parseId(someGroupDescMock.getName())).thenReturn(someGroupDescMock);
+    when(groupsCollectionMock.parseId("someGroup")).thenReturn(someGroupDescMock);
   }
 
   private Configuration getConfiguration() {
diff --git a/src/test/java/com/googlesource/gerrit/plugins/ratelimiter/RateLimitUploadPackIT.java b/src/test/java/com/googlesource/gerrit/plugins/ratelimiter/RateLimitUploadPackIT.java
index f421748..0c0101b 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/ratelimiter/RateLimitUploadPackIT.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/ratelimiter/RateLimitUploadPackIT.java
@@ -32,11 +32,11 @@
 public class RateLimitUploadPackIT extends LightweightPluginDaemonTest {
 
   @Override
-  public void setUp() throws Exception {
+  public void setUpTestPlugin() throws Exception {
     // Create the group before the plugin is loaded since limits per group are
     // resolved at plugin load time.
     addUserToNewGroup();
-    super.setUp();
+    super.setUpTestPlugin();
   }
 
   @Test