Stop broadcasting accounts cache eviction The solution is based on multi-site plugin fix: I9cd1c95693c which is the sibling of high-availability plugin. To adapt CacheEvictionHandlerTest access modifier for Configuration was set to public with @VisibleForTesting annotation. Bug: Issue 13811 Change-Id: Iaf3f9c0b9440d234a83f9ed7d976ca7368c31aaa
diff --git a/src/main/java/com/ericsson/gerrit/plugins/highavailability/Configuration.java b/src/main/java/com/ericsson/gerrit/plugins/highavailability/Configuration.java index 3bd58a3..2ec7345 100644 --- a/src/main/java/com/ericsson/gerrit/plugins/highavailability/Configuration.java +++ b/src/main/java/com/ericsson/gerrit/plugins/highavailability/Configuration.java
@@ -17,6 +17,7 @@ import static java.util.concurrent.TimeUnit.HOURS; import static java.util.concurrent.TimeUnit.MILLISECONDS; +import com.google.common.annotations.VisibleForTesting; import com.google.common.base.CharMatcher; import com.google.common.base.Strings; import com.google.common.collect.ImmutableList; @@ -76,8 +77,9 @@ STATIC } + @VisibleForTesting @Inject - Configuration( + public Configuration( PluginConfigFactory pluginConfigFactory, @PluginName String pluginName, SitePaths site) { Config cfg = pluginConfigFactory.getGlobalPluginConfig(pluginName); main = new Main(site, cfg);
diff --git a/src/main/java/com/ericsson/gerrit/plugins/highavailability/cache/CachePatternMatcher.java b/src/main/java/com/ericsson/gerrit/plugins/highavailability/cache/CachePatternMatcher.java index 0f43eaf..baf512f 100644 --- a/src/main/java/com/ericsson/gerrit/plugins/highavailability/cache/CachePatternMatcher.java +++ b/src/main/java/com/ericsson/gerrit/plugins/highavailability/cache/CachePatternMatcher.java
@@ -26,7 +26,7 @@ @Singleton class CachePatternMatcher { private static final List<String> DEFAULT_PATTERNS = - ImmutableList.of("accounts", "^groups.*", "ldap_usernames", "projects", "sshkeys"); + ImmutableList.of("^groups.*", "ldap_usernames", "projects", "sshkeys"); private final Pattern pattern;
diff --git a/src/test/java/com/ericsson/gerrit/plugins/highavailability/cache/CacheEvictionHandlerTest.java b/src/test/java/com/ericsson/gerrit/plugins/highavailability/cache/CacheEvictionHandlerTest.java new file mode 100644 index 0000000..7077319 --- /dev/null +++ b/src/test/java/com/ericsson/gerrit/plugins/highavailability/cache/CacheEvictionHandlerTest.java
@@ -0,0 +1,63 @@ +// 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.ericsson.gerrit.plugins.highavailability.cache; + +import static org.mockito.Mockito.verifyZeroInteractions; +import static org.mockito.Mockito.when; + +import com.ericsson.gerrit.plugins.highavailability.Configuration; +import com.ericsson.gerrit.plugins.highavailability.forwarder.Forwarder; +import com.google.common.cache.RemovalCause; +import com.google.common.cache.RemovalNotification; +import com.google.gerrit.server.config.PluginConfigFactory; +import com.google.gerrit.server.config.SitePaths; +import java.io.IOException; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.concurrent.Executor; +import org.eclipse.jgit.lib.Config; +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 CacheEvictionHandlerTest { + @Mock private Executor executorMock; + @Mock private Forwarder forwarder; + @Mock private PluginConfigFactory pluginConfigFactoryMock; + + private static final String PLUGIN_NAME = "high-availability"; + private static final Path SITE_PATH = Paths.get("/site_path"); + private CachePatternMatcher defaultCacheMatcher; + + @Before + public void setUp() throws IOException { + when(pluginConfigFactoryMock.getGlobalPluginConfig(PLUGIN_NAME)).thenReturn(new Config()); + defaultCacheMatcher = + new CachePatternMatcher( + new Configuration(pluginConfigFactoryMock, PLUGIN_NAME, new SitePaths(SITE_PATH))); + } + + @Test + public void shouldNotPublishAccountsCacheEvictions() { + CacheEvictionHandler<String, String> handler = + new CacheEvictionHandler<>(forwarder, executorMock, PLUGIN_NAME, defaultCacheMatcher); + handler.onRemoval( + "test", "accounts", RemovalNotification.create("test", "accounts", RemovalCause.EXPLICIT)); + verifyZeroInteractions(executorMock); + } +}
diff --git a/src/test/java/com/ericsson/gerrit/plugins/highavailability/cache/CachePatternMatcherTest.java b/src/test/java/com/ericsson/gerrit/plugins/highavailability/cache/CachePatternMatcherTest.java index 9b6e66b..caf50b9 100644 --- a/src/test/java/com/ericsson/gerrit/plugins/highavailability/cache/CachePatternMatcherTest.java +++ b/src/test/java/com/ericsson/gerrit/plugins/highavailability/cache/CachePatternMatcherTest.java
@@ -38,7 +38,6 @@ CachePatternMatcher matcher = new CachePatternMatcher(configurationMock); for (String cache : ImmutableList.of( - "accounts", "groups", "groups_byinclude", "groups_byname", @@ -55,6 +54,7 @@ } for (String cache : ImmutableList.of( + "accounts", "adv_bases", "change_kind", "change_notes",