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(