Merge branch 'stable-3.0' into stable-3.1

* stable-3.0:
  Bump Bazel version to 3.7.0
  Upgrade bazlets to latest stable-3.0 to build with 3.0.13 API

Change-Id: I647e8fa47d9e6a4f33d1de72ae1a4fc457b4dcd4
diff --git a/WORKSPACE b/WORKSPACE
index 9e22137..46942ae 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -3,7 +3,7 @@
 load("//:bazlets.bzl", "load_bazlets")
 
 load_bazlets(
-    commit = "a010a539824bd467059f414412a47b80101352d7",
+    commit = "3f9dadc615dc4053369a42d9ada37dafd8d4763c",
     #local_path = "/home/<user>/projects/bazlets",
 )
 
diff --git a/src/main/java/com/googlesource/gerrit/plugins/quota/DeletionListener.java b/src/main/java/com/googlesource/gerrit/plugins/quota/DeletionListener.java
index e625187..90212f4 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/quota/DeletionListener.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/quota/DeletionListener.java
@@ -14,8 +14,8 @@
 
 package com.googlesource.gerrit.plugins.quota;
 
+import com.google.gerrit.entities.Project;
 import com.google.gerrit.extensions.events.ProjectDeletedListener;
-import com.google.gerrit.reviewdb.client.Project;
 import com.google.inject.Inject;
 
 public class DeletionListener implements ProjectDeletedListener {
@@ -29,6 +29,6 @@
 
   @Override
   public void onProjectDeleted(Event event) {
-    repoSizeCache.evict(new Project.NameKey(event.getProjectName()));
+    repoSizeCache.evict(Project.nameKey(event.getProjectName()));
   }
 }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/quota/GCListener.java b/src/main/java/com/googlesource/gerrit/plugins/quota/GCListener.java
index ca2e933..1ac9c84 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/quota/GCListener.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/quota/GCListener.java
@@ -14,9 +14,8 @@
 
 package com.googlesource.gerrit.plugins.quota;
 
+import com.google.gerrit.entities.Project;
 import com.google.gerrit.extensions.events.GarbageCollectorListener;
-import com.google.gerrit.reviewdb.client.Project;
-import com.google.gerrit.reviewdb.client.Project.NameKey;
 import com.google.inject.Inject;
 import com.google.inject.Singleton;
 import java.util.Properties;
@@ -33,7 +32,7 @@
 
   @Override
   public void onGarbageCollected(GarbageCollectorListener.Event event) {
-    Project.NameKey key = new NameKey(event.getProjectName());
+    Project.NameKey key = Project.nameKey(event.getProjectName());
     Properties statistics = event.getStatistics();
     if (statistics != null) {
       Number sizeOfLooseObjects = (Number) statistics.get("sizeOfLooseObjects");
diff --git a/src/main/java/com/googlesource/gerrit/plugins/quota/GetQuota.java b/src/main/java/com/googlesource/gerrit/plugins/quota/GetQuota.java
index 854d9ef..d735e95 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/quota/GetQuota.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/quota/GetQuota.java
@@ -17,8 +17,9 @@
 import static com.googlesource.gerrit.plugins.quota.MaxRepositorySizeQuota.REPO_SIZE_CACHE;
 
 import com.google.common.cache.LoadingCache;
+import com.google.gerrit.entities.Project;
+import com.google.gerrit.extensions.restapi.Response;
 import com.google.gerrit.extensions.restapi.RestReadView;
-import com.google.gerrit.reviewdb.client.Project;
 import com.google.gerrit.server.project.ProjectCache;
 import com.google.gerrit.server.project.ProjectResource;
 import com.google.inject.Inject;
@@ -43,8 +44,8 @@
   }
 
   @Override
-  public QuotaInfo apply(ProjectResource rsrc) throws ExecutionException {
-    return getInfo(rsrc.getNameKey());
+  public Response<QuotaInfo> apply(ProjectResource rsrc) throws ExecutionException {
+    return Response.ok(getInfo(rsrc.getNameKey()));
   }
 
   QuotaInfo getInfo(Project.NameKey n) throws ExecutionException {
diff --git a/src/main/java/com/googlesource/gerrit/plugins/quota/HttpModule.java b/src/main/java/com/googlesource/gerrit/plugins/quota/HttpModule.java
index 5a2148e..fec49cd 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/quota/HttpModule.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/quota/HttpModule.java
@@ -16,10 +16,10 @@
 
 import com.google.common.cache.CacheBuilder;
 import com.google.common.cache.LoadingCache;
+import com.google.gerrit.entities.Account;
 import com.google.gerrit.extensions.annotations.PluginName;
 import com.google.gerrit.extensions.registration.DynamicSet;
 import com.google.gerrit.httpd.AllRequestFilter;
-import com.google.gerrit.reviewdb.client.Account;
 import com.google.gerrit.server.IdentifiedUser.GenericFactory;
 import com.google.gerrit.server.cache.CacheModule;
 import com.google.gerrit.server.config.PluginConfig;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/quota/ListQuotas.java b/src/main/java/com/googlesource/gerrit/plugins/quota/ListQuotas.java
index 008863f..5031937 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/quota/ListQuotas.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/quota/ListQuotas.java
@@ -15,9 +15,10 @@
 package com.googlesource.gerrit.plugins.quota;
 
 import com.google.common.collect.Maps;
+import com.google.gerrit.entities.Project;
+import com.google.gerrit.extensions.restapi.Response;
 import com.google.gerrit.extensions.restapi.RestApiException;
 import com.google.gerrit.extensions.restapi.RestReadView;
-import com.google.gerrit.reviewdb.client.Project;
 import com.google.gerrit.server.config.ConfigResource;
 import com.google.gerrit.server.permissions.PermissionBackendException;
 import com.google.gerrit.server.restapi.project.ListProjects;
@@ -50,15 +51,15 @@
   }
 
   @Override
-  public Map<String, QuotaInfo> apply(ConfigResource resource)
+  public Response<Map<String, QuotaInfo>> apply(ConfigResource resource)
       throws RestApiException, ExecutionException, PermissionBackendException {
     Map<String, QuotaInfo> result = Maps.newTreeMap();
     ListProjects lister = listProjects.get();
     lister.setMatchPrefix(matchPrefix);
     for (String projectName : lister.apply().keySet()) {
-      Project.NameKey n = new Project.NameKey(projectName);
+      Project.NameKey n = Project.nameKey(projectName);
       result.put(projectName, getQuota.getInfo(n));
     }
-    return result;
+    return Response.ok(result);
   }
 }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/quota/MaxRepositoriesQuotaValidator.java b/src/main/java/com/googlesource/gerrit/plugins/quota/MaxRepositoriesQuotaValidator.java
index 16499c1..12b6e19 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/quota/MaxRepositoriesQuotaValidator.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/quota/MaxRepositoriesQuotaValidator.java
@@ -14,7 +14,7 @@
 
 package com.googlesource.gerrit.plugins.quota;
 
-import com.google.gerrit.reviewdb.client.Project;
+import com.google.gerrit.entities.Project;
 import com.google.gerrit.server.project.CreateProjectArgs;
 import com.google.gerrit.server.project.ProjectCache;
 import com.google.gerrit.server.validators.ProjectCreationValidationListener;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/quota/MaxRepositorySizeQuota.java b/src/main/java/com/googlesource/gerrit/plugins/quota/MaxRepositorySizeQuota.java
index a20ebed..ab132db 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/quota/MaxRepositorySizeQuota.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/quota/MaxRepositorySizeQuota.java
@@ -22,8 +22,8 @@
 import com.google.common.cache.CacheLoader;
 import com.google.common.cache.LoadingCache;
 import com.google.common.collect.Ordering;
+import com.google.gerrit.entities.Project;
 import com.google.gerrit.extensions.annotations.PluginName;
-import com.google.gerrit.reviewdb.client.Project;
 import com.google.gerrit.server.cache.CacheModule;
 import com.google.gerrit.server.config.PluginConfigFactory;
 import com.google.gerrit.server.git.GitRepositoryManager;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/quota/Module.java b/src/main/java/com/googlesource/gerrit/plugins/quota/Module.java
index 37b7b06..8745983 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/quota/Module.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/quota/Module.java
@@ -22,6 +22,7 @@
 import com.google.common.cache.CacheLoader;
 import com.google.common.cache.LoadingCache;
 import com.google.common.util.concurrent.RateLimiter;
+import com.google.gerrit.entities.Account;
 import com.google.gerrit.extensions.annotations.PluginName;
 import com.google.gerrit.extensions.events.GarbageCollectorListener;
 import com.google.gerrit.extensions.events.LifecycleListener;
@@ -29,7 +30,6 @@
 import com.google.gerrit.extensions.registration.DynamicMap;
 import com.google.gerrit.extensions.registration.DynamicSet;
 import com.google.gerrit.extensions.restapi.RestApiModule;
-import com.google.gerrit.reviewdb.client.Account;
 import com.google.gerrit.server.IdentifiedUser;
 import com.google.gerrit.server.IdentifiedUser.GenericFactory;
 import com.google.gerrit.server.cache.CacheModule;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/quota/Namespace.java b/src/main/java/com/googlesource/gerrit/plugins/quota/Namespace.java
index 9b018ec..bd1bb27 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/quota/Namespace.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/quota/Namespace.java
@@ -14,7 +14,7 @@
 
 package com.googlesource.gerrit.plugins.quota;
 
-import com.google.gerrit.reviewdb.client.Project;
+import com.google.gerrit.entities.Project;
 
 public class Namespace {
 
diff --git a/src/main/java/com/googlesource/gerrit/plugins/quota/QuotaFinder.java b/src/main/java/com/googlesource/gerrit/plugins/quota/QuotaFinder.java
index f32e1ac..6650880 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/quota/QuotaFinder.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/quota/QuotaFinder.java
@@ -14,7 +14,7 @@
 
 package com.googlesource.gerrit.plugins.quota;
 
-import com.google.gerrit.reviewdb.client.Project;
+import com.google.gerrit.entities.Project;
 import com.google.gerrit.server.project.ProjectCache;
 import com.google.inject.Inject;
 import java.util.Set;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/quota/QuotaSection.java b/src/main/java/com/googlesource/gerrit/plugins/quota/QuotaSection.java
index 07e6e20..3dc7c06 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/quota/QuotaSection.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/quota/QuotaSection.java
@@ -14,7 +14,7 @@
 
 package com.googlesource.gerrit.plugins.quota;
 
-import com.google.gerrit.reviewdb.client.Project;
+import com.google.gerrit.entities.Project;
 import org.eclipse.jgit.lib.Config;
 
 public class QuotaSection {
diff --git a/src/main/java/com/googlesource/gerrit/plugins/quota/RateLimitUploadListener.java b/src/main/java/com/googlesource/gerrit/plugins/quota/RateLimitUploadListener.java
index dfac1d9..2b2f171 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/quota/RateLimitUploadListener.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/quota/RateLimitUploadListener.java
@@ -17,8 +17,8 @@
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.cache.LoadingCache;
 import com.google.common.util.concurrent.RateLimiter;
-import com.google.gerrit.reviewdb.client.Account;
-import com.google.gerrit.reviewdb.client.Project;
+import com.google.gerrit.entities.Account;
+import com.google.gerrit.entities.Project;
 import com.google.gerrit.server.CurrentUser;
 import com.google.gerrit.server.git.validators.UploadValidationListener;
 import com.google.gerrit.server.validators.ValidationException;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/quota/RepoSizeCache.java b/src/main/java/com/googlesource/gerrit/plugins/quota/RepoSizeCache.java
index 2b20d59..f60fc90 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/quota/RepoSizeCache.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/quota/RepoSizeCache.java
@@ -14,7 +14,7 @@
 
 package com.googlesource.gerrit.plugins.quota;
 
-import com.google.gerrit.reviewdb.client.Project;
+import com.google.gerrit.entities.Project;
 
 public interface RepoSizeCache {
 
diff --git a/src/main/java/com/googlesource/gerrit/plugins/quota/RepoSizeEventCreator.java b/src/main/java/com/googlesource/gerrit/plugins/quota/RepoSizeEventCreator.java
index 08a9959..50c229a 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/quota/RepoSizeEventCreator.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/quota/RepoSizeEventCreator.java
@@ -14,9 +14,9 @@
 
 package com.googlesource.gerrit.plugins.quota;
 
+import com.google.gerrit.entities.Project;
 import com.google.gerrit.extensions.events.UsageDataPublishedListener.Event;
 import com.google.gerrit.extensions.events.UsageDataPublishedListener.MetaData;
-import com.google.gerrit.reviewdb.client.Project;
 import com.google.gerrit.server.project.ProjectCache;
 import com.google.inject.Inject;
 import com.google.inject.Singleton;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/quota/RestApiRateLimiter.java b/src/main/java/com/googlesource/gerrit/plugins/quota/RestApiRateLimiter.java
index 1a7fa98..6f5c334 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/quota/RestApiRateLimiter.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/quota/RestApiRateLimiter.java
@@ -15,8 +15,8 @@
 package com.googlesource.gerrit.plugins.quota;
 
 import com.google.common.cache.LoadingCache;
+import com.google.gerrit.entities.Account;
 import com.google.gerrit.httpd.AllRequestFilter;
-import com.google.gerrit.reviewdb.client.Account;
 import com.google.gerrit.server.CurrentUser;
 import com.google.inject.Inject;
 import com.google.inject.Provider;
diff --git a/src/test/java/com/googlesource/gerrit/plugins/quota/DeletionListenerTest.java b/src/test/java/com/googlesource/gerrit/plugins/quota/DeletionListenerTest.java
index 592809e..316baa3 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/quota/DeletionListenerTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/quota/DeletionListenerTest.java
@@ -14,13 +14,12 @@
 
 package com.googlesource.gerrit.plugins.quota;
 
-import static org.easymock.EasyMock.createMock;
-import static org.easymock.EasyMock.replay;
-import static org.easymock.EasyMock.verify;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
 
+import com.google.gerrit.entities.Project;
 import com.google.gerrit.extensions.api.changes.NotifyHandling;
 import com.google.gerrit.extensions.events.ProjectDeletedListener;
-import com.google.gerrit.reviewdb.client.Project;
 import org.junit.Test;
 
 public class DeletionListenerTest {
@@ -28,11 +27,9 @@
 
   @Test
   public void testName() throws Exception {
-    RepoSizeCache repoSizeCache = createMock(RepoSizeCache.class);
-    Project.NameKey p = new Project.NameKey(MY_PROJECT);
-    repoSizeCache.evict(p);
+    RepoSizeCache repoSizeCache = mock(RepoSizeCache.class);
+    Project.NameKey p = Project.nameKey(MY_PROJECT);
     DeletionListener classUnderTest = new DeletionListener(repoSizeCache);
-    replay(repoSizeCache);
 
     ProjectDeletedListener.Event event =
         new ProjectDeletedListener.Event() {
@@ -48,6 +45,6 @@
         };
     classUnderTest.onProjectDeleted(event);
 
-    verify(repoSizeCache);
+    verify(repoSizeCache).evict(p);
   }
 }
diff --git a/src/test/java/com/googlesource/gerrit/plugins/quota/GCListenerTest.java b/src/test/java/com/googlesource/gerrit/plugins/quota/GCListenerTest.java
index f73ef3d..b5d141d 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/quota/GCListenerTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/quota/GCListenerTest.java
@@ -14,14 +14,12 @@
 
 package com.googlesource.gerrit.plugins.quota;
 
-import static org.easymock.EasyMock.createMock;
-import static org.easymock.EasyMock.expectLastCall;
-import static org.easymock.EasyMock.replay;
-import static org.easymock.EasyMock.verify;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
 
+import com.google.gerrit.entities.Project;
 import com.google.gerrit.extensions.api.changes.NotifyHandling;
 import com.google.gerrit.extensions.events.GarbageCollectorListener;
-import com.google.gerrit.reviewdb.client.Project;
 import java.util.Properties;
 import org.junit.Test;
 
@@ -30,10 +28,7 @@
 
   @Test
   public void testEventWithStatistics() {
-    RepoSizeCache repoSizeCache = createMock(RepoSizeCache.class);
-    repoSizeCache.set(new Project.NameKey(PROJECT_NAME), 9999L);
-    expectLastCall();
-    replay(repoSizeCache);
+    RepoSizeCache repoSizeCache = mock(RepoSizeCache.class);
 
     GCListener listener = new GCListener(repoSizeCache);
 
@@ -43,35 +38,29 @@
 
     listener.onGarbageCollected(createEvent(PROJECT_NAME, statistics));
 
-    verify(repoSizeCache);
+    verify(repoSizeCache).set(Project.nameKey(PROJECT_NAME), 9999L);
   }
 
   @Test
   public void testEventWithoutStatistics() {
-    RepoSizeCache repoSizeCache = createMock(RepoSizeCache.class);
-    repoSizeCache.evict(new Project.NameKey(PROJECT_NAME));
-    expectLastCall();
-    replay(repoSizeCache);
+    RepoSizeCache repoSizeCache = mock(RepoSizeCache.class);
 
     GCListener listener = new GCListener(repoSizeCache);
 
     listener.onGarbageCollected(createEvent(PROJECT_NAME, null));
 
-    verify(repoSizeCache);
+    verify(repoSizeCache).evict(Project.nameKey(PROJECT_NAME));
   }
 
   @Test
   public void testEventWithEmptyStatistics() {
-    RepoSizeCache repoSizeCache = createMock(RepoSizeCache.class);
-    repoSizeCache.evict(new Project.NameKey(PROJECT_NAME));
-    expectLastCall();
-    replay(repoSizeCache);
+    RepoSizeCache repoSizeCache = mock(RepoSizeCache.class);
 
     GCListener listener = new GCListener(repoSizeCache);
 
     listener.onGarbageCollected(createEvent(PROJECT_NAME, new Properties()));
 
-    verify(repoSizeCache);
+    verify(repoSizeCache).evict(Project.nameKey(PROJECT_NAME));
   }
 
   private static GarbageCollectorListener.Event createEvent(
diff --git a/src/test/java/com/googlesource/gerrit/plugins/quota/PublisherExceptionTest.java b/src/test/java/com/googlesource/gerrit/plugins/quota/PublisherExceptionTest.java
index fa7351e..4c64bdb 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/quota/PublisherExceptionTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/quota/PublisherExceptionTest.java
@@ -14,8 +14,12 @@
 
 package com.googlesource.gerrit.plugins.quota;
 
-import static org.easymock.EasyMock.*;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.doThrow;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
 
 import com.google.gerrit.extensions.events.UsageDataPublishedListener;
 import com.google.gerrit.extensions.events.UsageDataPublishedListener.Event;
@@ -24,9 +28,9 @@
 import org.apache.log4j.Level;
 import org.apache.log4j.Logger;
 import org.apache.log4j.spi.LoggingEvent;
-import org.easymock.Capture;
 import org.junit.Before;
 import org.junit.Test;
+import org.mockito.ArgumentCaptor;
 
 public class PublisherExceptionTest {
 
@@ -35,18 +39,18 @@
   private UsageDataEventCreator creator;
   private Publisher classUnderTest;
   private Appender appender;
-  private Capture<LoggingEvent> captor;
+  private ArgumentCaptor<LoggingEvent> captor;
   private DynamicSet<UsageDataPublishedListener> listeners;
   private DynamicSet<UsageDataEventCreator> creators;
 
   @Before
   public void setupClassUnderTest() {
-    listener = createMock(UsageDataPublishedListener.class);
+    listener = mock(UsageDataPublishedListener.class);
     listeners = DynamicSet.emptySet();
     listeners.add("quota", listener);
 
-    creator = createMock(UsageDataEventCreator.class);
-    expect(creator.getName()).andStubReturn(CREATOR_NAME);
+    creator = mock(UsageDataEventCreator.class);
+    when(creator.getName()).thenReturn(CREATOR_NAME);
     creators = DynamicSet.emptySet();
     creators.add("quota", creator);
 
@@ -55,25 +59,20 @@
 
   @Before
   public void setupLogging() {
-    captor = new Capture<>();
-    appender = createMock(Appender.class);
-    appender.doAppend(capture(captor));
-    expectLastCall().anyTimes();
+    captor = ArgumentCaptor.forClass(LoggingEvent.class);
+    appender = mock(Appender.class);
+    // appender.doAppend(captor.capture());
     Logger.getRootLogger().addAppender(appender);
   }
 
   @Test
   public void testExceptionInCreatorIsLogged() {
     RuntimeException ex = new RuntimeException();
-    expect(creator.create()).andStubThrow(ex);
-
-    replay(listener, creator, appender);
+    when(creator.create()).thenThrow(ex);
 
     classUnderTest.run();
 
-    verify(listener, creator, appender);
-
-    assertTrue(captor.hasCaptured());
+    verify(appender).doAppend(captor.capture());
     LoggingEvent event = captor.getValue();
     assertEquals(Level.WARN, event.getLevel());
     assertTrue(((String) event.getMessage()).contains(CREATOR_NAME));
@@ -82,39 +81,30 @@
   @Test
   public void testDataFromGoodCreatorIsPropagated() {
     RuntimeException ex = new RuntimeException();
-    expect(creator.create()).andStubThrow(ex);
+    when(creator.create()).thenThrow(ex);
 
-    UsageDataEventCreator good = createMock(UsageDataEventCreator.class);
+    UsageDataEventCreator good = mock(UsageDataEventCreator.class);
     Event data = new UsageDataEvent(null);
-    expect(good.create()).andStubReturn(data);
+    when(good.create()).thenReturn(data);
     creators.add("quota", good);
 
-    listener.onUsageDataPublished(data);
-    expectLastCall();
-
-    replay(listener, creator, good, appender);
-
     classUnderTest.run();
 
-    verify(listener, creator, appender);
+    verify(listener).onUsageDataPublished(data);
   }
 
   @Test
   public void testExceptionInListenerIsLogged() {
     RuntimeException ex = new RuntimeException();
     Event data = new UsageDataEvent(null);
-    expect(creator.create()).andStubReturn(data);
-
-    listener.onUsageDataPublished(data);
-    expectLastCall().andStubThrow(ex);
-
-    replay(listener, creator, appender);
+    when(creator.create()).thenReturn(data);
+    doThrow(ex).when(listener).onUsageDataPublished(data);
 
     classUnderTest.run();
 
-    verify(listener, creator, appender);
+    verify(listener).onUsageDataPublished(data);
 
-    assertTrue(captor.hasCaptured());
+    verify(appender).doAppend(captor.capture());
     LoggingEvent event = captor.getValue();
     assertEquals(Level.WARN, event.getLevel());
   }
@@ -123,19 +113,15 @@
   public void testIsPropagatedToGoodListener() {
     RuntimeException ex = new RuntimeException();
     Event data = new UsageDataEvent(null);
-    expect(creator.create()).andStubReturn(data);
+    when(creator.create()).thenReturn(data);
+    doThrow(ex).when(listener).onUsageDataPublished(data);
 
-    listener.onUsageDataPublished(data);
-    expectLastCall().andStubThrow(ex);
-
-    UsageDataPublishedListener good = createMock(UsageDataPublishedListener.class);
-    good.onUsageDataPublished(data);
+    UsageDataPublishedListener good = mock(UsageDataPublishedListener.class);
     listeners.add("quota", good);
 
-    replay(listener, good, creator, appender);
-
     classUnderTest.run();
 
-    verify(listener, good, creator, appender);
+    verify(listener).onUsageDataPublished(data);
+    verify(good).onUsageDataPublished(data);
   }
 }
diff --git a/src/test/java/com/googlesource/gerrit/plugins/quota/PublisherTest.java b/src/test/java/com/googlesource/gerrit/plugins/quota/PublisherTest.java
index d78b7e1..36fc5ff 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/quota/PublisherTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/quota/PublisherTest.java
@@ -14,11 +14,9 @@
 
 package com.googlesource.gerrit.plugins.quota;
 
-import static org.easymock.EasyMock.createMock;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.expectLastCall;
-import static org.easymock.EasyMock.replay;
-import static org.easymock.EasyMock.verify;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
 
 import com.google.gerrit.extensions.events.UsageDataPublishedListener;
 import com.google.gerrit.extensions.events.UsageDataPublishedListener.Event;
@@ -30,50 +28,40 @@
   @Test
   public void testAllEventsPropagatedToListener() throws Exception {
     Event e1 = new UsageDataEvent(null);
-    UsageDataEventCreator c1 = createMock(UsageDataEventCreator.class);
-    expect(c1.create()).andStubReturn(e1);
+    UsageDataEventCreator c1 = mock(UsageDataEventCreator.class);
+    when(c1.create()).thenReturn(e1);
 
     Event e2 = new UsageDataEvent(null);
-    UsageDataEventCreator c2 = createMock(UsageDataEventCreator.class);
-    expect(c2.create()).andStubReturn(e2);
+    UsageDataEventCreator c2 = mock(UsageDataEventCreator.class);
+    when(c2.create()).thenReturn(e2);
 
     DynamicSet<UsageDataEventCreator> creators = DynamicSet.emptySet();
     creators.add("quota", c1);
     creators.add("quota", c2);
 
-    UsageDataPublishedListener listener = createMock(UsageDataPublishedListener.class);
-    listener.onUsageDataPublished(e1);
-    expectLastCall();
-    listener.onUsageDataPublished(e2);
-    expectLastCall();
+    UsageDataPublishedListener listener = mock(UsageDataPublishedListener.class);
 
-    replay(c1, c2, listener);
     DynamicSet<UsageDataPublishedListener> listeners = DynamicSet.emptySet();
     listeners.add("quota", listener);
 
     Publisher classUnderTest = new Publisher(listeners, creators);
     classUnderTest.run();
 
-    verify(c1, c2, listener);
+    verify(listener).onUsageDataPublished(e1);
+    verify(listener).onUsageDataPublished(e2);
   }
 
   @Test
   public void testEventPropagatedToAllListeners() throws Exception {
     Event event = new UsageDataEvent(null);
-    UsageDataEventCreator creator = createMock(UsageDataEventCreator.class);
-    expect(creator.create()).andStubReturn(event);
+    UsageDataEventCreator creator = mock(UsageDataEventCreator.class);
+    when(creator.create()).thenReturn(event);
     DynamicSet<UsageDataEventCreator> creators = DynamicSet.emptySet();
     creators.add("quota", creator);
 
-    UsageDataPublishedListener l1 = createMock(UsageDataPublishedListener.class);
-    l1.onUsageDataPublished(event);
-    expectLastCall();
+    UsageDataPublishedListener l1 = mock(UsageDataPublishedListener.class);
 
-    UsageDataPublishedListener l2 = createMock(UsageDataPublishedListener.class);
-    l2.onUsageDataPublished(event);
-    expectLastCall();
-
-    replay(creator, l1, l2);
+    UsageDataPublishedListener l2 = mock(UsageDataPublishedListener.class);
 
     DynamicSet<UsageDataPublishedListener> listeners = DynamicSet.emptySet();
     listeners.add("quota", l1);
@@ -82,20 +70,18 @@
     Publisher classUnderTest = new Publisher(listeners, creators);
     classUnderTest.run();
 
-    verify(creator, l1, l2);
+    verify(l1).onUsageDataPublished(event);
+    verify(l2).onUsageDataPublished(event);
   }
 
   @Test
   public void testNoEventsCreatedIfNoListenersRegistered() throws Exception {
-    UsageDataEventCreator creator = createMock(UsageDataEventCreator.class);
-    replay(creator);
+    UsageDataEventCreator creator = mock(UsageDataEventCreator.class);
     DynamicSet<UsageDataEventCreator> creators = DynamicSet.emptySet();
     creators.add("quota", creator);
 
     DynamicSet<UsageDataPublishedListener> listeners = DynamicSet.emptySet();
     Publisher classUnderTest = new Publisher(listeners, creators);
     classUnderTest.run();
-
-    verify(creator);
   }
 }
diff --git a/src/test/java/com/googlesource/gerrit/plugins/quota/QuotaPluginIT.java b/src/test/java/com/googlesource/gerrit/plugins/quota/QuotaPluginIT.java
new file mode 100644
index 0000000..3e7bc31
--- /dev/null
+++ b/src/test/java/com/googlesource/gerrit/plugins/quota/QuotaPluginIT.java
@@ -0,0 +1,26 @@
+// Copyright (C) 2019 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.googlesource.gerrit.plugins.quota;
+
+import com.google.gerrit.acceptance.LightweightPluginDaemonTest;
+import com.google.gerrit.acceptance.TestPlugin;
+import org.junit.Test;
+
+@TestPlugin(name = "quota", sysModule = "com.googlesource.gerrit.plugins.quota.Module")
+public class QuotaPluginIT extends LightweightPluginDaemonTest {
+
+  @Test
+  public void pluginCanLoad() throws Exception {}
+}
diff --git a/src/test/java/com/googlesource/gerrit/plugins/quota/RateLimitUploadListenerTest.java b/src/test/java/com/googlesource/gerrit/plugins/quota/RateLimitUploadListenerTest.java
index a6f2a47..fc6a196 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/quota/RateLimitUploadListenerTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/quota/RateLimitUploadListenerTest.java
@@ -21,7 +21,7 @@
 
 import com.google.common.cache.LoadingCache;
 import com.google.common.util.concurrent.RateLimiter;
-import com.google.gerrit.reviewdb.client.Account;
+import com.google.gerrit.entities.Account;
 import com.google.gerrit.server.CurrentUser;
 import com.google.gerrit.server.validators.ValidationException;
 import com.google.inject.Provider;
@@ -70,7 +70,6 @@
     when(currentUser.isIdentifiedUser()).thenReturn(true);
     when(currentUser.asIdentifiedUser().getAccountId()).thenReturn(accountId);
     when(limitsPerAccount.get(accountId)).thenThrow(new ExecutionException(null));
-    when(accountId.toString()).thenReturn("123");
   }
 
   private void setUpAnonymous() throws ExecutionException {
diff --git a/src/test/java/com/googlesource/gerrit/plugins/quota/RepoSizeEventCreatorTest.java b/src/test/java/com/googlesource/gerrit/plugins/quota/RepoSizeEventCreatorTest.java
index 2b40ca4..47de700 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/quota/RepoSizeEventCreatorTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/quota/RepoSizeEventCreatorTest.java
@@ -14,17 +14,15 @@
 
 package com.googlesource.gerrit.plugins.quota;
 
-import static org.easymock.EasyMock.createMock;
-import static org.easymock.EasyMock.createNiceMock;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.replay;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
 
 import com.google.common.collect.ImmutableSortedSet;
+import com.google.gerrit.entities.Project;
 import com.google.gerrit.extensions.events.UsageDataPublishedListener.Data;
 import com.google.gerrit.extensions.events.UsageDataPublishedListener.Event;
-import com.google.gerrit.reviewdb.client.Project;
 import com.google.gerrit.server.project.ProjectCache;
 import java.io.File;
 import java.io.IOException;
@@ -32,9 +30,9 @@
 import org.junit.Test;
 
 public class RepoSizeEventCreatorTest {
-  private Project.NameKey p1 = new Project.NameKey("p1");
-  private Project.NameKey p2 = new Project.NameKey("p2");
-  private Project.NameKey p3 = new Project.NameKey("p3");
+  private Project.NameKey p1 = Project.nameKey("p1");
+  private Project.NameKey p2 = Project.nameKey("p2");
+  private Project.NameKey p3 = Project.nameKey("p3");
   private ProjectCache projectCache;
   private RepoSizeEventCreator classUnderTest;
   private File tmp;
@@ -45,18 +43,15 @@
     tmp = File.createTempFile("quota-test", "dir");
     tmp.delete();
     tmp.mkdir();
-    projectCache = createMock(ProjectCache.class);
+    projectCache = mock(ProjectCache.class);
     ImmutableSortedSet<Project.NameKey> projects = ImmutableSortedSet.of(p1, p2, p3);
-    expect(projectCache.all()).andStubReturn(projects);
-    repoSizeCache = createNiceMock(RepoSizeCache.class);
-    replay(projectCache);
+    when(projectCache.all()).thenReturn(projects);
+    repoSizeCache = mock(RepoSizeCache.class);
     classUnderTest = new RepoSizeEventCreator(projectCache, repoSizeCache);
   }
 
   @Test
   public void testEmpty() {
-    replay(repoSizeCache);
-
     Event event = classUnderTest.create();
 
     assertEquals("repoSize", event.getMetaData().getName());
@@ -65,8 +60,7 @@
 
   @Test
   public void testOneDataPoint() {
-    expect(repoSizeCache.get(p1)).andStubReturn(100L);
-    replay(repoSizeCache);
+    when(repoSizeCache.get(p1)).thenReturn(100L);
 
     Event event = classUnderTest.create();
 
diff --git a/src/test/java/com/googlesource/gerrit/plugins/quota/RestApiRateLimiterTest.java b/src/test/java/com/googlesource/gerrit/plugins/quota/RestApiRateLimiterTest.java
index 64fe0c7..4795212 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/quota/RestApiRateLimiterTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/quota/RestApiRateLimiterTest.java
@@ -26,7 +26,7 @@
 
 import com.google.common.cache.LoadingCache;
 import com.google.common.util.concurrent.RateLimiter;
-import com.google.gerrit.reviewdb.client.Account;
+import com.google.gerrit.entities.Account;
 import com.google.gerrit.server.CurrentUser;
 import com.google.inject.Provider;
 import com.googlesource.gerrit.plugins.quota.Module.Holder;
@@ -86,7 +86,6 @@
     when(currentUser.isIdentifiedUser()).thenReturn(true);
     when(currentUser.asIdentifiedUser().getAccountId()).thenReturn(accountId);
     when(limitsPerAccount.get(accountId)).thenThrow(new ExecutionException(null));
-    when(accountId.toString()).thenReturn("123");
   }
 
   private void setUpAnonymous() throws ExecutionException {
diff --git a/src/test/java/com/googlesource/gerrit/plugins/quota/TestNamespaceMatching.java b/src/test/java/com/googlesource/gerrit/plugins/quota/TestNamespaceMatching.java
index 53253ee..77ec067 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/quota/TestNamespaceMatching.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/quota/TestNamespaceMatching.java
@@ -17,7 +17,7 @@
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
-import com.google.gerrit.reviewdb.client.Project;
+import com.google.gerrit.entities.Project;
 import org.junit.Test;
 
 public class TestNamespaceMatching {
@@ -25,22 +25,22 @@
   @Test
   public void exactNamespace() {
     String exact = "test/myProject";
-    assertTrue(new Namespace(exact).matches(new Project.NameKey("test/myProject")));
-    assertFalse(new Namespace(exact).matches(new Project.NameKey("test/myOtherProject")));
+    assertTrue(new Namespace(exact).matches(Project.nameKey("test/myProject")));
+    assertFalse(new Namespace(exact).matches(Project.nameKey("test/myOtherProject")));
   }
 
   @Test
   public void patternNamespace() {
     String pattern = "test/*";
-    assertTrue(new Namespace(pattern).matches(new Project.NameKey("test/myProject")));
-    assertFalse(new Namespace(pattern).matches(new Project.NameKey("other/myOtherProject")));
+    assertTrue(new Namespace(pattern).matches(Project.nameKey("test/myProject")));
+    assertFalse(new Namespace(pattern).matches(Project.nameKey("other/myOtherProject")));
   }
 
   @Test
   public void regExp() {
     String pattern = "^test/.*/my.*";
-    assertTrue(new Namespace(pattern).matches(new Project.NameKey("test/a/myProject")));
-    assertTrue(new Namespace(pattern).matches(new Project.NameKey("test/b/myOtherProject")));
-    assertFalse(new Namespace(pattern).matches(new Project.NameKey("other/otherProject")));
+    assertTrue(new Namespace(pattern).matches(Project.nameKey("test/a/myProject")));
+    assertTrue(new Namespace(pattern).matches(Project.nameKey("test/b/myOtherProject")));
+    assertFalse(new Namespace(pattern).matches(Project.nameKey("other/otherProject")));
   }
 }