Add test for replication_lag update on ref-replicated event
Complete the test coverage of Ibe4ff24583 by simulating a
ref-replicated event.
Change-Id: Id6de4d36dbde4fd969ef29290234fc4821e0f0f4
diff --git a/src/test/java/com/googlesource/gerrit/plugins/multisite/consumer/ReplicationStatusTest.java b/src/test/java/com/googlesource/gerrit/plugins/multisite/consumer/ReplicationStatusTest.java
index e366ef7..c8cad54 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/multisite/consumer/ReplicationStatusTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/multisite/consumer/ReplicationStatusTest.java
@@ -15,6 +15,7 @@
package com.googlesource.gerrit.plugins.multisite.consumer;
import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Mockito.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@@ -142,6 +143,23 @@
assertThat(replicationStatusCache.getIfPresent(projectName)).isEqualTo(lag);
}
+ @Test
+ public void shouldUpdateReplicationLagForProject() {
+ String projectName = "projectA";
+ long projectLocalVersion = 10L;
+ long projectRemoteVersion = 20L;
+
+ when(projectVersionRefUpdate.getProjectLocalVersion(eq(projectName)))
+ .thenReturn(Optional.of(projectLocalVersion));
+ when(projectVersionRefUpdate.getProjectRemoteVersion(eq(projectName)))
+ .thenReturn(Optional.of(projectRemoteVersion));
+
+ objectUnderTest.updateReplicationLag(Project.nameKey(projectName));
+
+ assertThat(replicationStatusCache.getIfPresent(projectName))
+ .isEqualTo(projectRemoteVersion - projectLocalVersion);
+ }
+
private void setupReplicationLag(String projectName, long lag) {
long currentVersion = System.currentTimeMillis();
long newVersion = currentVersion + lag;
diff --git a/src/test/java/com/googlesource/gerrit/plugins/multisite/consumer/StreamEventSubscriberTest.java b/src/test/java/com/googlesource/gerrit/plugins/multisite/consumer/StreamEventSubscriberTest.java
index a0e97a8..71fd828 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/multisite/consumer/StreamEventSubscriberTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/multisite/consumer/StreamEventSubscriberTest.java
@@ -14,15 +14,19 @@
package com.googlesource.gerrit.plugins.multisite.consumer;
+import static org.mockito.Mockito.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.reset;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import com.google.common.collect.ImmutableList;
+import com.google.gerrit.entities.Project;
import com.google.gerrit.entities.Project.NameKey;
import com.google.gerrit.server.events.Event;
+import com.google.gerrit.server.events.RefEvent;
import com.google.gerrit.server.events.RefUpdatedEvent;
import com.google.gerrit.server.permissions.PermissionBackendException;
import com.googlesource.gerrit.plugins.multisite.forwarder.CacheNotFoundException;
@@ -79,6 +83,31 @@
verify(droppedEventListeners, never()).onEventDropped(event);
}
+ @Test
+ public void shouldUpdateReplicationMetricsWithRemoteRefEvent() {
+ Event event =
+ new RefEvent("ref-replicated") {
+
+ @Override
+ public String getRefName() {
+ return "foo-ref";
+ }
+
+ @Override
+ public NameKey getProjectNameKey() {
+ return Project.nameKey(PROJECT_NAME);
+ }
+ };
+
+ event.instanceId = INSTANCE_ID;
+ when(projectsFilter.matches(eq(PROJECT_NAME))).thenReturn(true);
+
+ objectUnderTest.getConsumer().accept(event);
+
+ verify(subscriberMetrics, times(1)).updateReplicationStatusMetrics(event);
+ reset(projectsFilter, eventRouter, droppedEventListeners, subscriberMetrics);
+ }
+
@Override
protected AbstractSubcriber objectUnderTest() {
return new StreamEventSubscriber(