Move global project filtering logic to the receiving side
To allow CI/CD pipeline integration via events-broker events for both
local and global projects needs to be published. To preserve the
global/local projects functionality move events filtering to the
receiver side.
Bug: Issue 14835
Change-Id: Id46fb7be6dd09cab68071db8bdceb2a45b4c5a7a
diff --git a/src/main/java/com/googlesource/gerrit/plugins/multisite/cache/ProjectListUpdateHandler.java b/src/main/java/com/googlesource/gerrit/plugins/multisite/cache/ProjectListUpdateHandler.java
index 44f8417..6a2c7a5 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/multisite/cache/ProjectListUpdateHandler.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/multisite/cache/ProjectListUpdateHandler.java
@@ -14,7 +14,6 @@
package com.googlesource.gerrit.plugins.multisite.cache;
-import com.gerritforge.gerrit.globalrefdb.validation.ProjectsFilter;
import com.google.gerrit.extensions.events.NewProjectCreatedListener;
import com.google.gerrit.extensions.events.ProjectDeletedListener;
import com.google.gerrit.extensions.events.ProjectEvent;
@@ -33,18 +32,15 @@
private final DynamicSet<ProjectListUpdateForwarder> forwarders;
private final Executor executor;
- private final ProjectsFilter projectsFilter;
private final String instanceId;
@Inject
public ProjectListUpdateHandler(
DynamicSet<ProjectListUpdateForwarder> forwarders,
@CacheExecutor Executor executor,
- ProjectsFilter filter,
@GerritInstanceId String instanceId) {
this.forwarders = forwarders;
this.executor = executor;
- this.projectsFilter = filter;
this.instanceId = instanceId;
}
@@ -61,7 +57,7 @@
}
private void process(ProjectEvent event, boolean delete) {
- if (!Context.isForwardedEvent() && projectsFilter.matches(event.getProjectName())) {
+ if (!Context.isForwardedEvent()) {
executor.execute(
new ProjectListUpdateTask(
new ProjectListUpdateEvent(event.getProjectName(), delete, instanceId)));
diff --git a/src/main/java/com/googlesource/gerrit/plugins/multisite/consumer/AbstractSubcriber.java b/src/main/java/com/googlesource/gerrit/plugins/multisite/consumer/AbstractSubcriber.java
index 7a20c7f..a3bd4e9 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/multisite/consumer/AbstractSubcriber.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/multisite/consumer/AbstractSubcriber.java
@@ -58,6 +58,8 @@
protected abstract EventTopic getTopic();
+ protected abstract Boolean shouldConsumeEvent(Event event);
+
public Consumer<Event> getConsumer() {
return this::processRecord;
}
@@ -65,12 +67,13 @@
private void processRecord(Event event) {
String sourceInstanceId = event.instanceId;
- if (Strings.isNullOrEmpty(sourceInstanceId) || instanceId.equals(sourceInstanceId)) {
+ if ((Strings.isNullOrEmpty(sourceInstanceId) || instanceId.equals(sourceInstanceId))
+ && !shouldConsumeEvent(event)) {
if (Strings.isNullOrEmpty(sourceInstanceId)) {
logger.atWarning().log(
String.format(
"Dropping event %s because sourceInstanceId cannot be null", event.toString()));
- } else {
+ } else if (instanceId.equals(sourceInstanceId)) {
logger.atFiner().log(
String.format(
"Dropping event %s produced by our instanceId %s", event.toString(), instanceId));
diff --git a/src/main/java/com/googlesource/gerrit/plugins/multisite/consumer/BatchIndexEventSubscriber.java b/src/main/java/com/googlesource/gerrit/plugins/multisite/consumer/BatchIndexEventSubscriber.java
index 80f61f6..cdbf220 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/multisite/consumer/BatchIndexEventSubscriber.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/multisite/consumer/BatchIndexEventSubscriber.java
@@ -14,17 +14,23 @@
package com.googlesource.gerrit.plugins.multisite.consumer;
+import com.gerritforge.gerrit.globalrefdb.validation.ProjectsFilter;
import com.google.gerrit.extensions.registration.DynamicSet;
import com.google.gerrit.server.config.GerritInstanceId;
+import com.google.gerrit.server.events.Event;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import com.googlesource.gerrit.plugins.multisite.Configuration;
import com.googlesource.gerrit.plugins.multisite.MessageLogger;
+import com.googlesource.gerrit.plugins.multisite.forwarder.events.ChangeIndexEvent;
import com.googlesource.gerrit.plugins.multisite.forwarder.events.EventTopic;
+import com.googlesource.gerrit.plugins.multisite.forwarder.events.ProjectIndexEvent;
import com.googlesource.gerrit.plugins.multisite.forwarder.router.IndexEventRouter;
@Singleton
public class BatchIndexEventSubscriber extends AbstractSubcriber {
+ private final ProjectsFilter projectsFilter;
+
@Inject
public BatchIndexEventSubscriber(
IndexEventRouter eventRouter,
@@ -32,12 +38,25 @@
@GerritInstanceId String instanceId,
MessageLogger msgLog,
SubscriberMetrics subscriberMetrics,
- Configuration cfg) {
+ Configuration cfg,
+ ProjectsFilter projectsFilter) {
super(eventRouter, droppedEventListeners, instanceId, msgLog, subscriberMetrics, cfg);
+ this.projectsFilter = projectsFilter;
}
@Override
protected EventTopic getTopic() {
return EventTopic.BATCH_INDEX_TOPIC;
}
+
+ @Override
+ protected Boolean shouldConsumeEvent(Event event) {
+ if (event instanceof ChangeIndexEvent) {
+ return projectsFilter.matches(((ChangeIndexEvent) event).projectName);
+ }
+ if (event instanceof ProjectIndexEvent) {
+ return projectsFilter.matches(((ProjectIndexEvent) event).projectName);
+ }
+ return true;
+ }
}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/multisite/consumer/CacheEvictionEventSubscriber.java b/src/main/java/com/googlesource/gerrit/plugins/multisite/consumer/CacheEvictionEventSubscriber.java
index 5f57156..d8342b0 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/multisite/consumer/CacheEvictionEventSubscriber.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/multisite/consumer/CacheEvictionEventSubscriber.java
@@ -16,6 +16,7 @@
import com.google.gerrit.extensions.registration.DynamicSet;
import com.google.gerrit.server.config.GerritInstanceId;
+import com.google.gerrit.server.events.Event;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import com.googlesource.gerrit.plugins.multisite.Configuration;
@@ -41,4 +42,9 @@
protected EventTopic getTopic() {
return EventTopic.CACHE_TOPIC;
}
+
+ @Override
+ protected Boolean shouldConsumeEvent(Event event) {
+ return true;
+ }
}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/multisite/consumer/IndexEventSubscriber.java b/src/main/java/com/googlesource/gerrit/plugins/multisite/consumer/IndexEventSubscriber.java
index 8809799..274c34f 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/multisite/consumer/IndexEventSubscriber.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/multisite/consumer/IndexEventSubscriber.java
@@ -14,17 +14,23 @@
package com.googlesource.gerrit.plugins.multisite.consumer;
+import com.gerritforge.gerrit.globalrefdb.validation.ProjectsFilter;
import com.google.gerrit.extensions.registration.DynamicSet;
import com.google.gerrit.server.config.GerritInstanceId;
+import com.google.gerrit.server.events.Event;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import com.googlesource.gerrit.plugins.multisite.Configuration;
import com.googlesource.gerrit.plugins.multisite.MessageLogger;
+import com.googlesource.gerrit.plugins.multisite.forwarder.events.ChangeIndexEvent;
import com.googlesource.gerrit.plugins.multisite.forwarder.events.EventTopic;
+import com.googlesource.gerrit.plugins.multisite.forwarder.events.ProjectIndexEvent;
import com.googlesource.gerrit.plugins.multisite.forwarder.router.IndexEventRouter;
@Singleton
public class IndexEventSubscriber extends AbstractSubcriber {
+ private final ProjectsFilter projectsFilter;
+
@Inject
public IndexEventSubscriber(
IndexEventRouter eventRouter,
@@ -32,12 +38,25 @@
@GerritInstanceId String instanceId,
MessageLogger msgLog,
SubscriberMetrics subscriberMetrics,
- Configuration cfg) {
+ Configuration cfg,
+ ProjectsFilter projectsFilter) {
super(eventRouter, droppedEventListeners, instanceId, msgLog, subscriberMetrics, cfg);
+ this.projectsFilter = projectsFilter;
}
@Override
protected EventTopic getTopic() {
return EventTopic.INDEX_TOPIC;
}
+
+ @Override
+ protected Boolean shouldConsumeEvent(Event event) {
+ if (event instanceof ChangeIndexEvent) {
+ return projectsFilter.matches(((ChangeIndexEvent) event).projectName);
+ }
+ if (event instanceof ProjectIndexEvent) {
+ return projectsFilter.matches(((ProjectIndexEvent) event).projectName);
+ }
+ return true;
+ }
}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/multisite/consumer/ProjectUpdateEventSubscriber.java b/src/main/java/com/googlesource/gerrit/plugins/multisite/consumer/ProjectUpdateEventSubscriber.java
index 239f3ac..069a516 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/multisite/consumer/ProjectUpdateEventSubscriber.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/multisite/consumer/ProjectUpdateEventSubscriber.java
@@ -14,17 +14,22 @@
package com.googlesource.gerrit.plugins.multisite.consumer;
+import com.gerritforge.gerrit.globalrefdb.validation.ProjectsFilter;
import com.google.gerrit.extensions.registration.DynamicSet;
import com.google.gerrit.server.config.GerritInstanceId;
+import com.google.gerrit.server.events.Event;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import com.googlesource.gerrit.plugins.multisite.Configuration;
import com.googlesource.gerrit.plugins.multisite.MessageLogger;
import com.googlesource.gerrit.plugins.multisite.forwarder.events.EventTopic;
+import com.googlesource.gerrit.plugins.multisite.forwarder.events.ProjectListUpdateEvent;
import com.googlesource.gerrit.plugins.multisite.forwarder.router.ProjectListUpdateRouter;
@Singleton
public class ProjectUpdateEventSubscriber extends AbstractSubcriber {
+ private final ProjectsFilter projectsFilter;
+
@Inject
public ProjectUpdateEventSubscriber(
ProjectListUpdateRouter eventRouter,
@@ -32,12 +37,19 @@
@GerritInstanceId String instanceId,
MessageLogger msgLog,
SubscriberMetrics subscriberMetrics,
- Configuration cfg) {
+ Configuration cfg,
+ ProjectsFilter projectsFilter) {
super(eventRouter, droppedEventListeners, instanceId, msgLog, subscriberMetrics, cfg);
+ this.projectsFilter = projectsFilter;
}
@Override
protected EventTopic getTopic() {
return EventTopic.PROJECT_LIST_TOPIC;
}
+
+ @Override
+ protected Boolean shouldConsumeEvent(Event event) {
+ return projectsFilter.matches(((ProjectListUpdateEvent) event).projectName);
+ }
}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/multisite/consumer/StreamEventSubscriber.java b/src/main/java/com/googlesource/gerrit/plugins/multisite/consumer/StreamEventSubscriber.java
index 57a3f51..f6e3064 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/multisite/consumer/StreamEventSubscriber.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/multisite/consumer/StreamEventSubscriber.java
@@ -14,8 +14,11 @@
package com.googlesource.gerrit.plugins.multisite.consumer;
+import com.gerritforge.gerrit.globalrefdb.validation.ProjectsFilter;
import com.google.gerrit.extensions.registration.DynamicSet;
import com.google.gerrit.server.config.GerritInstanceId;
+import com.google.gerrit.server.events.Event;
+import com.google.gerrit.server.events.RefUpdatedEvent;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import com.googlesource.gerrit.plugins.multisite.Configuration;
@@ -25,6 +28,8 @@
@Singleton
public class StreamEventSubscriber extends AbstractSubcriber {
+ private final ProjectsFilter projectsFilter;
+
@Inject
public StreamEventSubscriber(
StreamEventRouter eventRouter,
@@ -32,12 +37,19 @@
@GerritInstanceId String instanceId,
MessageLogger msgLog,
SubscriberMetrics subscriberMetrics,
- Configuration cfg) {
+ Configuration cfg,
+ ProjectsFilter projectsFilter) {
super(eventRouter, droppedEventListeners, instanceId, msgLog, subscriberMetrics, cfg);
+ this.projectsFilter = projectsFilter;
}
@Override
protected EventTopic getTopic() {
return EventTopic.STREAM_EVENT_TOPIC;
}
+
+ @Override
+ protected Boolean shouldConsumeEvent(Event event) {
+ return projectsFilter.matches(((RefUpdatedEvent) event).getProjectNameKey().get());
+ }
}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/multisite/event/EventHandler.java b/src/main/java/com/googlesource/gerrit/plugins/multisite/event/EventHandler.java
index 7cb853a..e001e15 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/multisite/event/EventHandler.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/multisite/event/EventHandler.java
@@ -14,7 +14,6 @@
package com.googlesource.gerrit.plugins.multisite.event;
-import com.gerritforge.gerrit.globalrefdb.validation.ProjectsFilter;
import com.google.gerrit.extensions.registration.DynamicSet;
import com.google.gerrit.server.config.GerritInstanceId;
import com.google.gerrit.server.events.Event;
@@ -27,18 +26,15 @@
class EventHandler implements EventListener {
private final Executor executor;
private final DynamicSet<StreamEventForwarder> forwarders;
- private final ProjectsFilter projectsFilter;
private final String nodeInstanceId;
@Inject
EventHandler(
DynamicSet<StreamEventForwarder> forwarders,
@EventExecutor Executor executor,
- ProjectsFilter projectsFilter,
@GerritInstanceId String nodeInstanceId) {
this.forwarders = forwarders;
this.executor = executor;
- this.projectsFilter = projectsFilter;
this.nodeInstanceId = nodeInstanceId;
}
@@ -46,9 +42,7 @@
public void onEvent(Event event) {
if (nodeInstanceId.equals(event.instanceId) && event instanceof ProjectEvent) {
- if (projectsFilter.matches(event)) {
- executor.execute(new EventTask(event));
- }
+ executor.execute(new EventTask(event));
}
}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/multisite/index/IndexEventHandler.java b/src/main/java/com/googlesource/gerrit/plugins/multisite/index/IndexEventHandler.java
index 02f1b1c..ee16b07 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/multisite/index/IndexEventHandler.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/multisite/index/IndexEventHandler.java
@@ -14,7 +14,6 @@
package com.googlesource.gerrit.plugins.multisite.index;
-import com.gerritforge.gerrit.globalrefdb.validation.ProjectsFilter;
import com.google.common.base.Objects;
import com.google.gerrit.extensions.events.AccountIndexedListener;
import com.google.gerrit.extensions.events.ChangeIndexedListener;
@@ -47,7 +46,6 @@
private final DynamicSet<IndexEventForwarder> forwarders;
private final Set<IndexTask> queuedTasks = Collections.newSetFromMap(new ConcurrentHashMap<>());
private final ChangeCheckerImpl.Factory changeChecker;
- private final ProjectsFilter projectsFilter;
private final GroupChecker groupChecker;
private final String instanceId;
@@ -56,13 +54,11 @@
@IndexExecutor Executor executor,
DynamicSet<IndexEventForwarder> forwarders,
ChangeCheckerImpl.Factory changeChecker,
- ProjectsFilter projectsFilter,
GroupChecker groupChecker,
@GerritInstanceId String instanceId) {
this.forwarders = forwarders;
this.executor = executor;
this.changeChecker = changeChecker;
- this.projectsFilter = projectsFilter;
this.groupChecker = groupChecker;
this.instanceId = instanceId;
}
@@ -101,7 +97,7 @@
@Override
public void onProjectIndexed(String projectName) {
- if (!Context.isForwardedEvent() && projectsFilter.matches(projectName)) {
+ if (!Context.isForwardedEvent()) {
IndexProjectTask task = new IndexProjectTask(new ProjectIndexEvent(projectName, instanceId));
if (queuedTasks.add(task)) {
executor.execute(task);
@@ -110,7 +106,7 @@
}
private void executeIndexChangeTask(String projectName, int id) {
- if (!Context.isForwardedEvent() && projectsFilter.matches(projectName)) {
+ if (!Context.isForwardedEvent()) {
ChangeChecker checker = changeChecker.create(projectName + "~" + id);
try {
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 a23367b..11ea428 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
@@ -18,7 +18,6 @@
import static org.eclipse.jgit.lib.Constants.OBJ_BLOB;
import com.gerritforge.gerrit.globalrefdb.GlobalRefDbSystemError;
-import com.gerritforge.gerrit.globalrefdb.validation.ProjectsFilter;
import com.gerritforge.gerrit.globalrefdb.validation.SharedRefDatabaseWrapper;
import com.google.common.collect.ImmutableSet;
import com.google.common.flogger.FluentLogger;
@@ -58,7 +57,6 @@
private final GitRepositoryManager gitRepositoryManager;
private final GitReferenceUpdated gitReferenceUpdated;
private final ProjectVersionLogger verLogger;
- private final ProjectsFilter projectsFilter;
private final String nodeInstanceId;
protected final SharedRefDatabaseWrapper sharedRefDb;
@@ -69,13 +67,11 @@
SharedRefDatabaseWrapper sharedRefDb,
GitReferenceUpdated gitReferenceUpdated,
ProjectVersionLogger verLogger,
- ProjectsFilter projectsFilter,
@GerritInstanceId String nodeInstanceId) {
this.gitRepositoryManager = gitRepositoryManager;
this.sharedRefDb = sharedRefDb;
this.gitReferenceUpdated = gitReferenceUpdated;
this.verLogger = verLogger;
- this.projectsFilter = projectsFilter;
this.nodeInstanceId = nodeInstanceId;
}
@@ -84,9 +80,7 @@
logger.atFine().log("Processing event type: " + event.type);
// Producer of the Event use RefUpdatedEvent to trigger the version update
if (nodeInstanceId.equals(event.instanceId) && event instanceof RefUpdatedEvent) {
- if (projectsFilter.matches(event)) {
- updateProducerProjectVersionUpdate((RefUpdatedEvent) event);
- }
+ updateProducerProjectVersionUpdate((RefUpdatedEvent) event);
}
}
diff --git a/src/test/java/com/googlesource/gerrit/plugins/multisite/cache/ProjectListUpdateHandlerTest.java b/src/test/java/com/googlesource/gerrit/plugins/multisite/cache/ProjectListUpdateHandlerTest.java
index c8216bd..69968b5 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/multisite/cache/ProjectListUpdateHandlerTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/multisite/cache/ProjectListUpdateHandlerTest.java
@@ -23,7 +23,6 @@
import static org.mockito.Mockito.verifyZeroInteractions;
import static org.mockito.Mockito.when;
-import com.gerritforge.gerrit.globalrefdb.validation.ProjectsFilter;
import com.google.common.util.concurrent.MoreExecutors;
import com.google.gerrit.extensions.events.NewProjectCreatedListener;
import com.google.gerrit.extensions.events.ProjectDeletedListener;
@@ -46,14 +45,12 @@
private ProjectListUpdateHandler handler;
@Mock private ProjectListUpdateForwarder forwarder;
- @Mock private ProjectsFilter projectsFilter;
@Before
public void setUp() {
- when(projectsFilter.matches(any(String.class))).thenReturn(true);
handler =
new ProjectListUpdateHandler(
- asDynamicSet(forwarder), MoreExecutors.directExecutor(), projectsFilter, INSTANCE_ID);
+ asDynamicSet(forwarder), MoreExecutors.directExecutor(), INSTANCE_ID);
}
private DynamicSet<ProjectListUpdateForwarder> asDynamicSet(
@@ -98,7 +95,6 @@
@Test
public void shouldNotForwardIfFilteredOutByProjectName() throws Exception {
- when(projectsFilter.matches(any(String.class))).thenReturn(false);
String projectName = "projectToAdd";
NewProjectCreatedListener.Event event = mock(NewProjectCreatedListener.Event.class);
when(event.getProjectName()).thenReturn(projectName);
diff --git a/src/test/java/com/googlesource/gerrit/plugins/multisite/consumer/AbstractSubscriberTestBase.java b/src/test/java/com/googlesource/gerrit/plugins/multisite/consumer/AbstractSubscriberTestBase.java
new file mode 100644
index 0000000..2aa81e6
--- /dev/null
+++ b/src/test/java/com/googlesource/gerrit/plugins/multisite/consumer/AbstractSubscriberTestBase.java
@@ -0,0 +1,104 @@
+package com.googlesource.gerrit.plugins.multisite.consumer;
+
+import static org.mockito.ArgumentMatchers.any;
+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.gerritforge.gerrit.globalrefdb.validation.ProjectsFilter;
+import com.google.gerrit.extensions.registration.DynamicSet;
+import com.google.gerrit.server.events.Event;
+import com.google.gerrit.server.permissions.PermissionBackendException;
+import com.googlesource.gerrit.plugins.multisite.Configuration;
+import com.googlesource.gerrit.plugins.multisite.Configuration.Broker;
+import com.googlesource.gerrit.plugins.multisite.MessageLogger;
+import com.googlesource.gerrit.plugins.multisite.forwarder.CacheNotFoundException;
+import com.googlesource.gerrit.plugins.multisite.forwarder.router.ForwardedEventRouter;
+import java.io.IOException;
+import java.util.List;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.junit.MockitoJUnitRunner;
+
+@RunWith(MockitoJUnitRunner.class)
+@Ignore
+public abstract class AbstractSubscriberTestBase {
+ protected static final String INSTANCE_ID = "node-instance-id";
+ protected static final String PROJECT_NAME = "project-name";
+
+ @Mock protected DroppedEventListener droppedEventListeners;
+ @Mock protected MessageLogger msgLog;
+ @Mock protected SubscriberMetrics subscriberMetrics;
+ @Mock protected Configuration cfg;
+ @Mock protected Broker brokerCfg;
+ @Mock protected ProjectsFilter projectsFilter;
+
+ @SuppressWarnings("rawtypes")
+ protected ForwardedEventRouter eventRouter;
+
+ protected AbstractSubcriber objectUnderTest;
+
+ @Before
+ public void setup() {
+ when(cfg.broker()).thenReturn(brokerCfg);
+ when(brokerCfg.getTopic(any(), any())).thenReturn("test-topic");
+ eventRouter = eventRouter();
+ objectUnderTest = objectUnderTest();
+ }
+
+ @Test
+ public void shouldConsumeEventsWhenNotFilteredByProjectName()
+ throws IOException, PermissionBackendException, CacheNotFoundException {
+ for (Event event : events()) {
+ when(projectsFilter.matches(any(String.class))).thenReturn(true);
+ objectUnderTest.getConsumer().accept(event);
+ verifyConsumed(event);
+ }
+ }
+
+ @Test
+ public void shouldSkipEventsWhenFilteredByProjectName()
+ throws IOException, PermissionBackendException, CacheNotFoundException {
+ for (Event event : events()) {
+ when(projectsFilter.matches(any(String.class))).thenReturn(false);
+ objectUnderTest.getConsumer().accept(event);
+ verifySkipped(event);
+ }
+ }
+
+ protected abstract AbstractSubcriber objectUnderTest();
+
+ protected abstract List<Event> events();
+
+ @SuppressWarnings("rawtypes")
+ protected abstract ForwardedEventRouter eventRouter();
+
+ @SuppressWarnings("unchecked")
+ protected void verifySkipped(Event event)
+ throws IOException, PermissionBackendException, CacheNotFoundException {
+ verify(projectsFilter, times(1)).matches(PROJECT_NAME);
+ verify(eventRouter, never()).route(event);
+ verify(droppedEventListeners, times(1)).onEventDropped(event);
+ reset(projectsFilter, eventRouter, droppedEventListeners);
+ }
+
+ @SuppressWarnings("unchecked")
+ protected void verifyConsumed(Event event)
+ throws IOException, PermissionBackendException, CacheNotFoundException {
+ verify(projectsFilter, times(1)).matches(PROJECT_NAME);
+ verify(eventRouter, times(1)).route(event);
+ verify(droppedEventListeners, never()).onEventDropped(event);
+ reset(projectsFilter, eventRouter, droppedEventListeners);
+ }
+
+ protected DynamicSet<DroppedEventListener> asDynamicSet(DroppedEventListener listener) {
+ DynamicSet<DroppedEventListener> result = new DynamicSet<>();
+ result.add("multi-site", listener);
+ return result;
+ }
+}
diff --git a/src/test/java/com/googlesource/gerrit/plugins/multisite/consumer/BatchIndexEventSubscriberTest.java b/src/test/java/com/googlesource/gerrit/plugins/multisite/consumer/BatchIndexEventSubscriberTest.java
new file mode 100644
index 0000000..0ab06d0
--- /dev/null
+++ b/src/test/java/com/googlesource/gerrit/plugins/multisite/consumer/BatchIndexEventSubscriberTest.java
@@ -0,0 +1,77 @@
+// Copyright (C) 2021 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.multisite.consumer;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+
+import com.google.common.collect.ImmutableList;
+import com.google.gerrit.server.events.Event;
+import com.google.gerrit.server.permissions.PermissionBackendException;
+import com.googlesource.gerrit.plugins.multisite.forwarder.CacheNotFoundException;
+import com.googlesource.gerrit.plugins.multisite.forwarder.events.AccountIndexEvent;
+import com.googlesource.gerrit.plugins.multisite.forwarder.events.ChangeIndexEvent;
+import com.googlesource.gerrit.plugins.multisite.forwarder.events.IndexEvent;
+import com.googlesource.gerrit.plugins.multisite.forwarder.events.ProjectIndexEvent;
+import com.googlesource.gerrit.plugins.multisite.forwarder.router.ForwardedEventRouter;
+import com.googlesource.gerrit.plugins.multisite.forwarder.router.IndexEventRouter;
+import java.io.IOException;
+import java.util.List;
+import org.junit.Test;
+
+public class BatchIndexEventSubscriberTest extends AbstractSubscriberTestBase {
+ private static final boolean DELETED = false;
+ private static final int CHANGE_ID = 1;
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public void shouldConsumeNonProjectAndNonChangeIndexingEventsTypes()
+ throws IOException, PermissionBackendException, CacheNotFoundException {
+ IndexEvent event = new AccountIndexEvent(1, INSTANCE_ID);
+
+ objectUnderTest.getConsumer().accept(event);
+
+ verify(projectsFilter, never()).matches(PROJECT_NAME);
+ verify(eventRouter, times(1)).route(event);
+ verify(droppedEventListeners, never()).onEventDropped(event);
+ }
+
+ @SuppressWarnings("rawtypes")
+ @Override
+ protected ForwardedEventRouter eventRouter() {
+ return mock(IndexEventRouter.class);
+ }
+
+ @Override
+ protected List<Event> events() {
+ return ImmutableList.of(
+ new ProjectIndexEvent(PROJECT_NAME, INSTANCE_ID),
+ new ChangeIndexEvent(PROJECT_NAME, CHANGE_ID, DELETED, INSTANCE_ID));
+ }
+
+ @Override
+ protected AbstractSubcriber objectUnderTest() {
+ return new BatchIndexEventSubscriber(
+ (IndexEventRouter) eventRouter,
+ asDynamicSet(droppedEventListeners),
+ INSTANCE_ID,
+ msgLog,
+ subscriberMetrics,
+ cfg,
+ projectsFilter);
+ }
+}
diff --git a/src/test/java/com/googlesource/gerrit/plugins/multisite/consumer/IndexEventSubscriberTest.java b/src/test/java/com/googlesource/gerrit/plugins/multisite/consumer/IndexEventSubscriberTest.java
new file mode 100644
index 0000000..610f8de
--- /dev/null
+++ b/src/test/java/com/googlesource/gerrit/plugins/multisite/consumer/IndexEventSubscriberTest.java
@@ -0,0 +1,77 @@
+// Copyright (C) 2021 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.multisite.consumer;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+
+import com.google.common.collect.ImmutableList;
+import com.google.gerrit.server.events.Event;
+import com.google.gerrit.server.permissions.PermissionBackendException;
+import com.googlesource.gerrit.plugins.multisite.forwarder.CacheNotFoundException;
+import com.googlesource.gerrit.plugins.multisite.forwarder.events.AccountIndexEvent;
+import com.googlesource.gerrit.plugins.multisite.forwarder.events.ChangeIndexEvent;
+import com.googlesource.gerrit.plugins.multisite.forwarder.events.IndexEvent;
+import com.googlesource.gerrit.plugins.multisite.forwarder.events.ProjectIndexEvent;
+import com.googlesource.gerrit.plugins.multisite.forwarder.router.ForwardedEventRouter;
+import com.googlesource.gerrit.plugins.multisite.forwarder.router.IndexEventRouter;
+import java.io.IOException;
+import java.util.List;
+import org.junit.Test;
+
+public class IndexEventSubscriberTest extends AbstractSubscriberTestBase {
+ private static final boolean DELETED = false;
+ private static final int CHANGE_ID = 1;
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public void shouldConsumeNonProjectAndNonChangeIndexingEventsTypes()
+ throws IOException, PermissionBackendException, CacheNotFoundException {
+ IndexEvent event = new AccountIndexEvent(1, INSTANCE_ID);
+
+ objectUnderTest.getConsumer().accept(event);
+
+ verify(projectsFilter, never()).matches(PROJECT_NAME);
+ verify(eventRouter, times(1)).route(event);
+ verify(droppedEventListeners, never()).onEventDropped(event);
+ }
+
+ @SuppressWarnings("rawtypes")
+ @Override
+ protected ForwardedEventRouter eventRouter() {
+ return mock(IndexEventRouter.class);
+ }
+
+ @Override
+ protected List<Event> events() {
+ return ImmutableList.of(
+ new ProjectIndexEvent(PROJECT_NAME, INSTANCE_ID),
+ new ChangeIndexEvent(PROJECT_NAME, CHANGE_ID, DELETED, INSTANCE_ID));
+ }
+
+ @Override
+ protected AbstractSubcriber objectUnderTest() {
+ return new IndexEventSubscriber(
+ (IndexEventRouter) eventRouter,
+ asDynamicSet(droppedEventListeners),
+ INSTANCE_ID,
+ msgLog,
+ subscriberMetrics,
+ cfg,
+ projectsFilter);
+ }
+}
diff --git a/src/test/java/com/googlesource/gerrit/plugins/multisite/consumer/ProjectUpdateEventSubscriberTest.java b/src/test/java/com/googlesource/gerrit/plugins/multisite/consumer/ProjectUpdateEventSubscriberTest.java
new file mode 100644
index 0000000..c6f74c8
--- /dev/null
+++ b/src/test/java/com/googlesource/gerrit/plugins/multisite/consumer/ProjectUpdateEventSubscriberTest.java
@@ -0,0 +1,50 @@
+// Copyright (C) 2021 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.multisite.consumer;
+
+import static org.mockito.Mockito.mock;
+
+import com.google.common.collect.ImmutableList;
+import com.google.gerrit.server.events.Event;
+import com.googlesource.gerrit.plugins.multisite.forwarder.events.ProjectListUpdateEvent;
+import com.googlesource.gerrit.plugins.multisite.forwarder.router.ForwardedEventRouter;
+import com.googlesource.gerrit.plugins.multisite.forwarder.router.ProjectListUpdateRouter;
+import java.util.List;
+
+public class ProjectUpdateEventSubscriberTest extends AbstractSubscriberTestBase {
+
+ @SuppressWarnings("rawtypes")
+ @Override
+ protected ForwardedEventRouter eventRouter() {
+ return mock(ProjectListUpdateRouter.class);
+ }
+
+ @Override
+ protected List<Event> events() {
+ return ImmutableList.of(new ProjectListUpdateEvent(PROJECT_NAME, false, INSTANCE_ID));
+ }
+
+ @Override
+ protected AbstractSubcriber objectUnderTest() {
+ return new ProjectUpdateEventSubscriber(
+ (ProjectListUpdateRouter) eventRouter,
+ asDynamicSet(droppedEventListeners),
+ INSTANCE_ID,
+ msgLog,
+ subscriberMetrics,
+ cfg,
+ projectsFilter);
+ }
+}
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
new file mode 100644
index 0000000..b6b6337
--- /dev/null
+++ b/src/test/java/com/googlesource/gerrit/plugins/multisite/consumer/StreamEventSubscriberTest.java
@@ -0,0 +1,57 @@
+// Copyright (C) 2021 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.multisite.consumer;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import com.google.common.collect.ImmutableList;
+import com.google.gerrit.entities.Project.NameKey;
+import com.google.gerrit.server.events.Event;
+import com.google.gerrit.server.events.RefUpdatedEvent;
+import com.googlesource.gerrit.plugins.multisite.forwarder.router.ForwardedEventRouter;
+import com.googlesource.gerrit.plugins.multisite.forwarder.router.StreamEventRouter;
+import java.util.List;
+import org.mockito.Mock;
+
+public class StreamEventSubscriberTest extends AbstractSubscriberTestBase {
+ private static final NameKey PROJECT_NAME_KEY = NameKey.parse(PROJECT_NAME);
+ private @Mock RefUpdatedEvent event;
+
+ @SuppressWarnings("rawtypes")
+ @Override
+ protected ForwardedEventRouter eventRouter() {
+ return mock(StreamEventRouter.class);
+ }
+
+ @Override
+ protected List<Event> events() {
+ when(event.getProjectNameKey()).thenReturn(PROJECT_NAME_KEY);
+ event.instanceId = INSTANCE_ID;
+ return ImmutableList.of(event);
+ }
+
+ @Override
+ protected AbstractSubcriber objectUnderTest() {
+ return new StreamEventSubscriber(
+ (StreamEventRouter) eventRouter,
+ asDynamicSet(droppedEventListeners),
+ INSTANCE_ID,
+ msgLog,
+ subscriberMetrics,
+ cfg,
+ projectsFilter);
+ }
+}
diff --git a/src/test/java/com/googlesource/gerrit/plugins/multisite/event/EventHandlerTest.java b/src/test/java/com/googlesource/gerrit/plugins/multisite/event/EventHandlerTest.java
index 2d73bf2..1d75f9d 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/multisite/event/EventHandlerTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/multisite/event/EventHandlerTest.java
@@ -15,14 +15,10 @@
package com.googlesource.gerrit.plugins.multisite.event;
import static com.google.common.truth.Truth.assertThat;
-import static org.mockito.Mockito.any;
import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyZeroInteractions;
-import static org.mockito.Mockito.when;
-import com.gerritforge.gerrit.globalrefdb.validation.ProjectsFilter;
import com.google.common.util.concurrent.MoreExecutors;
import com.google.gerrit.extensions.registration.DynamicSet;
import com.google.gerrit.server.events.Event;
@@ -43,17 +39,12 @@
private EventHandler eventHandler;
@Mock private StreamEventForwarder forwarder;
- @Mock private ProjectsFilter projectsFilter;
@Before
public void setUp() {
- when(projectsFilter.matches(any(ProjectEvent.class))).thenReturn(true);
eventHandler =
new EventHandler(
- asDynamicSet(forwarder),
- MoreExecutors.directExecutor(),
- projectsFilter,
- DEFAULT_INSTANCE_ID);
+ asDynamicSet(forwarder), MoreExecutors.directExecutor(), DEFAULT_INSTANCE_ID);
}
private DynamicSet<StreamEventForwarder> asDynamicSet(StreamEventForwarder forwarder) {
@@ -85,16 +76,6 @@
}
@Test
- public void shouldNotForwardIfFilteredOutByProjectName() throws Exception {
- when(projectsFilter.matches(any(ProjectEvent.class))).thenReturn(false);
-
- ProjectEvent event = mock(ProjectEvent.class);
- event.instanceId = DEFAULT_INSTANCE_ID;
- eventHandler.onEvent(event);
- verify(forwarder, never()).send(event);
- }
-
- @Test
public void tesEventTaskToString() throws Exception {
Event event = new RefUpdatedEvent();
EventTask task = eventHandler.new EventTask(event);
diff --git a/src/test/java/com/googlesource/gerrit/plugins/multisite/index/IndexEventHandlerTest.java b/src/test/java/com/googlesource/gerrit/plugins/multisite/index/IndexEventHandlerTest.java
deleted file mode 100644
index 3fd13c6..0000000
--- a/src/test/java/com/googlesource/gerrit/plugins/multisite/index/IndexEventHandlerTest.java
+++ /dev/null
@@ -1,82 +0,0 @@
-// Copyright (C) 2020 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.multisite.index;
-
-import static org.mockito.Mockito.any;
-import static org.mockito.Mockito.eq;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.verifyZeroInteractions;
-import static org.mockito.Mockito.when;
-
-import com.gerritforge.gerrit.globalrefdb.validation.ProjectsFilter;
-import com.google.common.util.concurrent.MoreExecutors;
-import com.google.gerrit.extensions.registration.DynamicSet;
-import com.googlesource.gerrit.plugins.multisite.forwarder.IndexEventForwarder;
-import com.googlesource.gerrit.plugins.multisite.forwarder.events.ProjectIndexEvent;
-import com.googlesource.gerrit.plugins.multisite.index.IndexEventHandler.IndexProjectTask;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.junit.MockitoJUnitRunner;
-
-@RunWith(MockitoJUnitRunner.class)
-public class IndexEventHandlerTest {
-
- private static final String INSTANCE_ID = "instance-id";
-
- private IndexEventHandler eventHandler;
-
- @Mock private ProjectsFilter projectsFilter;
- @Mock private IndexEventForwarder forwarder;
- @Mock private ChangeCheckerImpl.Factory changeChecker;
-
- @Before
- public void setUp() {
- eventHandler =
- new IndexEventHandler(
- MoreExecutors.directExecutor(),
- asDynamicSet(forwarder),
- changeChecker,
- projectsFilter,
- new TestGroupChecker(true),
- INSTANCE_ID);
- }
-
- private DynamicSet<IndexEventForwarder> asDynamicSet(IndexEventForwarder forwarder) {
- DynamicSet<IndexEventForwarder> result = new DynamicSet<>();
- result.add("multi-site", forwarder);
- return result;
- }
-
- @Test
- public void shouldNotForwardProjectIndexedIfFilteredOutByProjectName() throws Exception {
- when(projectsFilter.matches(any(String.class))).thenReturn(false);
-
- eventHandler.onProjectIndexed("test_project");
- verify(forwarder, never())
- .index(any(IndexProjectTask.class), eq(new ProjectIndexEvent("test_project", INSTANCE_ID)));
- }
-
- @Test
- public void shouldNotForwardIndexChangeIfFilteredOutByProjectName() throws Exception {
- int changeId = 1;
- when(projectsFilter.matches(any(String.class))).thenReturn(false);
-
- eventHandler.onChangeIndexed("test_project", changeId);
- verifyZeroInteractions(changeChecker);
- }
-}
diff --git a/src/test/java/com/googlesource/gerrit/plugins/multisite/validation/ProjectVersionRefUpdateTest.java b/src/test/java/com/googlesource/gerrit/plugins/multisite/validation/ProjectVersionRefUpdateTest.java
index d1697de..384db84 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/multisite/validation/ProjectVersionRefUpdateTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/multisite/validation/ProjectVersionRefUpdateTest.java
@@ -24,11 +24,9 @@
import static org.mockito.Mockito.verifyZeroInteractions;
import static org.mockito.Mockito.when;
-import com.gerritforge.gerrit.globalrefdb.validation.ProjectsFilter;
import com.gerritforge.gerrit.globalrefdb.validation.SharedRefDatabaseWrapper;
import com.google.gerrit.entities.Project;
import com.google.gerrit.entities.RefNames;
-import com.google.gerrit.server.events.Event;
import com.google.gerrit.server.events.RefUpdatedEvent;
import com.google.gerrit.server.extensions.events.GitReferenceUpdated;
import com.google.gerrit.server.project.ProjectConfig;
@@ -66,7 +64,6 @@
@Mock SharedRefDatabaseWrapper sharedRefDb;
@Mock GitReferenceUpdated gitReferenceUpdated;
@Mock ProjectVersionLogger verLogger;
- @Mock ProjectsFilter projectsFilter;
@Inject private ProjectConfig.Factory projectConfigFactory;
@Inject private InMemoryRepositoryManager repoManager;
@@ -76,7 +73,6 @@
@Before
public void setUp() throws Exception {
- when(projectsFilter.matches(any(Event.class))).thenReturn(true);
refUpdatedEvent.instanceId = DEFAULT_INSTANCE_ID;
InMemoryRepository inMemoryRepo = repoManager.createRepository(A_TEST_PROJECT_NAME_KEY);
project = projectConfigFactory.create(A_TEST_PROJECT_NAME_KEY);
@@ -105,12 +101,7 @@
when(refUpdatedEvent.getRefName()).thenReturn(A_TEST_REF_NAME);
new ProjectVersionRefUpdate(
- repoManager,
- sharedRefDb,
- gitReferenceUpdated,
- verLogger,
- projectsFilter,
- DEFAULT_INSTANCE_ID)
+ repoManager, sharedRefDb, gitReferenceUpdated, verLogger, DEFAULT_INSTANCE_ID)
.onEvent(refUpdatedEvent);
Ref ref = repo.getRepository().findRef(MULTI_SITE_VERSIONING_REF);
@@ -153,12 +144,7 @@
when(refUpdatedEvent.getRefName()).thenReturn(A_TEST_REF_NAME);
new ProjectVersionRefUpdate(
- repoManager,
- sharedRefDb,
- gitReferenceUpdated,
- verLogger,
- projectsFilter,
- DEFAULT_INSTANCE_ID)
+ repoManager, sharedRefDb, gitReferenceUpdated, verLogger, DEFAULT_INSTANCE_ID)
.onEvent(refUpdatedEvent);
Ref ref = repo.getRepository().findRef(MULTI_SITE_VERSIONING_REF);
@@ -197,12 +183,7 @@
when(refUpdatedEvent.getRefName()).thenReturn(A_TEST_REF_NAME);
new ProjectVersionRefUpdate(
- repoManager,
- sharedRefDb,
- gitReferenceUpdated,
- verLogger,
- projectsFilter,
- DEFAULT_INSTANCE_ID)
+ repoManager, sharedRefDb, gitReferenceUpdated, verLogger, DEFAULT_INSTANCE_ID)
.onEvent(refUpdatedEvent);
Ref ref = repo.getRepository().findRef(MULTI_SITE_VERSIONING_REF);
@@ -244,12 +225,7 @@
repo.branch(magicRefName).commit().create();
new ProjectVersionRefUpdate(
- repoManager,
- sharedRefDb,
- gitReferenceUpdated,
- verLogger,
- projectsFilter,
- DEFAULT_INSTANCE_ID)
+ repoManager, sharedRefDb, gitReferenceUpdated, verLogger, DEFAULT_INSTANCE_ID)
.onEvent(refUpdatedEvent);
Ref ref = repo.getRepository().findRef(MULTI_SITE_VERSIONING_REF);
@@ -264,12 +240,7 @@
refUpdatedEvent.instanceId = "instance-id-2";
new ProjectVersionRefUpdate(
- repoManager,
- sharedRefDb,
- gitReferenceUpdated,
- verLogger,
- projectsFilter,
- DEFAULT_INSTANCE_ID)
+ repoManager, sharedRefDb, gitReferenceUpdated, verLogger, DEFAULT_INSTANCE_ID)
.onEvent(refUpdatedEvent);
Ref ref = repo.getRepository().findRef(MULTI_SITE_VERSIONING_REF);
@@ -284,37 +255,7 @@
when(refUpdatedEvent.getRefName()).thenReturn(A_TEST_REF_NAME);
new ProjectVersionRefUpdate(
- repoManager,
- sharedRefDb,
- gitReferenceUpdated,
- verLogger,
- projectsFilter,
- DEFAULT_INSTANCE_ID)
- .onEvent(refUpdatedEvent);
-
- Ref ref = repo.getRepository().findRef(MULTI_SITE_VERSIONING_REF);
- assertThat(ref).isNull();
-
- verifyZeroInteractions(verLogger);
- }
-
- @Test
- public void shouldNotUpdateProjectVersionWhenProjectFilteredOut() throws Exception {
- when(projectsFilter.matches(any(Event.class))).thenReturn(false);
-
- Thread.sleep(1000L);
- repo.branch("master").commit().create();
-
- Thread.sleep(1000L);
- repo.branch("master").update(masterCommit);
-
- new ProjectVersionRefUpdate(
- repoManager,
- sharedRefDb,
- gitReferenceUpdated,
- verLogger,
- projectsFilter,
- DEFAULT_INSTANCE_ID)
+ repoManager, sharedRefDb, gitReferenceUpdated, verLogger, DEFAULT_INSTANCE_ID)
.onEvent(refUpdatedEvent);
Ref ref = repo.getRepository().findRef(MULTI_SITE_VERSIONING_REF);
@@ -330,12 +271,7 @@
Optional<Long> version =
new ProjectVersionRefUpdate(
- repoManager,
- sharedRefDb,
- gitReferenceUpdated,
- verLogger,
- projectsFilter,
- DEFAULT_INSTANCE_ID)
+ repoManager, sharedRefDb, gitReferenceUpdated, verLogger, DEFAULT_INSTANCE_ID)
.getProjectRemoteVersion(A_TEST_PROJECT_NAME);
assertThat(version.isPresent()).isTrue();