Merge branch 'stable-3.3' into stable-3.4 * stable-3.3: Use new kafka broker name Change-Id: I4204dacfce7a32dd3634232409773b4ac6a9ee87
diff --git a/external_plugin_deps.bzl b/external_plugin_deps.bzl index 82cd5e8..fc1b8ad 100644 --- a/external_plugin_deps.bzl +++ b/external_plugin_deps.bzl
@@ -9,6 +9,6 @@ maven_jar( name = "events-broker", - artifact = "com.gerritforge:events-broker:3.3.1", - sha1 = "90775e671946b20e52be3a11277d1ed33973d66e", + artifact = "com.gerritforge:events-broker:3.4.0-rc0", + sha1 = "8c34c88103d4783eb4c4decde6d93541bc1cf064", )
diff --git a/setup_local_env/setup.sh b/setup_local_env/setup.sh index 4266ce2..bebc863 100755 --- a/setup_local_env/setup.sh +++ b/setup_local_env/setup.sh
@@ -16,7 +16,7 @@ SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" -GERRIT_BRANCH=stable-3.3 +GERRIT_BRANCH=stable-3.4 GERRIT_CI=https://gerrit-ci.gerritforge.com/view/Plugins-$GERRIT_BRANCH/job LAST_BUILD=lastSuccessfulBuild/artifact/bazel-bin/plugins EVENTS_BROKER_VER=`grep 'com.gerritforge:events-broker' $(dirname $0)/../external_plugin_deps.bzl | cut -d '"' -f 2 | cut -d ':' -f 3` @@ -408,10 +408,10 @@ fi if [ $DOWNLOAD_WEBSESSION_PLUGIN = "true" ];then echo "Downloading websession-broker plugin $GERRIT_BRANCH" - wget $GERRIT_CI/plugin-websession-broker-bazel-$GERRIT_BRANCH/$LAST_BUILD/websession-broker/websession-broker.jar \ + wget $GERRIT_CI/plugin-websession-broker-bazel-master-$GERRIT_BRANCH/$LAST_BUILD/websession-broker/websession-broker.jar \ -O $DEPLOYMENT_LOCATION/websession-broker.jar || { echo >&2 "Cannot download websession-broker plugin: Check internet connection. Abort\ ing"; exit 1; } - wget $GERRIT_CI/plugin-healthcheck-bazel-$GERRIT_BRANCH/$LAST_BUILD/healthcheck/healthcheck.jar \ + wget $GERRIT_CI/plugin-healthcheck-bazel-master-$GERRIT_BRANCH/$LAST_BUILD/healthcheck/healthcheck.jar \ -O $DEPLOYMENT_LOCATION/healthcheck.jar || { echo >&2 "Cannot download healthcheck plugin: Check internet connection. Abort\ ing"; exit 1; } else @@ -442,7 +442,7 @@ if [ "$BROKER_TYPE" = "kinesis" ]; then echo "Downloading events-aws-kinesis plugin $GERRIT_BRANCH" - wget $GERRIT_CI/plugin-events-aws-kinesis-bazel-$GERRIT_BRANCH/$LAST_BUILD/events-aws-kinesis/events-aws-kinesis.jar \ + wget $GERRIT_CI/plugin-events-aws-kinesis-bazel-master-$GERRIT_BRANCH/$LAST_BUILD/events-aws-kinesis/events-aws-kinesis.jar \ -O $DEPLOYMENT_LOCATION/events-aws-kinesis.jar || { echo >&2 "Cannot download events-aws-kinesis plugin: Check internet connection. Abort\ ing"; exit 1; } fi @@ -450,7 +450,7 @@ if [ "$BROKER_TYPE" = "gcloud-pubsub" ]; then echo "Downloading events-gcloud-pubsub plugin $GERRIT_BRANCH" - wget $GERRIT_CI/plugin-events-gcloud-pubsub-bazel-$GERRIT_BRANCH/$LAST_BUILD/events-gcloud-pubsub/events-gcloud-pubsub.jar \ + wget $GERRIT_CI/plugin-events-gcloud-pubsub-bazel-master-$GERRIT_BRANCH/$LAST_BUILD/events-gcloud-pubsub/events-gcloud-pubsub.jar \ -O $DEPLOYMENT_LOCATION/events-gcloud-pubsub.jar || { echo >&2 "Cannot download events-gcloud-pubsub plugin: Check internet connection. Abort\ ing"; exit 1; } fi
diff --git a/src/main/java/com/googlesource/gerrit/plugins/multisite/Log4jMessageLogger.java b/src/main/java/com/googlesource/gerrit/plugins/multisite/Log4jMessageLogger.java index 7c88655..1ec8886 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/multisite/Log4jMessageLogger.java +++ b/src/main/java/com/googlesource/gerrit/plugins/multisite/Log4jMessageLogger.java
@@ -14,9 +14,9 @@ package com.googlesource.gerrit.plugins.multisite; -import com.gerritforge.gerrit.eventbroker.EventGsonProvider; import com.gerritforge.gerrit.eventbroker.EventMessage; import com.google.gerrit.extensions.systemstatus.ServerInformation; +import com.google.gerrit.server.events.EventGsonProvider; import com.google.gerrit.server.util.PluginLogFile; import com.google.gerrit.server.util.SystemLog; import com.google.gson.Gson;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/multisite/Log4jProjectVersionLogger.java b/src/main/java/com/googlesource/gerrit/plugins/multisite/Log4jProjectVersionLogger.java index c2c4b46..23c720a 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/multisite/Log4jProjectVersionLogger.java +++ b/src/main/java/com/googlesource/gerrit/plugins/multisite/Log4jProjectVersionLogger.java
@@ -45,4 +45,9 @@ verLog.info("{ \"project\":\"{}\", \"version\":{} }", projectName, currentVersion); } } + + @Override + public void logDeleted(Project.NameKey projectName) { + verLog.info("{ \"project\":\"{}\", \"status\":\"DELETED\" }", projectName); + } }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/multisite/ProjectVersionLogger.java b/src/main/java/com/googlesource/gerrit/plugins/multisite/ProjectVersionLogger.java index 6ababb6..2ee2c13 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/multisite/ProjectVersionLogger.java +++ b/src/main/java/com/googlesource/gerrit/plugins/multisite/ProjectVersionLogger.java
@@ -19,4 +19,6 @@ public interface ProjectVersionLogger { public void log(Project.NameKey projectName, long currentVersion, long replicationLag); + + public void logDeleted(Project.NameKey projectName); }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/multisite/cache/CachePatternMatcher.java b/src/main/java/com/googlesource/gerrit/plugins/multisite/cache/CachePatternMatcher.java index b8521a3..2dcb09a 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/multisite/cache/CachePatternMatcher.java +++ b/src/main/java/com/googlesource/gerrit/plugins/multisite/cache/CachePatternMatcher.java
@@ -25,7 +25,7 @@ @Singleton class CachePatternMatcher { - private static final List<String> DEFAULT_PATTERNS = + private static final ImmutableList<String> DEFAULT_PATTERNS = ImmutableList.of("^groups.*", "ldap_groups", "ldap_usernames", "projects", "sshkeys"); private final Pattern pattern;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/multisite/consumer/SubscriberMetrics.java b/src/main/java/com/googlesource/gerrit/plugins/multisite/consumer/SubscriberMetrics.java index 4459859..1f264b0 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/multisite/consumer/SubscriberMetrics.java +++ b/src/main/java/com/googlesource/gerrit/plugins/multisite/consumer/SubscriberMetrics.java
@@ -15,21 +15,24 @@ package com.googlesource.gerrit.plugins.multisite.consumer; import com.gerritforge.gerrit.eventbroker.EventMessage; +import com.google.common.annotations.VisibleForTesting; import com.google.common.flogger.FluentLogger; import com.google.gerrit.entities.Project; import com.google.gerrit.metrics.Counter1; import com.google.gerrit.metrics.Description; import com.google.gerrit.metrics.MetricMaker; import com.google.gerrit.server.events.Event; +import com.google.gerrit.server.events.ProjectEvent; import com.google.gerrit.server.events.RefUpdatedEvent; import com.google.inject.Inject; import com.google.inject.Singleton; import com.googlesource.gerrit.plugins.multisite.MultiSiteMetrics; import com.googlesource.gerrit.plugins.multisite.ProjectVersionLogger; import com.googlesource.gerrit.plugins.multisite.validation.ProjectVersionRefUpdate; -import com.googlesource.gerrit.plugins.replication.RefReplicatedEvent; -import com.googlesource.gerrit.plugins.replication.RefReplicationDoneEvent; -import com.googlesource.gerrit.plugins.replication.ReplicationScheduledEvent; +import com.googlesource.gerrit.plugins.replication.events.ProjectDeletionReplicationSucceededEvent; +import com.googlesource.gerrit.plugins.replication.events.RefReplicatedEvent; +import com.googlesource.gerrit.plugins.replication.events.RefReplicationDoneEvent; +import com.googlesource.gerrit.plugins.replication.events.ReplicationScheduledEvent; import java.util.Collection; import java.util.Collections; import java.util.HashMap; @@ -100,23 +103,32 @@ public void updateReplicationStatusMetrics(EventMessage eventMessage) { Event event = eventMessage.getEvent(); - if (event instanceof RefReplicationDoneEvent) { - RefReplicationDoneEvent replicationDone = (RefReplicationDoneEvent) event; - updateReplicationLagMetrics( - replicationDone.getProjectNameKey(), replicationDone.getRefName()); - } else if (event instanceof RefReplicatedEvent) { - RefReplicatedEvent replicated = (RefReplicatedEvent) event; - updateReplicationLagMetrics(replicated.getProjectNameKey(), replicated.getRefName()); - } else if (event instanceof ReplicationScheduledEvent) { - ReplicationScheduledEvent updated = (ReplicationScheduledEvent) event; - updateReplicationLagMetrics(updated.getProjectNameKey(), updated.getRefName()); - } else if (event instanceof RefUpdatedEvent) { - RefUpdatedEvent updated = (RefUpdatedEvent) event; - updateReplicationLagMetrics(updated.getProjectNameKey(), updated.getRefName()); + + if (event instanceof RefReplicationDoneEvent + || event instanceof RefReplicatedEvent + || event instanceof ReplicationScheduledEvent + || event instanceof RefUpdatedEvent) { + ProjectEvent projectEvent = (ProjectEvent) event; + updateReplicationLagMetrics(projectEvent.getProjectNameKey()); + } else if (event instanceof ProjectDeletionReplicationSucceededEvent) { + ProjectDeletionReplicationSucceededEvent projectDeletion = + (ProjectDeletionReplicationSucceededEvent) event; + removeProjectFromReplicationLagMetrics(projectDeletion.getProjectNameKey()); } } - private void updateReplicationLagMetrics(Project.NameKey projectName, String ref) { + private void removeProjectFromReplicationLagMetrics(Project.NameKey projectName) { + Optional<Long> localVersion = projectVersionRefUpdate.getProjectLocalVersion(projectName.get()); + + if (!localVersion.isPresent() && localVersionPerProject.containsKey(projectName.get())) { + replicationStatusPerProject.remove(projectName.get()); + localVersionPerProject.remove(projectName.get()); + verLogger.logDeleted(projectName); + logger.atFine().log("Removed project '%s' from replication lag metrics", projectName); + } + } + + private void updateReplicationLagMetrics(Project.NameKey projectName) { Optional<Long> remoteVersion = projectVersionRefUpdate.getProjectRemoteVersion(projectName.get()); Optional<Long> localVersion = projectVersionRefUpdate.getProjectLocalVersion(projectName.get()); @@ -138,4 +150,14 @@ projectName, localVersion.isPresent() ? "remote" : "local"); } } + + @VisibleForTesting + Long getReplicationStatus(String projectName) { + return replicationStatusPerProject.get(projectName); + } + + @VisibleForTesting + Long getLocalVersion(String projectName) { + return localVersionPerProject.get(projectName); + } }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/multisite/forwarder/router/IndexEventRouter.java b/src/main/java/com/googlesource/gerrit/plugins/multisite/forwarder/router/IndexEventRouter.java index 202fb42..2cf83cd 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/multisite/forwarder/router/IndexEventRouter.java +++ b/src/main/java/com/googlesource/gerrit/plugins/multisite/forwarder/router/IndexEventRouter.java
@@ -32,7 +32,7 @@ import com.googlesource.gerrit.plugins.multisite.forwarder.events.GroupIndexEvent; import com.googlesource.gerrit.plugins.multisite.forwarder.events.IndexEvent; import com.googlesource.gerrit.plugins.multisite.forwarder.events.ProjectIndexEvent; -import com.googlesource.gerrit.plugins.replication.RefReplicationDoneEvent; +import com.googlesource.gerrit.plugins.replication.events.RefReplicationDoneEvent; import java.io.IOException; import java.util.Optional; import java.util.Set;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/multisite/forwarder/router/StreamEventRouter.java b/src/main/java/com/googlesource/gerrit/plugins/multisite/forwarder/router/StreamEventRouter.java index 4ef3426..95a3e66 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/multisite/forwarder/router/StreamEventRouter.java +++ b/src/main/java/com/googlesource/gerrit/plugins/multisite/forwarder/router/StreamEventRouter.java
@@ -18,7 +18,7 @@ import com.google.gerrit.server.permissions.PermissionBackendException; import com.google.inject.Inject; import com.googlesource.gerrit.plugins.multisite.forwarder.ForwardedEventHandler; -import com.googlesource.gerrit.plugins.replication.RefReplicationDoneEvent; +import com.googlesource.gerrit.plugins.replication.events.RefReplicationDoneEvent; import java.io.IOException; public class StreamEventRouter implements ForwardedEventRouter<Event> {
diff --git a/src/main/java/com/googlesource/gerrit/plugins/multisite/validation/ProjectVersionRefUpdate.java b/src/main/java/com/googlesource/gerrit/plugins/multisite/validation/ProjectVersionRefUpdate.java index 28eddbb..ea7dada 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/multisite/validation/ProjectVersionRefUpdate.java +++ b/src/main/java/com/googlesource/gerrit/plugins/multisite/validation/ProjectVersionRefUpdate.java
@@ -36,7 +36,6 @@ import com.googlesource.gerrit.plugins.multisite.forwarder.Context; import java.io.IOException; import java.util.Optional; -import java.util.Set; import org.eclipse.jgit.errors.RepositoryNotFoundException; import org.eclipse.jgit.lib.ObjectId; import org.eclipse.jgit.lib.ObjectIdRef; @@ -48,7 +47,7 @@ @Singleton public class ProjectVersionRefUpdate implements EventListener { private static final FluentLogger logger = FluentLogger.forEnclosingClass(); - private static final Set<RefUpdate.Result> SUCCESSFUL_RESULTS = + private static final ImmutableSet<RefUpdate.Result> SUCCESSFUL_RESULTS = ImmutableSet.of(RefUpdate.Result.NEW, RefUpdate.Result.FORCED, RefUpdate.Result.NO_CHANGE); public static final String MULTI_SITE_VERSIONING_REF = "refs/multi-site/version";
diff --git a/src/test/java/com/googlesource/gerrit/plugins/multisite/consumer/SubscriberMetricsTest.java b/src/test/java/com/googlesource/gerrit/plugins/multisite/consumer/SubscriberMetricsTest.java index 8aa043d..c27dea2 100644 --- a/src/test/java/com/googlesource/gerrit/plugins/multisite/consumer/SubscriberMetricsTest.java +++ b/src/test/java/com/googlesource/gerrit/plugins/multisite/consumer/SubscriberMetricsTest.java
@@ -14,21 +14,24 @@ package com.googlesource.gerrit.plugins.multisite.consumer; +import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.verifyZeroInteractions; import static org.mockito.Mockito.when; import com.gerritforge.gerrit.eventbroker.EventMessage; -import com.gerritforge.gerrit.globalrefdb.validation.SharedRefDatabaseWrapper; import com.google.common.base.Suppliers; import com.google.gerrit.entities.Project; import com.google.gerrit.metrics.MetricMaker; import com.google.gerrit.server.data.RefUpdateAttribute; import com.google.gerrit.server.events.RefUpdatedEvent; -import com.google.gerrit.server.extensions.events.GitReferenceUpdated; import com.googlesource.gerrit.plugins.multisite.ProjectVersionLogger; import com.googlesource.gerrit.plugins.multisite.validation.ProjectVersionRefUpdate; +import com.googlesource.gerrit.plugins.replication.events.ProjectDeletionReplicationSucceededEvent; +import java.net.URISyntaxException; import java.util.Optional; import java.util.UUID; +import org.eclipse.jgit.transport.URIish; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -41,8 +44,6 @@ private static final Project.NameKey A_TEST_PROJECT_NAME_KEY = Project.nameKey(A_TEST_PROJECT_NAME); - @Mock private SharedRefDatabaseWrapper sharedRefDb; - @Mock private GitReferenceUpdated gitReferenceUpdated; @Mock private MetricMaker metricMaker; @Mock private ProjectVersionLogger verLogger; @Mock private ProjectVersionRefUpdate projectVersionRefUpdate; @@ -86,6 +87,93 @@ verify(verLogger).log(A_TEST_PROJECT_NAME_KEY, globalRefDbVersion.get(), replicationLag); } + @Test + public void + shouldLogUponProjectDeletionSuccessWhenLocalVersionDoesNotExistAndSubscriberMetricsExist() + throws Exception { + long nowSecs = System.currentTimeMillis() / 1000; + long replicationLagSecs = 60; + Optional<Long> globalRefDbVersion = Optional.of(nowSecs); + when(projectVersionRefUpdate.getProjectRemoteVersion(A_TEST_PROJECT_NAME)) + .thenReturn(globalRefDbVersion.map(ts -> ts + replicationLagSecs)); + when(projectVersionRefUpdate.getProjectLocalVersion(A_TEST_PROJECT_NAME)) + .thenReturn(globalRefDbVersion); + + EventMessage refUpdateEventMessage = new EventMessage(msgHeader, newRefUpdateEvent()); + metrics.updateReplicationStatusMetrics(refUpdateEventMessage); + + assertThat(metrics.getReplicationStatus(A_TEST_PROJECT_NAME)).isEqualTo(replicationLagSecs); + assertThat(metrics.getLocalVersion(A_TEST_PROJECT_NAME)).isEqualTo(nowSecs); + + when(projectVersionRefUpdate.getProjectLocalVersion(A_TEST_PROJECT_NAME)) + .thenReturn(Optional.empty()); + + EventMessage projectDeleteEventMessage = new EventMessage(msgHeader, projectDeletionSuccess()); + metrics.updateReplicationStatusMetrics(projectDeleteEventMessage); + + verify(verLogger).logDeleted(A_TEST_PROJECT_NAME_KEY); + } + + @Test + public void shouldNotLogUponProjectDeletionSuccessWhenSubscriberMetricsDoNotExist() + throws Exception { + EventMessage eventMessage = new EventMessage(msgHeader, projectDeletionSuccess()); + when(projectVersionRefUpdate.getProjectLocalVersion(A_TEST_PROJECT_NAME)) + .thenReturn(Optional.empty()); + + assertThat(metrics.getReplicationStatus(A_TEST_PROJECT_NAME)).isNull(); + assertThat(metrics.getLocalVersion(A_TEST_PROJECT_NAME)).isNull(); + + metrics.updateReplicationStatusMetrics(eventMessage); + + verifyZeroInteractions(verLogger); + } + + @Test + public void shouldNotLogUponProjectDeletionSuccessWhenLocalVersionStillExists() throws Exception { + EventMessage eventMessage = new EventMessage(msgHeader, projectDeletionSuccess()); + Optional<Long> anyRefVersionValue = Optional.of(System.currentTimeMillis() / 1000); + when(projectVersionRefUpdate.getProjectLocalVersion(A_TEST_PROJECT_NAME)) + .thenReturn(anyRefVersionValue); + + metrics.updateReplicationStatusMetrics(eventMessage); + + verifyZeroInteractions(verLogger); + } + + @Test + public void shouldRemoveProjectMetricsUponProjectDeletionSuccess() throws Exception { + long nowSecs = System.currentTimeMillis() / 1000; + long replicationLagSecs = 60; + Optional<Long> globalRefDbVersion = Optional.of(nowSecs); + when(projectVersionRefUpdate.getProjectRemoteVersion(A_TEST_PROJECT_NAME)) + .thenReturn(globalRefDbVersion.map(ts -> ts + replicationLagSecs)); + when(projectVersionRefUpdate.getProjectLocalVersion(A_TEST_PROJECT_NAME)) + .thenReturn(globalRefDbVersion); + + EventMessage eventMessage = new EventMessage(msgHeader, newRefUpdateEvent()); + + metrics.updateReplicationStatusMetrics(eventMessage); + + assertThat(metrics.getReplicationStatus(A_TEST_PROJECT_NAME)).isEqualTo(replicationLagSecs); + assertThat(metrics.getLocalVersion(A_TEST_PROJECT_NAME)).isEqualTo(nowSecs); + + when(projectVersionRefUpdate.getProjectLocalVersion(A_TEST_PROJECT_NAME)) + .thenReturn(Optional.empty()); + EventMessage projectDeleteEvent = new EventMessage(msgHeader, projectDeletionSuccess()); + + metrics.updateReplicationStatusMetrics(projectDeleteEvent); + + assertThat(metrics.getReplicationStatus(A_TEST_PROJECT_NAME)).isNull(); + assertThat(metrics.getLocalVersion(A_TEST_PROJECT_NAME)).isNull(); + } + + private ProjectDeletionReplicationSucceededEvent projectDeletionSuccess() + throws URISyntaxException { + return new ProjectDeletionReplicationSucceededEvent( + A_TEST_PROJECT_NAME, new URIish("git://target")); + } + private RefUpdatedEvent newRefUpdateEvent() { RefUpdateAttribute refUpdate = new RefUpdateAttribute(); refUpdate.project = A_TEST_PROJECT_NAME;
diff --git a/src/test/java/com/googlesource/gerrit/plugins/multisite/event/IndexEventRouterTest.java b/src/test/java/com/googlesource/gerrit/plugins/multisite/event/IndexEventRouterTest.java index 1dc07bd..f22cb14 100644 --- a/src/test/java/com/googlesource/gerrit/plugins/multisite/event/IndexEventRouterTest.java +++ b/src/test/java/com/googlesource/gerrit/plugins/multisite/event/IndexEventRouterTest.java
@@ -33,7 +33,7 @@ import com.googlesource.gerrit.plugins.multisite.forwarder.events.ProjectIndexEvent; import com.googlesource.gerrit.plugins.multisite.forwarder.router.IndexEventRouter; import com.googlesource.gerrit.plugins.multisite.forwarder.router.StreamEventRouter; -import com.googlesource.gerrit.plugins.replication.RefReplicationDoneEvent; +import com.googlesource.gerrit.plugins.replication.events.RefReplicationDoneEvent; import java.util.Optional; import org.eclipse.jgit.lib.ObjectId; import org.junit.Before;
diff --git a/src/test/java/com/googlesource/gerrit/plugins/multisite/forwarder/BrokerForwarderTest.java b/src/test/java/com/googlesource/gerrit/plugins/multisite/forwarder/BrokerForwarderTest.java index 5e2fc05..74d8917 100644 --- a/src/test/java/com/googlesource/gerrit/plugins/multisite/forwarder/BrokerForwarderTest.java +++ b/src/test/java/com/googlesource/gerrit/plugins/multisite/forwarder/BrokerForwarderTest.java
@@ -67,7 +67,7 @@ } } - public class TestEvent extends MultiSiteEvent { + public static class TestEvent extends MultiSiteEvent { protected TestEvent() { super("test");
diff --git a/src/test/java/com/googlesource/gerrit/plugins/multisite/forwarder/ForwardedCacheEvictionHandlerTest.java b/src/test/java/com/googlesource/gerrit/plugins/multisite/forwarder/ForwardedCacheEvictionHandlerTest.java index 90ae8da..dbd358d 100644 --- a/src/test/java/com/googlesource/gerrit/plugins/multisite/forwarder/ForwardedCacheEvictionHandlerTest.java +++ b/src/test/java/com/googlesource/gerrit/plugins/multisite/forwarder/ForwardedCacheEvictionHandlerTest.java
@@ -15,6 +15,7 @@ package com.googlesource.gerrit.plugins.multisite.forwarder; import static com.google.common.truth.Truth.assertThat; +import static com.google.gerrit.testing.GerritJUnit.assertThrows; import static org.mockito.Mockito.doReturn; import com.google.common.cache.Cache; @@ -48,10 +49,12 @@ public void shouldThrowAnExceptionWhenCacheNotFound() throws Exception { CacheEntry entry = new CacheEntry("somePlugin", "unexistingCache", null); - exception.expect(CacheNotFoundException.class); - exception.expectMessage( - String.format("cache %s.%s not found", entry.getPluginName(), entry.getCacheName())); - handler.evict(entry); + CacheNotFoundException thrown = + assertThrows(CacheNotFoundException.class, () -> handler.evict(entry)); + assertThat(thrown) + .hasMessageThat() + .isEqualTo( + String.format("cache %s.%s not found", entry.getPluginName(), entry.getCacheName())); } @Test
diff --git a/src/test/java/com/googlesource/gerrit/plugins/multisite/forwarder/ForwardedIndexAccountHandlerTest.java b/src/test/java/com/googlesource/gerrit/plugins/multisite/forwarder/ForwardedIndexAccountHandlerTest.java index 32c6319..02efb77 100644 --- a/src/test/java/com/googlesource/gerrit/plugins/multisite/forwarder/ForwardedIndexAccountHandlerTest.java +++ b/src/test/java/com/googlesource/gerrit/plugins/multisite/forwarder/ForwardedIndexAccountHandlerTest.java
@@ -61,9 +61,11 @@ @Test public void deleteIsNotSupported() throws Exception { - exception.expect(UnsupportedOperationException.class); - exception.expectMessage("Delete from account index not supported"); - handler.index(id, Operation.DELETE, Optional.empty()); + UnsupportedOperationException thrown = + assertThrows( + UnsupportedOperationException.class, + () -> handler.index(id, Operation.DELETE, Optional.empty())); + assertThat(thrown).hasMessageThat().isEqualTo("Delete from account index not supported"); } @Test
diff --git a/src/test/java/com/googlesource/gerrit/plugins/multisite/forwarder/ForwardedIndexChangeHandlerTest.java b/src/test/java/com/googlesource/gerrit/plugins/multisite/forwarder/ForwardedIndexChangeHandlerTest.java index 96470b6..e64759c 100644 --- a/src/test/java/com/googlesource/gerrit/plugins/multisite/forwarder/ForwardedIndexChangeHandlerTest.java +++ b/src/test/java/com/googlesource/gerrit/plugins/multisite/forwarder/ForwardedIndexChangeHandlerTest.java
@@ -125,8 +125,9 @@ @Test public void indexerThrowsStorageExceptionTryingToIndexChange() throws Exception { setupChangeAccessRelatedMocks(CHANGE_EXISTS, THROW_STORAGE_EXCEPTION, CHANGE_UP_TO_DATE); - exception.expect(StorageException.class); - handler.index(TEST_CHANGE_ID, Operation.INDEX, Optional.empty()); + assertThrows( + StorageException.class, + () -> handler.index(TEST_CHANGE_ID, Operation.INDEX, Optional.empty())); } @Test
diff --git a/src/test/java/com/googlesource/gerrit/plugins/multisite/forwarder/ForwardedIndexGroupHandlerTest.java b/src/test/java/com/googlesource/gerrit/plugins/multisite/forwarder/ForwardedIndexGroupHandlerTest.java index 982ac52..65d8d20 100644 --- a/src/test/java/com/googlesource/gerrit/plugins/multisite/forwarder/ForwardedIndexGroupHandlerTest.java +++ b/src/test/java/com/googlesource/gerrit/plugins/multisite/forwarder/ForwardedIndexGroupHandlerTest.java
@@ -74,9 +74,11 @@ @Test public void deleteIsNotSupported() throws Exception { - exception.expect(UnsupportedOperationException.class); - exception.expectMessage("Delete from group index not supported"); - handler.index(uuid, Operation.DELETE, Optional.empty()); + UnsupportedOperationException thrown = + assertThrows( + UnsupportedOperationException.class, + () -> handler.index(uuid, Operation.DELETE, Optional.empty())); + assertThat(thrown).hasMessageThat().isEqualTo("Delete from group index not supported"); } @Test
diff --git a/src/test/java/com/googlesource/gerrit/plugins/multisite/forwarder/ForwardedIndexProjectHandlerTest.java b/src/test/java/com/googlesource/gerrit/plugins/multisite/forwarder/ForwardedIndexProjectHandlerTest.java index 3ce5e14..72b9427 100644 --- a/src/test/java/com/googlesource/gerrit/plugins/multisite/forwarder/ForwardedIndexProjectHandlerTest.java +++ b/src/test/java/com/googlesource/gerrit/plugins/multisite/forwarder/ForwardedIndexProjectHandlerTest.java
@@ -73,9 +73,11 @@ @Test public void deleteIsNotSupported() throws Exception { - exception.expect(UnsupportedOperationException.class); - exception.expectMessage("Delete from project index not supported"); - handler.index(nameKey, Operation.DELETE, Optional.empty()); + UnsupportedOperationException thrown = + assertThrows( + UnsupportedOperationException.class, + () -> handler.index(nameKey, Operation.DELETE, Optional.empty())); + assertThat(thrown).hasMessageThat().isEqualTo("Delete from project index not supported"); } @Test