Merge branch 'stable-2.13' * stable-2.13: Replace EasyMock with Mockito Compile against 2.13.3 Change-Id: Ifa2a67c5d6bf1deec5b3b8c34cd87bd661c8afb4
diff --git a/BUCK b/BUCK index 09293bd..acdb2af 100644 --- a/BUCK +++ b/BUCK
@@ -15,6 +15,7 @@ TEST_DEPS = GERRIT_PLUGIN_API + PROVIDED_DEPS + DEPS + [ ':evict-cache__plugin', + ':mockito', ] gerrit_plugin( @@ -58,3 +59,30 @@ license = 'Apache2.0', attach_source = False, ) + +maven_jar( + name = 'mockito', + id = 'org.mockito:mockito-core:2.5.0', + sha1 = 'be28d46a52c7f2563580adeca350145e9ce916f8', + license = 'MIT', + deps = [ + ':byte-buddy', + ':objenesis', + ], +) + +maven_jar( + name = 'byte-buddy', + id = 'net.bytebuddy:byte-buddy:1.5.12', + sha1 = 'b1ba1d15f102b36ed43b826488114678d6d413da', + license = 'DO_NOT_DISTRIBUTE', + attach_source = False, +) + +maven_jar( + name = 'objenesis', + id = 'org.objenesis:objenesis:2.4', + sha1 = '2916b6c96b50c5b3ec4452ed99401db745aabb27', + license = 'DO_NOT_DISTRIBUTE', + attach_source = False, +)
diff --git a/lib/gerrit/BUCK b/lib/gerrit/BUCK index fe8119e..f6c68a4 100644 --- a/lib/gerrit/BUCK +++ b/lib/gerrit/BUCK
@@ -1,11 +1,12 @@ include_defs('//bucklets/maven_jar.bucklet') -VER = '2.13-SNAPSHOT' -REPO = MAVEN_LOCAL +VER = '2.13.3' +REPO = MAVEN_CENTRAL maven_jar( name = 'plugin-api', id = 'com.google.gerrit:gerrit-plugin-api:' + VER, + sha1 = '78df190269b0d5a4bc4f61ab3a66a49252b779eb', license = 'Apache2.0', attach_source = False, repository = REPO, @@ -14,6 +15,7 @@ maven_jar( name = 'acceptance-framework', id = 'com.google.gerrit:gerrit-acceptance-framework:' + VER, + sha1 = '76eceefa7e31c6945513c36c4d106066d1df3e63', license = 'Apache2.0', attach_source = False, repository = REPO,
diff --git a/src/test/java/com/ericsson/gerrit/plugins/evictcache/CacheResponseHandlerTest.java b/src/test/java/com/ericsson/gerrit/plugins/evictcache/CacheResponseHandlerTest.java index 1d2dd3e..8e94727 100644 --- a/src/test/java/com/ericsson/gerrit/plugins/evictcache/CacheResponseHandlerTest.java +++ b/src/test/java/com/ericsson/gerrit/plugins/evictcache/CacheResponseHandlerTest.java
@@ -15,20 +15,20 @@ package com.ericsson.gerrit.plugins.evictcache; import static com.google.common.truth.Truth.assertThat; -import static org.easymock.EasyMock.expect; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; import com.ericsson.gerrit.plugins.evictcache.CacheResponseHandler.CacheResult; import org.apache.http.HttpResponse; import org.apache.http.StatusLine; import org.apache.http.entity.StringEntity; -import org.easymock.EasyMockSupport; import org.junit.Before; import org.junit.Test; import java.io.UnsupportedEncodingException; -public class CacheResponseHandlerTest extends EasyMockSupport { +public class CacheResponseHandlerTest { private static final int ERROR = 400; private static final int OK = 204; private static final String EMPTY_ENTITY = ""; @@ -59,12 +59,11 @@ private HttpResponse setupMocks(int httpCode, String entity) throws UnsupportedEncodingException { - StatusLine status = createNiceMock(StatusLine.class); - expect(status.getStatusCode()).andReturn(httpCode).anyTimes(); - HttpResponse response = createNiceMock(HttpResponse.class); - expect(response.getStatusLine()).andReturn(status).anyTimes(); - expect(response.getEntity()).andReturn(new StringEntity(entity)).anyTimes(); - replayAll(); + StatusLine status = mock(StatusLine.class); + when(status.getStatusCode()).thenReturn(httpCode); + HttpResponse response = mock(HttpResponse.class); + when(response.getStatusLine()).thenReturn(status); + when(response.getEntity()).thenReturn(new StringEntity(entity)); return response; } }
diff --git a/src/test/java/com/ericsson/gerrit/plugins/evictcache/ConfigurationTest.java b/src/test/java/com/ericsson/gerrit/plugins/evictcache/ConfigurationTest.java index c884291..88ddc54 100644 --- a/src/test/java/com/ericsson/gerrit/plugins/evictcache/ConfigurationTest.java +++ b/src/test/java/com/ericsson/gerrit/plugins/evictcache/ConfigurationTest.java
@@ -15,41 +15,46 @@ package com.ericsson.gerrit.plugins.evictcache; import static com.google.common.truth.Truth.assertThat; -import static org.easymock.EasyMock.expect; - -import org.easymock.EasyMockSupport; -import org.junit.Before; -import org.junit.Test; +import static org.mockito.Mockito.when; import com.google.gerrit.server.config.PluginConfig; import com.google.gerrit.server.config.PluginConfigFactory; -public class ConfigurationTest extends EasyMockSupport { +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 ConfigurationTest { private static final String PASS = "fakePass"; private static final String USER = "fakeUser"; private static final String URL = "fakeUrl"; private static final String EMPTY = ""; + private static final boolean CUSTOM_VALUES = true; + private static final boolean DEFAULT_VALUES = false; private static final int TIMEOUT = 5000; private static final int MAX_TRIES = 5; private static final int RETRY_INTERVAL = 1000; private static final int THREAD_POOL_SIZE = 1; + @Mock private PluginConfigFactory cfgFactoryMock; + @Mock private PluginConfig configMock; private Configuration configuration; private String pluginName = "evict-cache"; @Before public void setUp() throws Exception { - configMock = createNiceMock(PluginConfig.class); - cfgFactoryMock = createMock(PluginConfigFactory.class); - expect(cfgFactoryMock.getFromGerritConfig(pluginName, true)) - .andStubReturn(configMock); + when(cfgFactoryMock.getFromGerritConfig(pluginName, true)) + .thenReturn(configMock); } @Test public void testValuesPresentInGerritConfig() throws Exception { - buildMocks(true); + buildMocks(CUSTOM_VALUES); assertThat(configuration.getUrl()).isEqualTo(URL); assertThat(configuration.getUser()).isEqualTo(USER); assertThat(configuration.getPassword()).isEqualTo(PASS); @@ -62,7 +67,7 @@ @Test public void testValuesNotPresentInGerritConfig() throws Exception { - buildMocks(false); + buildMocks(DEFAULT_VALUES); assertThat(configuration.getUrl()).isEqualTo(EMPTY); assertThat(configuration.getUser()).isEqualTo(EMPTY); assertThat(configuration.getPassword()).isEqualTo(EMPTY); @@ -75,28 +80,28 @@ @Test public void testUrlTrailingSlashIsDropped() throws Exception { - expect(configMock.getString("url")).andReturn(URL + "/"); - replayAll(); + when(configMock.getString("url")).thenReturn(URL + "/"); + configuration = new Configuration(cfgFactoryMock, pluginName); assertThat(configuration).isNotNull(); assertThat(configuration.getUrl()).isEqualTo(URL); } private void buildMocks(boolean values) { - expect(configMock.getString("url")).andReturn(values ? URL : null); - expect(configMock.getString("user")).andReturn(values ? USER : null); - expect(configMock.getString("password")).andReturn(values ? PASS : null); - expect(configMock.getInt("connectionTimeout", TIMEOUT)) - .andReturn(values ? TIMEOUT : 0); - expect(configMock.getInt("socketTimeout", TIMEOUT)) - .andReturn(values ? TIMEOUT : 0); - expect(configMock.getInt("maxTries", MAX_TRIES)) - .andReturn(values ? MAX_TRIES : 0); - expect(configMock.getInt("retryInterval", RETRY_INTERVAL)) - .andReturn(values ? RETRY_INTERVAL : 0); - expect(configMock.getInt("threadPoolSize", THREAD_POOL_SIZE)) - .andReturn(values ? THREAD_POOL_SIZE : 0); - replayAll(); + when(configMock.getString("url")).thenReturn(values ? URL : null); + when(configMock.getString("user")).thenReturn(values ? USER : null); + when(configMock.getString("password")).thenReturn(values ? PASS : null); + when(configMock.getInt("connectionTimeout", TIMEOUT)) + .thenReturn(values ? TIMEOUT : 0); + when(configMock.getInt("socketTimeout", TIMEOUT)) + .thenReturn(values ? TIMEOUT : 0); + when(configMock.getInt("maxTries", MAX_TRIES)) + .thenReturn(values ? MAX_TRIES : 0); + when(configMock.getInt("retryInterval", RETRY_INTERVAL)) + .thenReturn(values ? RETRY_INTERVAL : 0); + when(configMock.getInt("threadPoolSize", THREAD_POOL_SIZE)) + .thenReturn(values ? THREAD_POOL_SIZE : 0); + configuration = new Configuration(cfgFactoryMock, pluginName); } }
diff --git a/src/test/java/com/ericsson/gerrit/plugins/evictcache/ContextTest.java b/src/test/java/com/ericsson/gerrit/plugins/evictcache/ContextTest.java index 06c54ed..f7f51b6 100644 --- a/src/test/java/com/ericsson/gerrit/plugins/evictcache/ContextTest.java +++ b/src/test/java/com/ericsson/gerrit/plugins/evictcache/ContextTest.java
@@ -16,10 +16,9 @@ import static com.google.common.truth.Truth.assertThat; -import org.easymock.EasyMockSupport; import org.junit.Test; -public class ContextTest extends EasyMockSupport { +public class ContextTest { @Test public void testInitialValueNotNull() throws Exception {
diff --git a/src/test/java/com/ericsson/gerrit/plugins/evictcache/EvictCacheExecutorProviderTest.java b/src/test/java/com/ericsson/gerrit/plugins/evictcache/EvictCacheExecutorProviderTest.java index 90193bb..a01b187 100644 --- a/src/test/java/com/ericsson/gerrit/plugins/evictcache/EvictCacheExecutorProviderTest.java +++ b/src/test/java/com/ericsson/gerrit/plugins/evictcache/EvictCacheExecutorProviderTest.java
@@ -15,34 +15,36 @@ package com.ericsson.gerrit.plugins.evictcache; import static com.google.common.truth.Truth.assertThat; -import static org.easymock.EasyMock.expect; -import static org.easymock.EasyMock.expectLastCall; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; -import com.google.gerrit.extensions.annotations.PluginName; import com.google.gerrit.server.git.WorkQueue; -import org.easymock.EasyMockSupport; import org.junit.Before; import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.junit.MockitoJUnitRunner; -public class EvictCacheExecutorProviderTest extends EasyMockSupport { +@RunWith(MockitoJUnitRunner.class) +public class EvictCacheExecutorProviderTest { + private static final String PLUGIN_NAME = "evict-cache"; + + @Mock private WorkQueue.Executor executorMock; private EvictCacheExecutorProvider evictCacheExecutorProvider; - @PluginName String pluginName; - @Before public void setUp() throws Exception { - executorMock = createStrictMock(WorkQueue.Executor.class); - WorkQueue workQueueMock = createNiceMock(WorkQueue.class); - expect(workQueueMock.createQueue(4, - "Evict cache [" + pluginName + " plugin]")) - .andReturn(executorMock); - Configuration configMock = createStrictMock(Configuration.class); - expect(configMock.getThreadPoolSize()).andReturn(4); - replayAll(); + WorkQueue workQueueMock = mock(WorkQueue.class); + when(workQueueMock.createQueue(4, + "Evict cache [" + PLUGIN_NAME + " plugin]")).thenReturn(executorMock); + Configuration configMock = mock(Configuration.class); + when(configMock.getThreadPoolSize()).thenReturn(4); + evictCacheExecutorProvider = - new EvictCacheExecutorProvider(workQueueMock, pluginName, configMock); + new EvictCacheExecutorProvider(workQueueMock, PLUGIN_NAME, configMock); } @Test @@ -52,17 +54,11 @@ @Test public void testStop() throws Exception { - resetAll(); - executorMock.shutdown(); - expectLastCall().once(); - executorMock.unregisterWorkQueue(); - expectLastCall().once(); - replayAll(); - evictCacheExecutorProvider.start(); assertThat(evictCacheExecutorProvider.get()).isEqualTo(executorMock); evictCacheExecutorProvider.stop(); - verifyAll(); + verify(executorMock).shutdown(); + verify(executorMock).unregisterWorkQueue(); assertThat(evictCacheExecutorProvider.get()).isNull(); } }
diff --git a/src/test/java/com/ericsson/gerrit/plugins/evictcache/EvictCacheHandlerTest.java b/src/test/java/com/ericsson/gerrit/plugins/evictcache/EvictCacheHandlerTest.java deleted file mode 100644 index 93002ab..0000000 --- a/src/test/java/com/ericsson/gerrit/plugins/evictcache/EvictCacheHandlerTest.java +++ /dev/null
@@ -1,140 +0,0 @@ -// Copyright (C) 2015 Ericsson -// -// 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.evictcache; - -import static org.easymock.EasyMock.expect; - -import com.google.common.cache.RemovalNotification; - -import org.easymock.EasyMock; -import org.easymock.EasyMockSupport; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.powermock.api.easymock.PowerMock; -import org.powermock.core.classloader.annotations.PrepareForTest; -import org.powermock.modules.junit4.PowerMockRunner; - -import java.util.concurrent.ScheduledThreadPoolExecutor; - -@RunWith(PowerMockRunner.class) -@PrepareForTest(RemovalNotification.class) -public class EvictCacheHandlerTest extends EasyMockSupport { - private static final String pluginName = "evict-cache"; - private static final String cacheName = "project_list"; - private static final String invalidCacheName = "INVALID"; - private static final boolean MOCK_REST_CLIENT = true; - private static final boolean DO_NOT_MOCK_REST_CLIENT = false; - private static final boolean WAS_EVICTED = true; - private static final boolean WAS_NOT_EVICTED = false; - - private EvictCacheHandler<Object, Object> evictCacheHandler; - private RemovalNotification<Object, Object> notification; - private ScheduledThreadPoolExecutor pool; - private RestSession restClient; - - @Test - public void testEvictCacheHandler() { - setUpMocks(MOCK_REST_CLIENT, WAS_NOT_EVICTED); - EasyMock.replay(restClient); - evictCacheHandler.onRemoval(pluginName, cacheName, notification); - verifyAll(); - } - - @Test - public void testInvalidCacheName() { - setUpMocks(DO_NOT_MOCK_REST_CLIENT, WAS_NOT_EVICTED); - replayAll(); - evictCacheHandler.onRemoval(pluginName, invalidCacheName, notification); - verifyAll(); - } - - @Test - public void testInvalidRemovalCause() { - setUpMocks(DO_NOT_MOCK_REST_CLIENT, WAS_EVICTED); - evictCacheHandler.onRemoval(pluginName, cacheName, notification); - verifyAll(); - } - - @Test - public void testInvalidRemovalCauseAndCacheName() { - setUpMocks(DO_NOT_MOCK_REST_CLIENT, WAS_EVICTED); - evictCacheHandler.onRemoval(pluginName, invalidCacheName, notification); - verifyAll(); - } - - @Test - public void testForwardedInvalidRemovalCauseAndCacheName() { - setUpMocks(DO_NOT_MOCK_REST_CLIENT, WAS_EVICTED); - Context.setForwardedEvent(); - try { - evictCacheHandler.onRemoval(pluginName, invalidCacheName, notification); - } finally { - Context.unsetForwardedEvent(); - } - verifyAll(); - } - - @Test - public void testEvictCacheHandlerIsForwarded() { - setUpMocks(DO_NOT_MOCK_REST_CLIENT, WAS_NOT_EVICTED); - Context.setForwardedEvent(); - try { - evictCacheHandler.onRemoval(pluginName, cacheName, notification); - } finally { - Context.unsetForwardedEvent(); - } - verifyAll(); - } - - @Test - public void testEvictCacheIsForwardedAndAlreadyEvicted() { - setUpMocks(DO_NOT_MOCK_REST_CLIENT, WAS_EVICTED); - Context.setForwardedEvent(); - try { - evictCacheHandler.onRemoval(pluginName, cacheName, notification); - } finally { - Context.unsetForwardedEvent(); - } - verifyAll(); - } - - @SuppressWarnings({"rawtypes", "unchecked"}) - private void setUpMocks(boolean mockRestClient, boolean wasEvicted) { - notification = PowerMock.createMock(RemovalNotification.class); - pool = new PoolMock(1); - Object key = new Object(); - if (mockRestClient) { - restClient = createMock(RestSession.class); - expect(restClient.evict(pluginName, cacheName, key)).andReturn(true); - } else { - restClient = null; - } - expect(notification.wasEvicted()).andReturn(wasEvicted); - expect(notification.getKey()).andReturn(key); - EasyMock.replay(notification); - evictCacheHandler = new EvictCacheHandler(restClient, pool); - } - - private class PoolMock extends ScheduledThreadPoolExecutor { - PoolMock(int corePoolSize) { - super(corePoolSize); - } - - @Override - public void execute(Runnable command) { - command.run(); - } - } -}
diff --git a/src/test/java/com/ericsson/gerrit/plugins/evictcache/EvictCacheIT.java b/src/test/java/com/ericsson/gerrit/plugins/evictcache/EvictCacheIT.java index db900c5..b44ac31 100644 --- a/src/test/java/com/ericsson/gerrit/plugins/evictcache/EvictCacheIT.java +++ b/src/test/java/com/ericsson/gerrit/plugins/evictcache/EvictCacheIT.java
@@ -21,9 +21,10 @@ import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo; import static com.github.tomakehurst.wiremock.client.WireMock.verify; +import com.google.gerrit.acceptance.GerritConfig; +import com.google.gerrit.acceptance.GerritConfigs; import com.google.gerrit.acceptance.NoHttpd; import com.google.gerrit.acceptance.PluginDaemonTest; -import com.google.gerrit.server.config.SitePaths; import com.github.tomakehurst.wiremock.http.Request; import com.github.tomakehurst.wiremock.http.RequestListener; @@ -31,36 +32,25 @@ import com.github.tomakehurst.wiremock.junit.WireMockRule; import org.apache.http.HttpStatus; -import org.eclipse.jgit.storage.file.FileBasedConfig; -import org.eclipse.jgit.util.FS; import org.junit.Rule; import org.junit.Test; -import org.junit.runner.Description; -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Path; import java.util.concurrent.TimeUnit; @NoHttpd public class EvictCacheIT extends PluginDaemonTest { - private static final String PLUGIN_NAME = "evict-cache"; - @Rule public WireMockRule wireMockRule = new WireMockRule(Constants.PORT); - @Override - protected void beforeTest(Description description) - throws Exception { - setConfig("url", Constants.URL); - setConfig("user", "admin"); - super.beforeTest(description); - } - @Test + @GerritConfigs({ + @GerritConfig(name = "plugin.evict-cache.url", value = Constants.URL), + @GerritConfig(name = "plugin.evict-cache.user", value = "admin") + }) public void flushAndSendPost() throws Exception { - final String flushRequest = Constants.ENDPOINT_BASE + Constants.PROJECT_LIST; + final String flushRequest = + Constants.ENDPOINT_BASE + Constants.PROJECT_LIST; wireMockRule.addMockServiceRequestListener(new RequestListener() { @Override public void requestReceived(Request request, Response response) { @@ -74,29 +64,11 @@ givenThat(post(urlEqualTo(flushRequest)) .willReturn(aResponse().withStatus(HttpStatus.SC_OK))); - adminSshSession.exec("gerrit flush-caches --cache " + Constants.PROJECT_LIST); + adminSshSession + .exec("gerrit flush-caches --cache " + Constants.PROJECT_LIST); synchronized (flushRequest) { flushRequest.wait(TimeUnit.SECONDS.toMillis(2)); } verify(postRequestedFor(urlEqualTo(flushRequest))); } - - private void setConfig(String name, String value) throws Exception { - SitePaths sitePath = new SitePaths(tempSiteDir.getRoot().toPath()); - FileBasedConfig cfg = getGerritConfigFile(sitePath); - cfg.load(); - cfg.setString("plugin", PLUGIN_NAME, name, value); - cfg.save(); - } - - private FileBasedConfig getGerritConfigFile(SitePaths sitePath) - throws IOException { - FileBasedConfig cfg = - new FileBasedConfig(sitePath.gerrit_config.toFile(), FS.DETECTED); - if (!cfg.getFile().exists()) { - Path etc_path = Files.createDirectories(sitePath.etc_dir); - Files.createFile(etc_path.resolve("gerrit.config")); - } - return cfg; - } }
diff --git a/src/test/java/com/ericsson/gerrit/plugins/evictcache/EvictCacheRestApiServletTest.java b/src/test/java/com/ericsson/gerrit/plugins/evictcache/EvictCacheRestApiServletTest.java index 9c85978..3db1f75 100644 --- a/src/test/java/com/ericsson/gerrit/plugins/evictcache/EvictCacheRestApiServletTest.java +++ b/src/test/java/com/ericsson/gerrit/plugins/evictcache/EvictCacheRestApiServletTest.java
@@ -16,126 +16,116 @@ import static javax.servlet.http.HttpServletResponse.SC_BAD_REQUEST; import static javax.servlet.http.HttpServletResponse.SC_NO_CONTENT; -import static org.easymock.EasyMock.expect; -import static org.easymock.EasyMock.expectLastCall; +import static org.mockito.Mockito.doThrow; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; import com.google.common.cache.Cache; import com.google.gerrit.extensions.registration.DynamicMap; -import org.easymock.EasyMockSupport; import org.junit.Before; import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.junit.MockitoJUnitRunner; import java.io.BufferedReader; import java.io.IOException; -import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -public class EvictCacheRestApiServletTest extends EasyMockSupport { - private static final String PLUGIN_NAME = "gerrit"; +@RunWith(MockitoJUnitRunner.class) +public class EvictCacheRestApiServletTest { + @Mock private HttpServletRequest request; + @Mock private HttpServletResponse response; + @Mock private BufferedReader reader; - private EvictCacheRestApiServlet servlet; + @Mock private DynamicMap<Cache<?, ?>> cacheMap; - @SuppressWarnings("rawtypes") - private Cache cache; + private EvictCacheRestApiServlet servlet; + + @Before + public void setUp() { + servlet = new EvictCacheRestApiServlet(cacheMap); + } @Test - public void evictAccounts() throws IOException, ServletException { + public void evictAccounts() throws Exception { configureMocksFor(Constants.ACCOUNTS); - servlet.doPost(request, response); - verifyAll(); + verifyResponseIsOK(); } @Test - public void evictProjectList() throws IOException, ServletException { + public void evictProjectList() throws Exception { configureMocksFor(Constants.PROJECT_LIST); - servlet.doPost(request, response); - verifyAll(); + verifyResponseIsOK(); } @Test - public void evictGroups() throws IOException, ServletException { + public void evictGroups() throws Exception { configureMocksFor(Constants.GROUPS); - servlet.doPost(request, response); - verifyAll(); + verifyResponseIsOK(); } @Test - public void evictGroupsByInclude() throws IOException, ServletException { + public void evictGroupsByInclude() throws Exception { configureMocksFor(Constants.GROUPS_BYINCLUDE); - servlet.doPost(request, response); - verifyAll(); + verifyResponseIsOK(); } @Test - public void evictGroupsMembers() throws IOException, ServletException { + public void evictGroupsMembers() throws Exception { configureMocksFor(Constants.GROUPS_MEMBERS); servlet.doPost(request, response); - verifyAll(); + } @Test - public void evictDefault() throws IOException, ServletException { + public void evictDefault() throws Exception { configureMocksFor(Constants.DEFAULT); + verifyResponseIsOK(); + } + + private void verifyResponseIsOK() throws Exception { servlet.doPost(request, response); - verifyAll(); + verify(response).setStatus(SC_NO_CONTENT); } @Test - public void badRequest() throws IOException, ServletException { - expect(request.getPathInfo()).andReturn("/someCache"); + public void badRequest() throws Exception { + when(request.getPathInfo()).thenReturn("/someCache"); String errorMessage = "someError"; - expect(request.getReader()).andThrow(new IOException(errorMessage)); - response.sendError(SC_BAD_REQUEST, errorMessage); - expectLastCall().once(); - replayAll(); + doThrow(new IOException(errorMessage)).when(request).getReader(); servlet.doPost(request, response); - verifyAll(); + verify(response).sendError(SC_BAD_REQUEST, errorMessage); } @Test public void errorWhileSendingErrorMessage() throws Exception { - expect(request.getPathInfo()).andReturn("/someCache"); + when(request.getPathInfo()).thenReturn("/someCache"); String errorMessage = "someError"; - expect(request.getReader()).andThrow(new IOException(errorMessage)); - response.sendError(SC_BAD_REQUEST, errorMessage); - expectLastCall().andThrow(new IOException("someOtherError")); - replayAll(); + doThrow(new IOException(errorMessage)).when(request).getReader(); servlet.doPost(request, response); - verifyAll(); - } - - @Before - @SuppressWarnings("unchecked") - public void setUp() { - cacheMap = createMock(DynamicMap.class); - request = createMock(HttpServletRequest.class); - reader = createMock(BufferedReader.class); - response = createNiceMock(HttpServletResponse.class); - cache = createNiceMock(Cache.class); - servlet = new EvictCacheRestApiServlet(cacheMap); + verify(response).sendError(SC_BAD_REQUEST, errorMessage); } @SuppressWarnings("unchecked") private void configureMocksFor(String cacheName) throws IOException { - expect(cacheMap.get(PLUGIN_NAME, cacheName)).andReturn(cache); - expect(request.getPathInfo()).andReturn("/" + cacheName); - expect(request.getReader()).andReturn(reader); + when(cacheMap.get("gerrit", cacheName)).thenReturn(mock(Cache.class)); + when(request.getPathInfo()).thenReturn("/" + cacheName); + when(request.getReader()).thenReturn(reader); if (Constants.DEFAULT.equals(cacheName)) { - expect(reader.readLine()).andReturn("abc"); + when(reader.readLine()).thenReturn("abc"); } else if (Constants.GROUPS_BYINCLUDE.equals(cacheName) || Constants.GROUPS_MEMBERS.equals(cacheName)) { - expect(reader.readLine()).andReturn("{\"uuid\":\"abcd1234\"}"); + when(reader.readLine()).thenReturn("{\"uuid\":\"abcd1234\"}"); } else { - expect(reader.readLine()).andReturn("{}"); + when(reader.readLine()).thenReturn("{}"); } - response.setStatus(SC_NO_CONTENT); - expectLastCall().once(); - replayAll(); } }
diff --git a/src/test/java/com/ericsson/gerrit/plugins/evictcache/HttpClientProviderTest.java b/src/test/java/com/ericsson/gerrit/plugins/evictcache/HttpClientProviderTest.java index eb6cbf5..e64cf7c 100644 --- a/src/test/java/com/ericsson/gerrit/plugins/evictcache/HttpClientProviderTest.java +++ b/src/test/java/com/ericsson/gerrit/plugins/evictcache/HttpClientProviderTest.java
@@ -15,7 +15,7 @@ package com.ericsson.gerrit.plugins.evictcache; import static com.google.common.truth.Truth.assertThat; -import static org.easymock.EasyMock.expect; +import static org.mockito.Mockito.when; import com.google.gerrit.lifecycle.LifecycleModule; import com.google.inject.Guice; @@ -23,27 +23,27 @@ import com.google.inject.Scopes; import org.apache.http.impl.client.CloseableHttpClient; -import org.easymock.EasyMockSupport; import org.junit.Before; import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.junit.MockitoJUnitRunner; -public class HttpClientProviderTest extends EasyMockSupport { +@RunWith(MockitoJUnitRunner.class) +public class HttpClientProviderTest { private static final int TIME_INTERVAL = 1000; private static final String EMPTY = ""; + @Mock private Configuration config; @Before public void setUp() throws Exception { - config = createNiceMock(Configuration.class); - expect(config.getUrl()).andReturn(EMPTY).anyTimes(); - expect(config.getUser()).andReturn(EMPTY).anyTimes(); - expect(config.getPassword()).andReturn(EMPTY).anyTimes(); - expect(config.getMaxTries()).andReturn(1).anyTimes(); - expect(config.getConnectionTimeout()).andReturn(TIME_INTERVAL).anyTimes(); - expect(config.getSocketTimeout()).andReturn(TIME_INTERVAL).anyTimes(); - expect(config.getRetryInterval()).andReturn(TIME_INTERVAL).anyTimes(); - replayAll(); + when(config.getUrl()).thenReturn(EMPTY); + when(config.getUser()).thenReturn(EMPTY); + when(config.getPassword()).thenReturn(EMPTY); + when(config.getConnectionTimeout()).thenReturn(TIME_INTERVAL); + when(config.getSocketTimeout()).thenReturn(TIME_INTERVAL); } @Test
diff --git a/src/test/java/com/ericsson/gerrit/plugins/evictcache/HttpSessionTest.java b/src/test/java/com/ericsson/gerrit/plugins/evictcache/HttpSessionTest.java index d11e648..f45e52d 100644 --- a/src/test/java/com/ericsson/gerrit/plugins/evictcache/HttpSessionTest.java +++ b/src/test/java/com/ericsson/gerrit/plugins/evictcache/HttpSessionTest.java
@@ -19,22 +19,21 @@ import static com.github.tomakehurst.wiremock.client.WireMock.stubFor; import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo; import static com.google.common.truth.Truth.assertThat; -import static org.easymock.EasyMock.expect; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; import com.ericsson.gerrit.plugins.evictcache.CacheResponseHandler.CacheResult; import com.github.tomakehurst.wiremock.http.Fault; import com.github.tomakehurst.wiremock.junit.WireMockRule; import com.github.tomakehurst.wiremock.stubbing.Scenario; -import org.apache.http.impl.client.CloseableHttpClient; -import org.easymock.EasyMockSupport; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import java.net.SocketTimeoutException; -public class HttpSessionTest extends EasyMockSupport { +public class HttpSessionTest { private static final int MAX_TRIES = 3; private static final int RETRY_INTERVAL = 250; private static final int TIMEOUT = 500; @@ -52,8 +51,6 @@ private static final String RETRY_AT_ERROR = "Retry at error"; private static final String RETRY_AT_DELAY = "Retry at delay"; - private Configuration cfg; - private CloseableHttpClient httpClient; private HttpSession httpSession; @Rule @@ -61,17 +58,17 @@ @Before public void setUp() throws Exception { - cfg = createMock(Configuration.class); - expect(cfg.getUrl()).andReturn(Constants.URL).anyTimes(); - expect(cfg.getUser()).andReturn("user"); - expect(cfg.getPassword()).andReturn("pass"); - expect(cfg.getMaxTries()).andReturn(MAX_TRIES).anyTimes(); - expect(cfg.getConnectionTimeout()).andReturn(TIMEOUT).anyTimes(); - expect(cfg.getSocketTimeout()).andReturn(TIMEOUT).anyTimes(); - expect(cfg.getRetryInterval()).andReturn(RETRY_INTERVAL).anyTimes(); - replayAll(); - httpClient = new HttpClientProvider(cfg).get(); - httpSession = new HttpSession(httpClient, Constants.URL); + Configuration cfg = mock(Configuration.class); + when(cfg.getUrl()).thenReturn(Constants.URL); + when(cfg.getUser()).thenReturn("user"); + when(cfg.getPassword()).thenReturn("pass"); + when(cfg.getMaxTries()).thenReturn(MAX_TRIES); + when(cfg.getConnectionTimeout()).thenReturn(TIMEOUT); + when(cfg.getSocketTimeout()).thenReturn(TIMEOUT); + when(cfg.getRetryInterval()).thenReturn(RETRY_INTERVAL); + + httpSession = + new HttpSession(new HttpClientProvider(cfg).get(), Constants.URL); } @Test
diff --git a/src/test/java/com/ericsson/gerrit/plugins/evictcache/ModuleTest.java b/src/test/java/com/ericsson/gerrit/plugins/evictcache/ModuleTest.java index 3262101..479ed90 100644 --- a/src/test/java/com/ericsson/gerrit/plugins/evictcache/ModuleTest.java +++ b/src/test/java/com/ericsson/gerrit/plugins/evictcache/ModuleTest.java
@@ -15,19 +15,19 @@ package com.ericsson.gerrit.plugins.evictcache; import static com.google.common.truth.Truth.assertThat; -import static org.easymock.EasyMock.expect; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; -import org.easymock.EasyMockSupport; import org.junit.Test; -public class ModuleTest extends EasyMockSupport { +public class ModuleTest { @Test public void testSyncUrlProvider() { - Configuration configMock = createNiceMock(Configuration.class); + Configuration configMock = mock(Configuration.class); String expected = "someUrl"; - expect(configMock.getUrl()).andReturn(expected); - replayAll(); + when(configMock.getUrl()).thenReturn(expected); + Module module = new Module(); assertThat(module.syncUrl(configMock)).isEqualTo(expected); }
diff --git a/src/test/java/com/ericsson/gerrit/plugins/evictcache/RestSessionTest.java b/src/test/java/com/ericsson/gerrit/plugins/evictcache/RestSessionTest.java index 0801dfa..731792b 100644 --- a/src/test/java/com/ericsson/gerrit/plugins/evictcache/RestSessionTest.java +++ b/src/test/java/com/ericsson/gerrit/plugins/evictcache/RestSessionTest.java
@@ -15,7 +15,9 @@ package com.ericsson.gerrit.plugins.evictcache; import static com.google.common.truth.Truth.assertThat; -import static org.easymock.EasyMock.expect; +import static org.mockito.Mockito.doThrow; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; import com.google.common.base.Joiner; import com.google.gerrit.reviewdb.client.Account; @@ -23,59 +25,68 @@ import com.ericsson.gerrit.plugins.evictcache.CacheResponseHandler.CacheResult; -import org.easymock.EasyMockSupport; import org.junit.Test; import java.io.IOException; -public class RestSessionTest extends EasyMockSupport { +public class RestSessionTest { private static final String EVICT = "evict"; private static final String SOURCE_NAME = "gerrit"; private static final String PLUGIN_NAME = "evict-cache"; private static final String EMPTY_JSON = "{}"; private static final String EMPTY_JSON2 = "\"{}\""; private static final String ID_RESPONSE = "{\"id\":0}"; + private static final boolean OK_RESPONSE = true; + private static final boolean FAIL_RESPONSE = false; + private static final boolean THROW_EXCEPTION = true; + private static final boolean DO_NOT_THROW_EXCEPTION = false; private RestSession restClient; @Test public void testEvictCacheOK() throws Exception { - setupMocks(Constants.DEFAULT, EMPTY_JSON2, true, false); + setupMocks(Constants.DEFAULT, EMPTY_JSON2, OK_RESPONSE, + DO_NOT_THROW_EXCEPTION); assertThat(restClient.evict(SOURCE_NAME, Constants.DEFAULT, EMPTY_JSON)) .isTrue(); } @Test public void testEvictAccountsOK() throws Exception { - setupMocks(Constants.ACCOUNTS, ID_RESPONSE, true, false); + setupMocks(Constants.ACCOUNTS, ID_RESPONSE, OK_RESPONSE, + DO_NOT_THROW_EXCEPTION); assertThat(restClient.evict(SOURCE_NAME, Constants.ACCOUNTS, - createMock(Account.Id.class))).isTrue(); + mock(Account.Id.class))).isTrue(); } @Test public void testEvictGroupsOK() throws Exception { - setupMocks(Constants.GROUPS, ID_RESPONSE, true, false); + setupMocks(Constants.GROUPS, ID_RESPONSE, OK_RESPONSE, + DO_NOT_THROW_EXCEPTION); assertThat(restClient.evict(SOURCE_NAME, Constants.GROUPS, - createMock(AccountGroup.Id.class))).isTrue(); + mock(AccountGroup.Id.class))).isTrue(); } @Test public void testEvictGroupsByIncludeOK() throws Exception { - setupMocks(Constants.GROUPS_BYINCLUDE, EMPTY_JSON, true, false); + setupMocks(Constants.GROUPS_BYINCLUDE, EMPTY_JSON, OK_RESPONSE, + DO_NOT_THROW_EXCEPTION); assertThat(restClient.evict(SOURCE_NAME, Constants.GROUPS_BYINCLUDE, - createMock(AccountGroup.UUID.class))).isTrue(); + mock(AccountGroup.UUID.class))).isTrue(); } @Test public void testEvictGroupsMembersOK() throws Exception { - setupMocks(Constants.GROUPS_MEMBERS, EMPTY_JSON, true, false); + setupMocks(Constants.GROUPS_MEMBERS, EMPTY_JSON, OK_RESPONSE, + DO_NOT_THROW_EXCEPTION); assertThat(restClient.evict(SOURCE_NAME, Constants.GROUPS_MEMBERS, - createMock(AccountGroup.UUID.class))).isTrue(); + mock(AccountGroup.UUID.class))).isTrue(); } @Test public void testEvictProjectListOK() throws Exception { - setupMocks(Constants.PROJECT_LIST, EMPTY_JSON, true, false); + setupMocks(Constants.PROJECT_LIST, EMPTY_JSON, OK_RESPONSE, + DO_NOT_THROW_EXCEPTION); assertThat( restClient.evict(SOURCE_NAME, Constants.PROJECT_LIST, new Object())) .isTrue(); @@ -83,14 +94,15 @@ @Test public void testEvictCacheFailed() throws Exception { - setupMocks(Constants.DEFAULT, EMPTY_JSON2, false, false); + setupMocks(Constants.DEFAULT, EMPTY_JSON2, FAIL_RESPONSE, + DO_NOT_THROW_EXCEPTION); assertThat(restClient.evict(SOURCE_NAME, Constants.DEFAULT, EMPTY_JSON)) .isFalse(); } @Test public void testEvictCacheThrowsException() throws Exception { - setupMocks(Constants.DEFAULT, EMPTY_JSON2, false, true); + setupMocks(Constants.DEFAULT, EMPTY_JSON2, FAIL_RESPONSE, THROW_EXCEPTION); assertThat(restClient.evict(SOURCE_NAME, Constants.DEFAULT, EMPTY_JSON)) .isFalse(); } @@ -99,14 +111,14 @@ boolean exception) throws IOException { String request = Joiner.on("/").join("/plugins", PLUGIN_NAME, SOURCE_NAME, EVICT, cacheName); - HttpSession httpSession = createNiceMock(HttpSession.class); + HttpSession httpSession = mock(HttpSession.class); if (exception) { - expect(httpSession.post(request, json)).andThrow(new IOException()); + doThrow(new IOException()).when(httpSession).post(request, json); } else { CacheResult result = new CacheResult(ok, "Error"); - expect(httpSession.post(request, json)).andReturn(result); + when(httpSession.post(request, json)).thenReturn(result); } - replayAll(); + restClient = new RestSession(httpSession, PLUGIN_NAME); } }