Merge branch 'stable-2.13'
* stable-2.13:
Deprecate plugin
Change-Id: I7ef8248e455c44eaa8c461b5134a9e1d7e963a26
diff --git a/.buckconfig b/.buckconfig
deleted file mode 100644
index f28dcad..0000000
--- a/.buckconfig
+++ /dev/null
@@ -1,16 +0,0 @@
-[alias]
- sync-events = //:sync-events
- plugin = //:sync-events
- src = //:sync-events-sources
-
-[java]
- src_roots = java, resources
- source_level = 8
- target_level = 8
-
-[project]
- ignore = .git
-
-[cache]
- mode = dir
- dir = buck-out/cache
diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index 175600f..0000000
--- a/.gitignore
+++ /dev/null
@@ -1,9 +0,0 @@
-/.buckd
-/.buckversion
-/.classpath
-/.project
-/.settings/
-/.watchmanconfig
-/buck-out/
-/bucklets
-/eclipse-out/
diff --git a/BUCK b/BUCK
deleted file mode 100644
index 6d69b86..0000000
--- a/BUCK
+++ /dev/null
@@ -1,79 +0,0 @@
-include_defs('//bucklets/gerrit_plugin.bucklet')
-include_defs('//bucklets/java_sources.bucklet')
-include_defs('//bucklets/maven_jar.bucklet')
-
-SOURCES = glob(['src/main/java/**/*.java'])
-RESOURCES = glob(['src/main/resources/**/*'])
-
-TEST_DEPS = GERRIT_PLUGIN_API + GERRIT_TESTS + [
- ':sync-events__plugin',
- ':mockito',
- ':wiremock',
-]
-
-gerrit_plugin(
- name = 'sync-events',
- srcs = SOURCES,
- resources = RESOURCES,
- manifest_entries = [
- 'Gerrit-PluginName: sync-events',
- 'Gerrit-ApiType: plugin',
- 'Gerrit-Module: com.ericsson.gerrit.plugins.syncevents.Module',
- 'Gerrit-HttpModule: com.ericsson.gerrit.plugins.syncevents.HttpModule',
- 'Implementation-Title: sync-events plugin',
- 'Implementation-URL: https://gerrit-review.googlesource.com/#/admin/projects/plugins/sync-events',
- 'Implementation-Vendor: Ericsson',
- ],
-)
-
-java_sources(
- name = 'sync-events-sources',
- srcs = SOURCES + RESOURCES,
-)
-
-java_library(
- name = 'classpath',
- deps = TEST_DEPS,
-)
-
-java_test(
- name = 'sync-events_tests',
- srcs = glob(['src/test/java/**/*.java']),
- labels = ['sync-events'],
- deps = TEST_DEPS,
-)
-
-maven_jar(
- name = 'wiremock',
- id = 'com.github.tomakehurst:wiremock:1.58:standalone',
- sha1 = '21c8386a95c5dc54a9c55839c5a95083e42412ae',
- 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/BUILD b/BUILD
deleted file mode 100644
index a7a7bad..0000000
--- a/BUILD
+++ /dev/null
@@ -1,31 +0,0 @@
-load("//tools/bzl:junit.bzl", "junit_tests")
-load(
- "//tools/bzl:plugin.bzl",
- "gerrit_plugin",
- "PLUGIN_DEPS",
- "PLUGIN_TEST_DEPS",
-)
-
-gerrit_plugin(
- name = "sync-events",
- srcs = glob(["src/main/java/**/*.java"]),
- resources = glob(["src/main/resources/**/*"]),
- manifest_entries = [
- "Gerrit-PluginName: sync-events",
- "Gerrit-Module: com.ericsson.gerrit.plugins.syncevents.Module",
- "Gerrit-HttpModule: com.ericsson.gerrit.plugins.syncevents.HttpModule",
- "Implementation-Title: sync-events plugin",
- "Implementation-URL: https://gerrit-review.googlesource.com/#/admin/projects/plugins/sync-events",
- ],
-)
-
-junit_tests(
- name = "sync_events_tests",
- srcs = glob(["src/test/java/**/*.java"]),
- tags = ["sync-events"],
- deps = PLUGIN_DEPS + PLUGIN_TEST_DEPS + [
- ":sync-events__plugin",
- "@mockito//jar",
- "@wiremock//jar",
- ],
-)
diff --git a/README-THIS-REPO-IS-DEPRECATED.txt b/README-THIS-REPO-IS-DEPRECATED.txt
new file mode 100644
index 0000000..497ef2a
--- /dev/null
+++ b/README-THIS-REPO-IS-DEPRECATED.txt
@@ -0,0 +1,3 @@
+This plugin is deprecated. The functionality has been merged into
+
+https://gerrit-review.googlesource.com/#/admin/projects/plugins/high-availability
diff --git a/external_plugin_deps.bzl b/external_plugin_deps.bzl
deleted file mode 100644
index 6c723ba..0000000
--- a/external_plugin_deps.bzl
+++ /dev/null
@@ -1,33 +0,0 @@
-load("//tools/bzl:maven_jar.bzl", "maven_jar")
-
-def external_plugin_deps():
- maven_jar(
- name = 'wiremock',
- artifact = 'com.github.tomakehurst:wiremock:1.58:standalone',
- sha1 = '21c8386a95c5dc54a9c55839c5a95083e42412ae',
- attach_source = False,
- )
-
- maven_jar(
- name = 'mockito',
- artifact = 'org.mockito:mockito-core:2.5.0',
- sha1 = 'be28d46a52c7f2563580adeca350145e9ce916f8',
- deps = [
- '@byte_buddy//jar',
- '@objenesis//jar',
- ],
- )
-
- maven_jar(
- name = 'byte_buddy',
- artifact = 'net.bytebuddy:byte-buddy:1.5.12',
- sha1 = 'b1ba1d15f102b36ed43b826488114678d6d413da',
- attach_source = False,
- )
-
- maven_jar(
- name = 'objenesis',
- artifact = 'org.objenesis:objenesis:2.4',
- sha1 = '2916b6c96b50c5b3ec4452ed99401db745aabb27',
- attach_source = False,
- )
diff --git a/lib/BUCK b/lib/BUCK
deleted file mode 100644
index 8892994..0000000
--- a/lib/BUCK
+++ /dev/null
@@ -1,8 +0,0 @@
-include_defs('//bucklets/maven_jar.bucklet')
-
-maven_jar(
- name = 'gson',
- id = 'com.google.code.gson:gson:2.1',
- sha1 = '2e66da15851f9f5b5079228f856c2f090ba98c38',
- license = 'Apache2.0',
-)
diff --git a/lib/gerrit/BUCK b/lib/gerrit/BUCK
deleted file mode 100644
index 77ba66f..0000000
--- a/lib/gerrit/BUCK
+++ /dev/null
@@ -1,20 +0,0 @@
-include_defs('//bucklets/maven_jar.bucklet')
-
-VER = '2.14-SNAPSHOT'
-REPO = MAVEN_LOCAL
-
-maven_jar(
- name = 'plugin-api',
- id = 'com.google.gerrit:gerrit-plugin-api:' + VER,
- license = 'Apache2.0',
- attach_source = False,
- repository = REPO,
-)
-
-maven_jar(
- name = 'acceptance-framework',
- id = 'com.google.gerrit:gerrit-acceptance-framework:' + VER,
- license = 'Apache2.0',
- attach_source = False,
- repository = REPO,
-)
diff --git a/src/main/java/com/ericsson/gerrit/plugins/syncevents/Configuration.java b/src/main/java/com/ericsson/gerrit/plugins/syncevents/Configuration.java
deleted file mode 100644
index 01a6db9..0000000
--- a/src/main/java/com/ericsson/gerrit/plugins/syncevents/Configuration.java
+++ /dev/null
@@ -1,86 +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.syncevents;
-
-import com.google.common.base.CharMatcher;
-import com.google.common.base.Strings;
-import com.google.gerrit.extensions.annotations.PluginName;
-import com.google.gerrit.server.config.PluginConfig;
-import com.google.gerrit.server.config.PluginConfigFactory;
-import com.google.inject.Inject;
-import com.google.inject.Singleton;
-
-@Singleton
-class Configuration {
- private static final int DEFAULT_TIMEOUT_MS = 5000;
- private static final int DEFAULT_MAX_TRIES = 5;
- private static final int DEFAULT_RETRY_INTERVAL = 1000;
- private static final int DEFAULT_THREAD_POOL_SIZE = 1;
-
- private final String url;
- private final String user;
- private final String password;
- private final int connectionTimeout;
- private final int socketTimeout;
- private final int maxTries;
- private final int retryInterval;
- private final int threadPoolSize;
-
- @Inject
- Configuration(PluginConfigFactory config,
- @PluginName String pluginName) {
- PluginConfig cfg = config.getFromGerritConfig(pluginName, true);
- url = Strings.nullToEmpty(cfg.getString("url"));
- user = Strings.nullToEmpty(cfg.getString("user"));
- password = Strings.nullToEmpty(cfg.getString("password"));
- connectionTimeout = cfg.getInt("connectionTimeout", DEFAULT_TIMEOUT_MS);
- socketTimeout = cfg.getInt("socketTimeout", DEFAULT_TIMEOUT_MS);
- maxTries = cfg.getInt("maxTries", DEFAULT_MAX_TRIES);
- retryInterval = cfg.getInt("retryInterval", DEFAULT_RETRY_INTERVAL);
- threadPoolSize = cfg.getInt("threadPoolSize", DEFAULT_THREAD_POOL_SIZE);
- }
-
- int getConnectionTimeout() {
- return connectionTimeout;
- }
-
- int getMaxTries() {
- return maxTries;
- }
-
- int getRetryInterval() {
- return retryInterval;
- }
-
- int getSocketTimeout() {
- return socketTimeout;
- }
-
- String getUrl() {
- return CharMatcher.is('/').trimTrailingFrom(url);
- }
-
- String getUser() {
- return user;
- }
-
- String getPassword() {
- return password;
- }
-
- int getThreadPoolSize() {
- return threadPoolSize;
- }
-}
diff --git a/src/main/java/com/ericsson/gerrit/plugins/syncevents/Context.java b/src/main/java/com/ericsson/gerrit/plugins/syncevents/Context.java
deleted file mode 100644
index ba677c9..0000000
--- a/src/main/java/com/ericsson/gerrit/plugins/syncevents/Context.java
+++ /dev/null
@@ -1,43 +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.syncevents;
-
-/**
- * Allows to tag a forwarded event to avoid infinitely looping events.
- */
-class Context {
- private static final ThreadLocal<Boolean> FORWARDED_EVENT =
- new ThreadLocal<Boolean>() {
- @Override
- protected Boolean initialValue() {
- return false;
- }
- };
-
- private Context() {
- }
-
- static Boolean isForwardedEvent() {
- return FORWARDED_EVENT.get();
- }
-
- static void setForwardedEvent() {
- FORWARDED_EVENT.set(true);
- }
-
- static void unsetForwardedEvent() {
- FORWARDED_EVENT.remove();
- }
-}
diff --git a/src/main/java/com/ericsson/gerrit/plugins/syncevents/EventHandler.java b/src/main/java/com/ericsson/gerrit/plugins/syncevents/EventHandler.java
deleted file mode 100644
index 73f8708..0000000
--- a/src/main/java/com/ericsson/gerrit/plugins/syncevents/EventHandler.java
+++ /dev/null
@@ -1,64 +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.syncevents;
-
-import com.google.gerrit.common.EventListener;
-import com.google.gerrit.extensions.annotations.PluginName;
-import com.google.gerrit.server.events.Event;
-import com.google.gerrit.server.events.ProjectEvent;
-import com.google.inject.Inject;
-
-import java.util.concurrent.ScheduledThreadPoolExecutor;
-
-class EventHandler implements EventListener {
- private final ScheduledThreadPoolExecutor executor;
- private final RestSession restClient;
- private final String pluginName;
-
- @Inject
- EventHandler(RestSession restClient,
- @SyncEventExecutor ScheduledThreadPoolExecutor executor,
- @PluginName String pluginName) {
- this.restClient = restClient;
- this.executor = executor;
- this.pluginName = pluginName;
- }
-
- @Override
- public void onEvent(Event event) {
- if (!Context.isForwardedEvent() && event instanceof ProjectEvent) {
- executor.execute(new SyncEventTask(event));
- }
- }
-
- class SyncEventTask implements Runnable {
- private Event event;
-
- SyncEventTask(Event event) {
- this.event = event;
- }
-
- @Override
- public void run() {
- restClient.send(event);
- }
-
- @Override
- public String toString() {
- return String.format("[%s] Send event '%s' to target instance",
- pluginName, event.type);
- }
- }
-}
diff --git a/src/main/java/com/ericsson/gerrit/plugins/syncevents/HttpClientProvider.java b/src/main/java/com/ericsson/gerrit/plugins/syncevents/HttpClientProvider.java
deleted file mode 100644
index 95821ce..0000000
--- a/src/main/java/com/ericsson/gerrit/plugins/syncevents/HttpClientProvider.java
+++ /dev/null
@@ -1,203 +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.syncevents;
-
-import com.google.inject.Inject;
-import com.google.inject.Provider;
-
-import org.apache.http.HttpResponse;
-import org.apache.http.auth.AuthScope;
-import org.apache.http.auth.UsernamePasswordCredentials;
-import org.apache.http.client.HttpRequestRetryHandler;
-import org.apache.http.client.ServiceUnavailableRetryStrategy;
-import org.apache.http.client.config.RequestConfig;
-import org.apache.http.config.Registry;
-import org.apache.http.config.RegistryBuilder;
-import org.apache.http.conn.HttpClientConnectionManager;
-import org.apache.http.conn.socket.ConnectionSocketFactory;
-import org.apache.http.conn.socket.PlainConnectionSocketFactory;
-import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
-import org.apache.http.impl.client.BasicCredentialsProvider;
-import org.apache.http.impl.client.CloseableHttpClient;
-import org.apache.http.impl.client.HttpClients;
-import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
-import org.apache.http.protocol.HttpContext;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.net.URI;
-import java.security.KeyManagementException;
-import java.security.NoSuchAlgorithmException;
-import java.security.cert.X509Certificate;
-
-import javax.net.ssl.HostnameVerifier;
-import javax.net.ssl.SSLContext;
-import javax.net.ssl.SSLException;
-import javax.net.ssl.SSLSession;
-import javax.net.ssl.TrustManager;
-import javax.net.ssl.X509TrustManager;
-
-/**
- * Provides an HTTP client with SSL capabilities.
- */
-class HttpClientProvider implements Provider<CloseableHttpClient> {
- private static final Logger log =
- LoggerFactory.getLogger(HttpClientProvider.class);
- private static final int CONNECTIONS_PER_ROUTE = 100;
- // Up to 2 target instances with the max number of connections per host:
- private static final int MAX_CONNECTIONS = 2 * CONNECTIONS_PER_ROUTE;
-
- private static final int ERROR_CODES = 500;
- private static final int MAX_CONNECTION_INACTIVITY = 10000;
-
- private final Configuration cfg;
- private final SSLConnectionSocketFactory sslSocketFactory;
-
- @Inject
- HttpClientProvider(Configuration cfg) {
- this.cfg = cfg;
- this.sslSocketFactory = buildSslSocketFactory();
- }
-
- @Override
- public CloseableHttpClient get() {
- return HttpClients.custom().setSSLSocketFactory(sslSocketFactory)
- .setConnectionManager(customConnectionManager())
- .setDefaultCredentialsProvider(buildCredentials())
- .setDefaultRequestConfig(customRequestConfig())
- .setRetryHandler(customRetryHandler())
- .setServiceUnavailableRetryStrategy(customServiceUnavailRetryStrategy())
- .build();
- }
-
- private RequestConfig customRequestConfig() {
- return RequestConfig.custom().setConnectTimeout(cfg.getConnectionTimeout())
- .setSocketTimeout(cfg.getSocketTimeout())
- .setConnectionRequestTimeout(cfg.getConnectionTimeout())
- .build();
- }
-
- private HttpRequestRetryHandler customRetryHandler() {
- return new HttpRequestRetryHandler() {
-
- @Override
- public boolean retryRequest(IOException exception, int executionCount,
- HttpContext context) {
- if (executionCount > cfg.getMaxTries()
- || exception instanceof SSLException) {
- return false;
- }
- logRetry(exception.getMessage());
- try {
- Thread.sleep(cfg.getRetryInterval());
- } catch (InterruptedException e) {
- Thread.currentThread().interrupt();
- return false;
- }
- return true;
- }
- };
- }
-
- private ServiceUnavailableRetryStrategy customServiceUnavailRetryStrategy() {
- return new ServiceUnavailableRetryStrategy() {
- @Override
- public boolean retryRequest(HttpResponse response, int executionCount,
- HttpContext context) {
- if (executionCount > cfg.getMaxTries()) {
- return false;
- }
- if (response.getStatusLine().getStatusCode() >= ERROR_CODES) {
- logRetry(response.getStatusLine().getReasonPhrase());
- return true;
- }
- return false;
- }
-
- @Override
- public long getRetryInterval() {
- return cfg.getRetryInterval();
- }
- };
- }
-
- private void logRetry(String cause) {
- log.warn("Retrying request to '" + cfg.getUrl() + "' Cause: " + cause);
- }
-
- private HttpClientConnectionManager customConnectionManager() {
- Registry<ConnectionSocketFactory> socketFactoryRegistry = RegistryBuilder
- .<ConnectionSocketFactory> create().register("https", sslSocketFactory)
- .register("http", PlainConnectionSocketFactory.INSTANCE).build();
- PoolingHttpClientConnectionManager connManager =
- new PoolingHttpClientConnectionManager(socketFactoryRegistry);
- connManager.setDefaultMaxPerRoute(CONNECTIONS_PER_ROUTE);
- connManager.setMaxTotal(MAX_CONNECTIONS);
- connManager.setValidateAfterInactivity(MAX_CONNECTION_INACTIVITY);
- return connManager;
- }
-
- private SSLConnectionSocketFactory buildSslSocketFactory() {
- return new SSLConnectionSocketFactory(buildSslContext(),
- new DummyHostnameVerifier());
- }
-
- private SSLContext buildSslContext() {
- try {
- TrustManager[] trustAllCerts =
- new TrustManager[] {new DummyX509TrustManager()};
- SSLContext context = SSLContext.getInstance("TLS");
- context.init(null, trustAllCerts, null);
- return context;
- } catch (KeyManagementException | NoSuchAlgorithmException e) {
- log.warn("Error building SSLContext object", e);
- return null;
- }
- }
-
- private BasicCredentialsProvider buildCredentials() {
- URI uri = URI.create(cfg.getUrl());
- BasicCredentialsProvider creds = new BasicCredentialsProvider();
- creds.setCredentials(new AuthScope(uri.getHost(), uri.getPort()),
- new UsernamePasswordCredentials(cfg.getUser(), cfg.getPassword()));
- return creds;
- }
-
- private static class DummyX509TrustManager implements X509TrustManager {
- @Override
- public X509Certificate[] getAcceptedIssuers() {
- return new X509Certificate[0];
- }
-
- @Override
- public void checkClientTrusted(X509Certificate[] certs, String authType) {
- // no check
- }
-
- @Override
- public void checkServerTrusted(X509Certificate[] certs, String authType) {
- // no check
- }
- }
-
- private static class DummyHostnameVerifier implements HostnameVerifier {
- @Override
- public boolean verify(String hostname, SSLSession session) {
- // always accept
- return true;
- }
- }
-}
diff --git a/src/main/java/com/ericsson/gerrit/plugins/syncevents/HttpModule.java b/src/main/java/com/ericsson/gerrit/plugins/syncevents/HttpModule.java
deleted file mode 100644
index 58cc1fc..0000000
--- a/src/main/java/com/ericsson/gerrit/plugins/syncevents/HttpModule.java
+++ /dev/null
@@ -1,24 +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.syncevents;
-
-import com.google.gerrit.httpd.plugins.HttpPluginModule;
-
-class HttpModule extends HttpPluginModule {
- @Override
- protected void configureServlets() {
- serve("/event").with(SyncEventsRestApiServlet.class);
- }
-}
diff --git a/src/main/java/com/ericsson/gerrit/plugins/syncevents/HttpSession.java b/src/main/java/com/ericsson/gerrit/plugins/syncevents/HttpSession.java
deleted file mode 100644
index b1c32e5..0000000
--- a/src/main/java/com/ericsson/gerrit/plugins/syncevents/HttpSession.java
+++ /dev/null
@@ -1,49 +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.syncevents;
-
-import com.google.common.base.Strings;
-import com.google.common.net.MediaType;
-import com.google.inject.Inject;
-
-import com.ericsson.gerrit.plugins.syncevents.SyncEventsResponseHandler.SyncResult;
-
-import org.apache.http.client.methods.HttpPost;
-import org.apache.http.entity.StringEntity;
-import org.apache.http.impl.client.CloseableHttpClient;
-
-import java.io.IOException;
-import java.nio.charset.StandardCharsets;
-
-class HttpSession {
- private final CloseableHttpClient httpClient;
- private final String url;
-
- @Inject
- HttpSession(CloseableHttpClient httpClient,
- @SyncUrl String url) {
- this.httpClient = httpClient;
- this.url = url;
- }
-
- SyncResult post(String endpoint, String content) throws IOException {
- HttpPost post = new HttpPost(url + endpoint);
- if (!Strings.isNullOrEmpty(content)) {
- post.addHeader("Content-Type", MediaType.JSON_UTF_8.toString());
- post.setEntity(new StringEntity(content, StandardCharsets.UTF_8));
- }
- return httpClient.execute(post, new SyncEventsResponseHandler());
- }
-}
diff --git a/src/main/java/com/ericsson/gerrit/plugins/syncevents/Module.java b/src/main/java/com/ericsson/gerrit/plugins/syncevents/Module.java
deleted file mode 100644
index 39d9453..0000000
--- a/src/main/java/com/ericsson/gerrit/plugins/syncevents/Module.java
+++ /dev/null
@@ -1,51 +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.syncevents;
-
-import com.google.gerrit.common.EventDispatcher;
-import com.google.gerrit.common.EventListener;
-import com.google.gerrit.extensions.registration.DynamicItem;
-import com.google.gerrit.extensions.registration.DynamicSet;
-import com.google.gerrit.lifecycle.LifecycleModule;
-import com.google.inject.Provides;
-import com.google.inject.Scopes;
-
-import org.apache.http.impl.client.CloseableHttpClient;
-
-import java.util.concurrent.ScheduledThreadPoolExecutor;
-
-class Module extends LifecycleModule {
-
- @Override
- protected void configure() {
- bind(CloseableHttpClient.class).toProvider(HttpClientProvider.class)
- .in(Scopes.SINGLETON);
- bind(Configuration.class);
- bind(HttpSession.class);
- bind(RestSession.class);
- bind(ScheduledThreadPoolExecutor.class)
- .annotatedWith(SyncEventExecutor.class)
- .toProvider(SyncEventExecutorProvider.class);
- listener().to(SyncEventExecutorProvider.class);
- DynamicSet.bind(binder(), EventListener.class).to(EventHandler.class);
- DynamicItem.bind(binder(), EventDispatcher.class).to(SyncEventBroker.class);
- }
-
- @Provides
- @SyncUrl
- String syncUrl(Configuration config) {
- return config.getUrl();
- }
-}
diff --git a/src/main/java/com/ericsson/gerrit/plugins/syncevents/RestSession.java b/src/main/java/com/ericsson/gerrit/plugins/syncevents/RestSession.java
deleted file mode 100644
index 94e1b90..0000000
--- a/src/main/java/com/ericsson/gerrit/plugins/syncevents/RestSession.java
+++ /dev/null
@@ -1,64 +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.syncevents;
-
-import com.google.common.base.Joiner;
-import com.google.common.base.Supplier;
-import com.google.gerrit.extensions.annotations.PluginName;
-import com.google.gerrit.server.events.Event;
-import com.google.gerrit.server.events.SupplierSerializer;
-import com.google.gson.GsonBuilder;
-import com.google.inject.Inject;
-
-import com.ericsson.gerrit.plugins.syncevents.SyncEventsResponseHandler.SyncResult;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-
-class RestSession {
- private static final Logger log = LoggerFactory.getLogger(RestSession.class);
- private final HttpSession httpSession;
- private final String pluginName;
-
- @Inject
- RestSession(HttpSession httpClient,
- @PluginName String pluginName) {
- this.httpSession = httpClient;
- this.pluginName = pluginName;
- }
-
- boolean send(Event event) {
- String serializedEvent = new GsonBuilder()
- .registerTypeAdapter(Supplier.class, new SupplierSerializer()).create()
- .toJson(event);
- try {
- SyncResult result = httpSession.post(buildEndpoint(), serializedEvent);
- if (result.isSuccessful()) {
- return true;
- }
- log.error(
- "Unable to send event '" + event.type + "' " + result.getMessage());
- } catch (IOException e) {
- log.error("Error trying to send event " + event.type, e);
- }
- return false;
- }
-
- private String buildEndpoint() {
- return Joiner.on("/").join("/plugins", pluginName, "event");
- }
-}
diff --git a/src/main/java/com/ericsson/gerrit/plugins/syncevents/SyncEventBroker.java b/src/main/java/com/ericsson/gerrit/plugins/syncevents/SyncEventBroker.java
deleted file mode 100644
index 36cfc15..0000000
--- a/src/main/java/com/ericsson/gerrit/plugins/syncevents/SyncEventBroker.java
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright (C) 2016 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.syncevents;
-
-import com.google.gerrit.common.EventBroker;
-import com.google.gerrit.common.EventListener;
-import com.google.gerrit.common.UserScopedEventListener;
-import com.google.gerrit.extensions.registration.DynamicSet;
-import com.google.gerrit.reviewdb.server.ReviewDb;
-import com.google.gerrit.server.events.Event;
-import com.google.gerrit.server.notedb.ChangeNotes.Factory;
-import com.google.gerrit.server.project.ProjectCache;
-import com.google.inject.Inject;
-import com.google.inject.Provider;
-
-class SyncEventBroker extends EventBroker {
-
- @Inject
- SyncEventBroker(DynamicSet<UserScopedEventListener> listeners,
- DynamicSet<EventListener> unrestrictedListeners,
- ProjectCache projectCache,
- Factory notesFactory,
- Provider<ReviewDb> dbProvider) {
- super(listeners, unrestrictedListeners, projectCache, notesFactory,
- dbProvider);
- }
-
- @Override
- protected void fireEventForUnrestrictedListeners(Event event) {
- if (!Context.isForwardedEvent()) {
- super.fireEventForUnrestrictedListeners(event);
- }
- }
-}
diff --git a/src/main/java/com/ericsson/gerrit/plugins/syncevents/SyncEventExecutor.java b/src/main/java/com/ericsson/gerrit/plugins/syncevents/SyncEventExecutor.java
deleted file mode 100644
index 841be21..0000000
--- a/src/main/java/com/ericsson/gerrit/plugins/syncevents/SyncEventExecutor.java
+++ /dev/null
@@ -1,26 +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.syncevents;
-
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-import com.google.inject.BindingAnnotation;
-
-import java.lang.annotation.Retention;
-
-@Retention(RUNTIME)
-@BindingAnnotation
-@interface SyncEventExecutor {
-}
diff --git a/src/main/java/com/ericsson/gerrit/plugins/syncevents/SyncEventExecutorProvider.java b/src/main/java/com/ericsson/gerrit/plugins/syncevents/SyncEventExecutorProvider.java
deleted file mode 100644
index 7fb0ab1..0000000
--- a/src/main/java/com/ericsson/gerrit/plugins/syncevents/SyncEventExecutorProvider.java
+++ /dev/null
@@ -1,54 +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.syncevents;
-
-import com.google.gerrit.extensions.annotations.PluginName;
-import com.google.gerrit.extensions.events.LifecycleListener;
-import com.google.gerrit.server.git.WorkQueue;
-import com.google.inject.Inject;
-import com.google.inject.Provider;
-import com.google.inject.Singleton;
-
-import java.util.concurrent.ScheduledThreadPoolExecutor;
-
-@Singleton
-class SyncEventExecutorProvider
- implements Provider<ScheduledThreadPoolExecutor>, LifecycleListener {
- private WorkQueue.Executor executor;
-
- @Inject
- SyncEventExecutorProvider(WorkQueue workQueue,
- @PluginName String pluginName,
- Configuration config) {
- executor = workQueue.createQueue(config.getThreadPoolSize(),
- "Sync stream events [" + pluginName + " plugin]");
- }
-
- @Override
- public void start() {
- // do nothing
- }
-
- @Override
- public void stop() {
- executor.shutdown();
- executor = null;
- }
-
- @Override
- public ScheduledThreadPoolExecutor get() {
- return executor;
- }
-}
diff --git a/src/main/java/com/ericsson/gerrit/plugins/syncevents/SyncEventsResponseHandler.java b/src/main/java/com/ericsson/gerrit/plugins/syncevents/SyncEventsResponseHandler.java
deleted file mode 100644
index 59cebf3..0000000
--- a/src/main/java/com/ericsson/gerrit/plugins/syncevents/SyncEventsResponseHandler.java
+++ /dev/null
@@ -1,74 +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.syncevents;
-
-import static javax.servlet.http.HttpServletResponse.SC_NO_CONTENT;
-
-import com.ericsson.gerrit.plugins.syncevents.SyncEventsResponseHandler.SyncResult;
-
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpResponse;
-import org.apache.http.client.ResponseHandler;
-import org.apache.http.util.EntityUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-
-class SyncEventsResponseHandler implements ResponseHandler<SyncResult> {
-
- static class SyncResult {
- private boolean successful;
- private String message;
-
- SyncResult(boolean successful, String message) {
- this.successful = successful;
- this.message = message;
- }
-
- boolean isSuccessful() {
- return successful;
- }
-
- String getMessage() {
- return message;
- }
- }
-
- private static final Logger log = LoggerFactory
- .getLogger(SyncEventsResponseHandler.class);
-
- @Override
- public SyncResult handleResponse(HttpResponse response) {
- return new SyncResult(isSuccessful(response), parseResponse(response));
- }
-
- private boolean isSuccessful(HttpResponse response) {
- return response.getStatusLine().getStatusCode() == SC_NO_CONTENT;
- }
-
- private String parseResponse(HttpResponse response) {
- HttpEntity entity = response.getEntity();
- String asString = "";
- if (entity != null) {
- try {
- asString = EntityUtils.toString(entity);
- } catch (IOException e) {
- log.error("Error parsing entity", e);
- }
- }
- return asString;
- }
-}
diff --git a/src/main/java/com/ericsson/gerrit/plugins/syncevents/SyncEventsRestApiServlet.java b/src/main/java/com/ericsson/gerrit/plugins/syncevents/SyncEventsRestApiServlet.java
deleted file mode 100644
index eae220b..0000000
--- a/src/main/java/com/ericsson/gerrit/plugins/syncevents/SyncEventsRestApiServlet.java
+++ /dev/null
@@ -1,102 +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.syncevents;
-
-import static com.google.common.net.MediaType.JSON_UTF_8;
-import static javax.servlet.http.HttpServletResponse.SC_BAD_REQUEST;
-import static javax.servlet.http.HttpServletResponse.SC_NOT_FOUND;
-import static javax.servlet.http.HttpServletResponse.SC_NO_CONTENT;
-import static javax.servlet.http.HttpServletResponse.SC_UNSUPPORTED_MEDIA_TYPE;
-
-import com.google.common.base.Supplier;
-import com.google.common.io.CharStreams;
-import com.google.common.net.MediaType;
-import com.google.gerrit.common.EventDispatcher;
-import com.google.gerrit.server.events.Event;
-import com.google.gerrit.server.events.EventDeserializer;
-import com.google.gerrit.server.events.SupplierDeserializer;
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
-import com.google.gwtorm.server.OrmException;
-import com.google.inject.Inject;
-import com.google.inject.Singleton;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-@Singleton
-class SyncEventsRestApiServlet extends HttpServlet {
- private static final long serialVersionUID = -1L;
- private static final Logger logger = LoggerFactory
- .getLogger(SyncEventsRestApiServlet.class);
-
- private final EventDispatcher dispatcher;
-
- @Inject
- SyncEventsRestApiServlet(EventDispatcher dispatcher) {
- this.dispatcher = dispatcher;
- }
-
- @Override
- protected void doPost(HttpServletRequest req, HttpServletResponse rsp)
- throws IOException, ServletException {
- rsp.setContentType("text/plain");
- rsp.setCharacterEncoding("UTF-8");
- try {
- Context.setForwardedEvent();
- if (!MediaType.parse(req.getContentType()).is(JSON_UTF_8)) {
- sendError(rsp, SC_UNSUPPORTED_MEDIA_TYPE,
- "Expecting " + JSON_UTF_8.toString() + " content type");
- return;
- }
- Event event = getEventFromRequest(req);
- dispatcher.postEvent(event);
- rsp.setStatus(SC_NO_CONTENT);
- } catch (OrmException e) {
- logger.debug("Error trying to find a change ", e);
- sendError(rsp, SC_NOT_FOUND, "Change not found\n");
- } catch (IOException e) {
- logger.error("Unable to re-trigger event", e);
- sendError(rsp, SC_BAD_REQUEST, e.getMessage());
- } finally {
- Context.unsetForwardedEvent();
- }
- }
-
- private Event getEventFromRequest(HttpServletRequest req) throws IOException {
- String jsonEvent = CharStreams.toString(req.getReader());
- Gson gson = new GsonBuilder()
- .registerTypeAdapter(Event.class, new EventDeserializer())
- .registerTypeAdapter(Supplier.class, new SupplierDeserializer())
- .create();
- return gson.fromJson(jsonEvent, Event.class);
- }
-
- private static void sendError(HttpServletResponse rsp, int statusCode,
- String message) {
- try {
- rsp.sendError(statusCode, message);
- } catch (IOException e) {
- logger.error("Failed to send error messsage: " + e.getMessage(), e);
- }
- }
-}
diff --git a/src/main/java/com/ericsson/gerrit/plugins/syncevents/SyncUrl.java b/src/main/java/com/ericsson/gerrit/plugins/syncevents/SyncUrl.java
deleted file mode 100644
index 851aec8..0000000
--- a/src/main/java/com/ericsson/gerrit/plugins/syncevents/SyncUrl.java
+++ /dev/null
@@ -1,26 +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.syncevents;
-
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-import com.google.inject.BindingAnnotation;
-
-import java.lang.annotation.Retention;
-
-@Retention(RUNTIME)
-@BindingAnnotation
-@interface SyncUrl {
-}
diff --git a/src/main/resources/Documentation/about.md b/src/main/resources/Documentation/about.md
deleted file mode 100644
index e12f31a..0000000
--- a/src/main/resources/Documentation/about.md
+++ /dev/null
@@ -1,13 +0,0 @@
-The @PLUGIN@ plugin allows to share stream events between two Gerrit instances
-sharing the same git repositories and database.
-
-The plugin needs to be installed in both instances and every time a stream event occurs in
-one of the instances (see [more events info]
-(https://gerrit-review.googlesource.com/Documentation/cmd-stream-events.html#events)),
-the event is forwarded to the other instance which re-plays it. This way, the output
-of the stream-events command is the same, no matter what instance a client is
-connected to.
-
-For this to work, http must be enabled in both instances and the plugin
-must be configured with valid credentials. For further information, refer to
-[config](config.md) documentation.
diff --git a/src/main/resources/Documentation/build.md b/src/main/resources/Documentation/build.md
deleted file mode 100644
index 3f0527b..0000000
--- a/src/main/resources/Documentation/build.md
+++ /dev/null
@@ -1,53 +0,0 @@
-Build
-=====
-
-Build
-=====
-
-This plugin is built with Bazel.
-
-Clone (or link) this plugin to the `plugins` directory of Gerrit's source tree.
-
-Put the external dependency Bazel build file into the Gerrit /plugins directory,
-replacing the existing empty one.
-
-```
- cd gerrit/plugins
- rm external_plugin_deps.bzl
- ln -s @PLUGIN@/external_plugin_deps.bzl .
-```
-
-Then issue
-
-```
- bazel build plugins/@PLUGIN@
-```
-
-in the root of Gerrit's source tree to build
-
-The output is created in
-
-```
- bazel-genfiles/plugins/@PLUGIN@/@PLUGIN@.jar
-```
-
-This project can be imported into the Eclipse IDE.
-Add the plugin name to the `CUSTOM_PLUGINS` set in
-Gerrit core in `tools/bzl/plugins.bzl`, and execute:
-
-```
- ./tools/eclipse/project.py
-```
-
-To execute the tests run:
-
-```
- bazel test plugins/@PLUGIN@:sync_events_tests
-```
-
-How to build the Gerrit Plugin API is described in the [Gerrit
-documentation](../../../Documentation/dev-bazel.html#_extension_and_plugin_api_jar_files).
-
-[Back to @PLUGIN@ documentation index][index]
-
-[index]: index.html
diff --git a/src/main/resources/Documentation/config.md b/src/main/resources/Documentation/config.md
deleted file mode 100644
index f01df3f..0000000
--- a/src/main/resources/Documentation/config.md
+++ /dev/null
@@ -1,45 +0,0 @@
-@PLUGIN@ Configuration
-=========================
-
-The @PLUGIN@ plugin must be installed in both instances and the following fields
-should be specified in the corresponding Gerrit configuration file:
-
-File 'gerrit.config'
---------------------
-
-plugin.@PLUGIN@.url
-: Specify the URL for the secondary (target) instance.
-
-plugin.@PLUGIN@.user
-: Username to connect to the secondary (target) instance.
-
-plugin.@PLUGIN@.password
-: Password to connect to the secondary (target) instance. This value can
- also be defined in secure.config.
-
-@PLUGIN@ plugin uses REST API calls to send events to the target instance. It
-is possible to customize the parameters of the underlying http client doing these
-calls by specifying the following fields:
-
-@PLUGIN@.connectionTimeout
-: Maximum interval of time in milliseconds the plugin waits for a connection
- to the target instance. When not specified, the default value is set to 5000ms.
-
-@PLUGIN@.socketTimeout
-: Maximum interval of time in milliseconds the plugin waits for a response from the
- target instance once the connection has been established. When not specified,
- the default value is set to 5000ms.
-
-@PLUGIN@.maxTries
-: Maximum number of times the plugin should attempt to send the event to the
- target instance. Setting this value to 0 will disable retries. When not
- specified, the default value is 5. After this number of failed tries, an error
- is logged.
-
-@PLUGIN@.retryInterval
-: The interval of time in milliseconds between the subsequent auto-retries.
- When not specified, the default value is set to 1000ms.
-
-@PLUGIN@.threadPoolSize
-: Maximum number of threads used to send stream events to the target instance.
- Defaults to 1.
diff --git a/src/test/java/com/ericsson/gerrit/plugins/syncevents/ConfigurationTest.java b/src/test/java/com/ericsson/gerrit/plugins/syncevents/ConfigurationTest.java
deleted file mode 100644
index f14df56..0000000
--- a/src/test/java/com/ericsson/gerrit/plugins/syncevents/ConfigurationTest.java
+++ /dev/null
@@ -1,107 +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.syncevents;
-
-import static com.google.common.truth.Truth.assertThat;
-import static org.mockito.Mockito.when;
-
-import com.google.gerrit.server.config.PluginConfig;
-import com.google.gerrit.server.config.PluginConfigFactory;
-
-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 = "sync-events";
-
- @Before
- public void setUp() throws Exception {
- when(cfgFactoryMock.getFromGerritConfig(pluginName, true))
- .thenReturn(configMock);
- }
-
- @Test
- public void testValuesPresentInGerritConfig() throws Exception {
- buildMocks(CUSTOM_VALUES);
- assertThat(configuration.getUrl()).isEqualTo(URL);
- assertThat(configuration.getUser()).isEqualTo(USER);
- assertThat(configuration.getPassword()).isEqualTo(PASS);
- assertThat(configuration.getConnectionTimeout()).isEqualTo(TIMEOUT);
- assertThat(configuration.getSocketTimeout()).isEqualTo(TIMEOUT);
- assertThat(configuration.getMaxTries()).isEqualTo(MAX_TRIES);
- assertThat(configuration.getRetryInterval()).isEqualTo(RETRY_INTERVAL);
- assertThat(configuration.getThreadPoolSize()).isEqualTo(THREAD_POOL_SIZE);
- }
-
- @Test
- public void testValuesNotPresentInGerritConfig() throws Exception {
- buildMocks(DEFAULT_VALUES);
- assertThat(configuration.getUrl()).isEqualTo(EMPTY);
- assertThat(configuration.getUser()).isEqualTo(EMPTY);
- assertThat(configuration.getPassword()).isEqualTo(EMPTY);
- assertThat(configuration.getConnectionTimeout()).isEqualTo(0);
- assertThat(configuration.getSocketTimeout()).isEqualTo(0);
- assertThat(configuration.getMaxTries()).isEqualTo(0);
- assertThat(configuration.getRetryInterval()).isEqualTo(0);
- assertThat(configuration.getThreadPoolSize()).isEqualTo(0);
- }
-
- @Test
- public void testUrlTrailingSlashIsDropped() throws Exception {
- when(configMock.getString("url")).thenReturn(URL + "/");
-
- configuration = new Configuration(cfgFactoryMock, pluginName);
- assertThat(configuration).isNotNull();
- assertThat(configuration.getUrl()).isEqualTo(URL);
- }
-
- private void buildMocks(boolean values) {
- 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/syncevents/ContextTest.java b/src/test/java/com/ericsson/gerrit/plugins/syncevents/ContextTest.java
deleted file mode 100644
index c3dd4cd..0000000
--- a/src/test/java/com/ericsson/gerrit/plugins/syncevents/ContextTest.java
+++ /dev/null
@@ -1,47 +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.syncevents;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import org.junit.Test;
-
-import com.ericsson.gerrit.plugins.syncevents.Context;
-
-public class ContextTest {
-
- @Test
- public void testInitialValueNotNull() throws Exception {
- assertThat(Context.isForwardedEvent()).isNotNull();
- assertThat(Context.isForwardedEvent()).isFalse();
- }
-
- @Test
- public void testSetForwardedEvent() throws Exception {
- Context.setForwardedEvent();
- try {
- assertThat(Context.isForwardedEvent()).isTrue();
- } finally {
- Context.unsetForwardedEvent();
- }
- }
-
- @Test
- public void testUnsetForwardedEvent() throws Exception {
- Context.setForwardedEvent();
- Context.unsetForwardedEvent();
- assertThat(Context.isForwardedEvent()).isFalse();
- }
-}
diff --git a/src/test/java/com/ericsson/gerrit/plugins/syncevents/EventHandlerTest.java b/src/test/java/com/ericsson/gerrit/plugins/syncevents/EventHandlerTest.java
deleted file mode 100644
index b84be73..0000000
--- a/src/test/java/com/ericsson/gerrit/plugins/syncevents/EventHandlerTest.java
+++ /dev/null
@@ -1,95 +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.syncevents;
-
-import static com.google.common.truth.Truth.assertThat;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.verifyZeroInteractions;
-
-import com.google.gerrit.server.events.Event;
-import com.google.gerrit.server.events.RefEvent;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.junit.MockitoJUnitRunner;
-
-import java.util.concurrent.ScheduledThreadPoolExecutor;
-
-@RunWith(MockitoJUnitRunner.class)
-public class EventHandlerTest {
- private static final String PLUGIN_NAME = "sync-event";
-
- private Event event;
- private EventHandler eventHandler;
- @Mock
- private RestSession restSession;
-
- @Test
- public void testRightEventAndNotForwarded() throws Exception {
- setUpMocks(true);
- eventHandler.onEvent(event);
- verify(restSession).send(event);
- }
-
- @Test
- public void testRightEventIsForwarded() throws Exception {
- setUpMocks(true);
- Context.setForwardedEvent();
- eventHandler.onEvent(event);
- Context.unsetForwardedEvent();
- verifyZeroInteractions(restSession);
- }
-
- @Test
- public void testBadEventAndNotForwarded() throws Exception {
- setUpMocks(false);
- eventHandler.onEvent(event);
- verifyZeroInteractions(restSession);
- }
-
- @Test
- public void testBadEventAndItIsForwarded() throws Exception {
- setUpMocks(false);
- Context.setForwardedEvent();
- eventHandler.onEvent(event);
- Context.unsetForwardedEvent();
- verifyZeroInteractions(restSession);
- }
-
- private void setUpMocks(boolean rightEvent) {
- ScheduledThreadPoolExecutor pool = new PoolMock(1);
- if (rightEvent) {
- event = mock(RefEvent.class);
- } else {
- event = mock(Event.class);
- }
- eventHandler = new EventHandler(restSession, pool, PLUGIN_NAME);
- }
-
- private class PoolMock extends ScheduledThreadPoolExecutor {
- PoolMock(int corePoolSize) {
- super(corePoolSize);
- }
-
- @Override
- public void execute(Runnable command) {
- assertThat(command.toString()).isEqualTo(String.format(
- "[%s] Send event '%s' to target instance", PLUGIN_NAME, null));
- command.run();
- }
- }
-}
diff --git a/src/test/java/com/ericsson/gerrit/plugins/syncevents/HttpClientProviderTest.java b/src/test/java/com/ericsson/gerrit/plugins/syncevents/HttpClientProviderTest.java
deleted file mode 100644
index 30b4cf2..0000000
--- a/src/test/java/com/ericsson/gerrit/plugins/syncevents/HttpClientProviderTest.java
+++ /dev/null
@@ -1,68 +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.syncevents;
-
-import static com.google.common.truth.Truth.assertThat;
-import static org.mockito.Mockito.when;
-
-import com.google.gerrit.lifecycle.LifecycleModule;
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-import com.google.inject.Scopes;
-
-import org.apache.http.impl.client.CloseableHttpClient;
-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 HttpClientProviderTest {
- private static final int TIME_INTERVAL = 1000;
- private static final String EMPTY = "";
-
- @Mock
- private Configuration config;
-
- @Before
- public void setUp() throws Exception {
- 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
- public void testGet() throws Exception {
- Injector injector = Guice.createInjector(new TestModule());
- CloseableHttpClient httpClient1 =
- injector.getInstance(CloseableHttpClient.class);
- assertThat(httpClient1).isNotNull();
- CloseableHttpClient httpClient2 =
- injector.getInstance(CloseableHttpClient.class);
- assertThat(httpClient1).isEqualTo(httpClient2);
- }
-
- class TestModule extends LifecycleModule {
- @Override
- protected void configure() {
- bind(Configuration.class).toInstance(config);
- bind(CloseableHttpClient.class).toProvider(HttpClientProvider.class)
- .in(Scopes.SINGLETON);
- }
- }
-}
diff --git a/src/test/java/com/ericsson/gerrit/plugins/syncevents/HttpSessionTest.java b/src/test/java/com/ericsson/gerrit/plugins/syncevents/HttpSessionTest.java
deleted file mode 100644
index 3b8e182..0000000
--- a/src/test/java/com/ericsson/gerrit/plugins/syncevents/HttpSessionTest.java
+++ /dev/null
@@ -1,155 +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.syncevents;
-
-import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
-import static com.github.tomakehurst.wiremock.client.WireMock.post;
-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.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-import com.ericsson.gerrit.plugins.syncevents.SyncEventsResponseHandler.SyncResult;
-import com.github.tomakehurst.wiremock.http.Fault;
-import com.github.tomakehurst.wiremock.junit.WireMockRule;
-import com.github.tomakehurst.wiremock.stubbing.Scenario;
-
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-
-public class HttpSessionTest {
- private static final int MAX_TRIES = 3;
- private static final int RETRY_INTERVAL = 250;
- private static final int TIMEOUT = 500;
- private static final int ERROR = 500;
- private static final int OK = 204;
- private static final int NOT_FOUND = 404;
- private static final int UNAUTHORIZED = 401;
-
- private static final String ENDPOINT = "/plugins/sync-events/event";
- private static final String BODY = "SerializedEvent";
- private static final String ERROR_MESSAGE = "Error message";
- private static final String REQUEST_MADE = "Request made";
- private static final String RETRY_AT_ERROR = "Retry at error";
- private static final String RETRY_AT_DELAY = "Retry at delay";
-
- private HttpSession httpSession;
-
- @Rule
- public WireMockRule wireMockRule = new WireMockRule(0);
-
- @Before
- public void setUp() throws Exception {
- String url = "http://localhost:" + wireMockRule.port();
- Configuration cfg = mock(Configuration.class);
- when(cfg.getUrl()).thenReturn(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(), url);
- }
-
- @Test
- public void testResponseOK() throws Exception {
- stubFor(post(urlEqualTo(ENDPOINT)).willReturn(aResponse().withStatus(OK)));
- assertThat(httpSession.post(ENDPOINT, BODY).isSuccessful()).isTrue();
- }
-
- @Test
- public void testResponseOKEmptyBody() throws Exception {
- stubFor(post(urlEqualTo(ENDPOINT)).willReturn(aResponse().withStatus(OK)));
- assertThat(httpSession.post(ENDPOINT, "").isSuccessful()).isTrue();
- }
-
- @Test
- public void testNotAuthorized() throws Exception {
- String expected = "unauthorized";
- stubFor(post(urlEqualTo(ENDPOINT)).willReturn(
- aResponse().withStatus(UNAUTHORIZED).withBody(expected)));
-
- SyncResult result = httpSession.post(ENDPOINT, BODY);
- assertThat(result.isSuccessful()).isFalse();
- assertThat(result.getMessage()).isEqualTo(expected);
- }
-
- @Test
- public void testNotFound() throws Exception {
- String expected = "not found";
- stubFor(post(urlEqualTo(ENDPOINT)).willReturn(
- aResponse().withStatus(NOT_FOUND).withBody(expected)));
-
- SyncResult result = httpSession.post(ENDPOINT, BODY);
- assertThat(result.isSuccessful()).isFalse();
- assertThat(result.getMessage()).isEqualTo(expected);
- }
-
- @Test
- public void testBadResponseRetryThenOK() throws Exception {
- stubFor(post(urlEqualTo(ENDPOINT)).inScenario(RETRY_AT_ERROR)
- .whenScenarioStateIs(Scenario.STARTED).willSetStateTo(REQUEST_MADE)
- .willReturn(aResponse().withStatus(ERROR)));
- stubFor(post(urlEqualTo(ENDPOINT)).inScenario(RETRY_AT_ERROR)
- .whenScenarioStateIs(REQUEST_MADE)
- .willReturn(aResponse().withStatus(OK)));
-
- assertThat(httpSession.post(ENDPOINT, BODY).isSuccessful()).isTrue();
- }
-
- @Test
- public void testBadResponseRetryThenGiveUp() throws Exception {
- stubFor(post(urlEqualTo(ENDPOINT)).willReturn(
- aResponse().withStatus(ERROR).withBody(ERROR_MESSAGE)));
-
- assertThat(httpSession.post(ENDPOINT, BODY).isSuccessful()).isFalse();
- assertThat(httpSession.post(ENDPOINT, BODY).getMessage())
- .isEqualTo(ERROR_MESSAGE);
- }
-
- @Test
- public void testRetryAfterDelay() throws Exception {
- stubFor(post(urlEqualTo(ENDPOINT)).inScenario(RETRY_AT_DELAY)
- .whenScenarioStateIs(Scenario.STARTED).willSetStateTo(REQUEST_MADE)
- .willReturn(aResponse().withStatus(ERROR).withFixedDelay(TIMEOUT / 2)));
- stubFor(post(urlEqualTo(ENDPOINT)).inScenario(RETRY_AT_DELAY)
- .whenScenarioStateIs(REQUEST_MADE)
- .willReturn(aResponse().withStatus(OK)));
-
- assertThat(httpSession.post(ENDPOINT, BODY).isSuccessful()).isTrue();
- }
-
- @Test
- public void testGiveUpAtTimeout() throws Exception {
- stubFor(post(urlEqualTo(ENDPOINT)).inScenario(RETRY_AT_DELAY)
- .whenScenarioStateIs(Scenario.STARTED).willSetStateTo(REQUEST_MADE)
- .willReturn(aResponse().withStatus(ERROR).withFixedDelay(TIMEOUT)));
-
- assertThat(httpSession.post(ENDPOINT, BODY).isSuccessful()).isFalse();
- }
-
- @Test
- public void testResponseWithMalformedResponse() throws Exception {
- stubFor(post(urlEqualTo(ENDPOINT)).willReturn(
- aResponse().withFault(Fault.MALFORMED_RESPONSE_CHUNK)));
-
- assertThat(httpSession.post(ENDPOINT, BODY).isSuccessful()).isFalse();
- }
-}
diff --git a/src/test/java/com/ericsson/gerrit/plugins/syncevents/ModuleTest.java b/src/test/java/com/ericsson/gerrit/plugins/syncevents/ModuleTest.java
deleted file mode 100644
index 3a0addf..0000000
--- a/src/test/java/com/ericsson/gerrit/plugins/syncevents/ModuleTest.java
+++ /dev/null
@@ -1,34 +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.syncevents;
-
-import static com.google.common.truth.Truth.assertThat;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-import org.junit.Test;
-
-public class ModuleTest {
-
- @Test
- public void testSyncUrlProvider() {
- Configuration configMock = mock(Configuration.class);
- String expected = "someUrl";
- 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/syncevents/RestSessionTest.java b/src/test/java/com/ericsson/gerrit/plugins/syncevents/RestSessionTest.java
deleted file mode 100644
index 9385c5f..0000000
--- a/src/test/java/com/ericsson/gerrit/plugins/syncevents/RestSessionTest.java
+++ /dev/null
@@ -1,82 +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.syncevents;
-
-import static com.google.common.truth.Truth.assertThat;
-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.server.events.Event;
-import com.google.gson.GsonBuilder;
-
-import com.ericsson.gerrit.plugins.syncevents.SyncEventsResponseHandler.SyncResult;
-
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.IOException;
-
-public class RestSessionTest {
- private static final String PLUGIN_NAME = "sync-events";
- private static final String REQUEST =
- Joiner.on("/").join("/plugins", PLUGIN_NAME, "event");
-
- private RestSession restSession;
- private Event event;
-
- @Before
- public void setup() {
- event = new SyncEventTest();
- }
-
- @Test
- public void testEventSentOK() throws Exception {
- setUpMocks(true, "", false);
- assertThat(restSession.send(event)).isTrue();
- }
-
- @Test
- public void testEventSentFailed() throws Exception {
- setUpMocks(false, "Error", false);
- assertThat(restSession.send(event)).isFalse();
- }
-
- @Test
- public void testEventSentThrowsException() throws Exception {
- setUpMocks(false, "Exception", true);
- assertThat(restSession.send(event)).isFalse();
- }
-
- private void setUpMocks(boolean isOk, String msg, boolean throwException)
- throws Exception {
- String content = new GsonBuilder().create().toJson(event);
- HttpSession httpSession = mock(HttpSession.class);
- if (throwException) {
- doThrow(new IOException()).when(httpSession).post(REQUEST, content);
- } else {
- SyncResult result = new SyncResult(isOk, msg);
- when(httpSession.post(REQUEST, content)).thenReturn(result);
- }
- restSession = new RestSession(httpSession, PLUGIN_NAME);
- }
-
- class SyncEventTest extends Event {
- public SyncEventTest() {
- super("test-event");
- }
- }
-}
diff --git a/src/test/java/com/ericsson/gerrit/plugins/syncevents/SyncEventBrokerTest.java b/src/test/java/com/ericsson/gerrit/plugins/syncevents/SyncEventBrokerTest.java
deleted file mode 100644
index 1ca7170..0000000
--- a/src/test/java/com/ericsson/gerrit/plugins/syncevents/SyncEventBrokerTest.java
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright (C) 2016 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.syncevents;
-
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.verifyZeroInteractions;
-
-import com.google.gerrit.common.EventListener;
-import com.google.gerrit.extensions.registration.DynamicSet;
-import com.google.gerrit.server.events.Event;
-
-import org.junit.Before;
-import org.junit.Test;
-
-public class SyncEventBrokerTest {
-
- private EventListener listenerMock;
- private SyncEventBroker broker;
- private Event event = new Event(null) {};
-
- @Before
- public void setUp() {
- listenerMock = mock(EventListener.class);
- DynamicSet<EventListener> listeners = DynamicSet.emptySet();
- listeners.add(listenerMock);
- broker = new SyncEventBroker(null, listeners, null, null, null);
- }
-
- @Test
- public void shouldDispatchEvent() {
- broker.fireEventForUnrestrictedListeners(event);
- verify(listenerMock).onEvent(event);
- }
-
- @Test
- public void shouldNotDispatchForwardedEvents() {
- Context.setForwardedEvent();
- try {
- broker.fireEventForUnrestrictedListeners(event);
- } finally {
- Context.unsetForwardedEvent();
- }
- verifyZeroInteractions(listenerMock);
- }
-}
diff --git a/src/test/java/com/ericsson/gerrit/plugins/syncevents/SyncEventExecutorProviderTest.java b/src/test/java/com/ericsson/gerrit/plugins/syncevents/SyncEventExecutorProviderTest.java
deleted file mode 100644
index faec7d1..0000000
--- a/src/test/java/com/ericsson/gerrit/plugins/syncevents/SyncEventExecutorProviderTest.java
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright (C) 2016 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.syncevents;
-
-import static com.google.common.truth.Truth.assertThat;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import com.google.gerrit.server.git.WorkQueue;
-
-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 SyncEventExecutorProviderTest {
- @Mock
- private WorkQueue.Executor executorMock;
- private SyncEventExecutorProvider syncEventsExecutorProvider;
-
- @Before
- public void setUp() throws Exception {
- WorkQueue workQueueMock = mock(WorkQueue.class);
- when(workQueueMock.createQueue(4, "Sync stream events [SyncEvents plugin]"))
- .thenReturn(executorMock);
- Configuration configMock = mock(Configuration.class);
- when(configMock.getThreadPoolSize()).thenReturn(4);
-
- syncEventsExecutorProvider =
- new SyncEventExecutorProvider(workQueueMock, "SyncEvents", configMock);
- }
-
- @Test
- public void shouldReturnExecutor() throws Exception {
- assertThat(syncEventsExecutorProvider.get()).isEqualTo(executorMock);
- }
-
- @Test
- public void testStop() throws Exception {
- syncEventsExecutorProvider.start();
- assertThat(syncEventsExecutorProvider.get()).isEqualTo(executorMock);
- syncEventsExecutorProvider.stop();
- verify(executorMock).shutdown();
- assertThat(syncEventsExecutorProvider.get()).isNull();
- }
-}
diff --git a/src/test/java/com/ericsson/gerrit/plugins/syncevents/SyncEventsResponseHandlerTest.java b/src/test/java/com/ericsson/gerrit/plugins/syncevents/SyncEventsResponseHandlerTest.java
deleted file mode 100644
index e17e283..0000000
--- a/src/test/java/com/ericsson/gerrit/plugins/syncevents/SyncEventsResponseHandlerTest.java
+++ /dev/null
@@ -1,69 +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.syncevents;
-
-import static com.google.common.truth.Truth.assertThat;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-import com.ericsson.gerrit.plugins.syncevents.SyncEventsResponseHandler.SyncResult;
-
-import org.apache.http.HttpResponse;
-import org.apache.http.StatusLine;
-import org.apache.http.entity.StringEntity;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.UnsupportedEncodingException;
-
-public class SyncEventsResponseHandlerTest {
- private static final int ERROR = 400;
- private static final int OK = 204;
- private static final String EMPTY_ENTITY = "";
- private static final String ERROR_ENTITY = "Error";
-
- private SyncEventsResponseHandler handler;
-
- @Before
- public void setUp() throws Exception {
- handler = new SyncEventsResponseHandler();
- }
-
- @Test
- public void testIsSuccessful() throws Exception {
- HttpResponse response = setupMocks(OK, EMPTY_ENTITY);
- SyncResult result = handler.handleResponse(response);
- assertThat(result.isSuccessful()).isTrue();
- assertThat(result.getMessage()).isEmpty();
- }
-
- @Test
- public void testIsNotSuccessful() throws Exception {
- HttpResponse response = setupMocks(ERROR, ERROR_ENTITY);
- SyncResult result = handler.handleResponse(response);
- assertThat(result.isSuccessful()).isFalse();
- assertThat(result.getMessage()).contains(ERROR_ENTITY);
- }
-
- private HttpResponse setupMocks(int httpCode, String entity)
- throws UnsupportedEncodingException {
- 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/syncevents/SyncEventsRestApiServletTest.java b/src/test/java/com/ericsson/gerrit/plugins/syncevents/SyncEventsRestApiServletTest.java
deleted file mode 100644
index 5c318c8..0000000
--- a/src/test/java/com/ericsson/gerrit/plugins/syncevents/SyncEventsRestApiServletTest.java
+++ /dev/null
@@ -1,147 +0,0 @@
-// Copyright (C) 2016 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.syncevents;
-
-import static com.google.common.net.MediaType.JSON_UTF_8;
-import static javax.servlet.http.HttpServletResponse.SC_BAD_REQUEST;
-import static javax.servlet.http.HttpServletResponse.SC_NOT_FOUND;
-import static javax.servlet.http.HttpServletResponse.SC_NO_CONTENT;
-import static javax.servlet.http.HttpServletResponse.SC_UNSUPPORTED_MEDIA_TYPE;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.doThrow;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import com.google.common.net.MediaType;
-import com.google.gerrit.common.EventDispatcher;
-import com.google.gerrit.reviewdb.client.Project;
-import com.google.gerrit.server.events.EventTypes;
-import com.google.gerrit.server.events.RefEvent;
-import com.google.gwtorm.client.KeyUtil;
-import com.google.gwtorm.server.OrmException;
-import com.google.gwtorm.server.StandardKeyEncoder;
-
-import org.junit.Before;
-import org.junit.BeforeClass;
-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 java.io.StringReader;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-@RunWith(MockitoJUnitRunner.class)
-public class SyncEventsRestApiServletTest {
- private static final String ERR_MSG = "some Error";
-
- @Mock
- private EventDispatcher dispatcher;
- @Mock
- private HttpServletRequest req;
- @Mock
- private HttpServletResponse rsp;
- private SyncEventsRestApiServlet syncEventsRestApiServlet;
-
- @BeforeClass
- public static void setup() {
- EventTypes.register(RefReplicationDoneEvent.TYPE,
- RefReplicationDoneEvent.class);
- KeyUtil.setEncoderImpl(new StandardKeyEncoder());
- }
-
- @Before
- public void createSyncEventsRestApiServlet() throws Exception {
- syncEventsRestApiServlet = new SyncEventsRestApiServlet(dispatcher);
- when(req.getContentType()).thenReturn(MediaType.JSON_UTF_8.toString());
- }
-
- @Test
- public void testDoPostRefReplicationDoneEvent() throws Exception {
- String event = "{\"project\":\"gerrit/test-sync-index\",\"ref\":"
- + "\"refs/changes/76/669676/2\",\"nodesCount\":1,\"type\":"
- + "\"ref-replication-done\",\"eventCreatedOn\":1451415011}";
- when(req.getReader())
- .thenReturn(new BufferedReader(new StringReader(event)));
- dispatcher.postEvent(any(RefReplicationDoneEvent.class));
- syncEventsRestApiServlet.doPost(req, rsp);
- verify(rsp).setStatus(SC_NO_CONTENT);
- }
-
- @Test
- public void testDoPostDispatcherFailure() throws Exception {
- String event = "{\"project\":\"gerrit/test-sync-index\",\"ref\":"
- + "\"refs/changes/76/669676/2\",\"nodesCount\":1,\"type\":"
- + "\"ref-replication-done\",\"eventCreatedOn\":1451415011}";
- when(req.getReader())
- .thenReturn(new BufferedReader(new StringReader(event)));
- doThrow(new OrmException(ERR_MSG)).when(dispatcher)
- .postEvent(any(RefReplicationDoneEvent.class));
- syncEventsRestApiServlet.doPost(req, rsp);
- verify(rsp).sendError(SC_NOT_FOUND, "Change not found\n");
- }
-
- @Test
- public void testDoPostBadRequest() throws Exception {
- doThrow(new IOException(ERR_MSG)).when(req).getReader();
- syncEventsRestApiServlet.doPost(req, rsp);
- verify(rsp).sendError(SC_BAD_REQUEST, ERR_MSG);
- }
-
- @Test
- public void testDoPostWrongMediaType() throws Exception {
- when(req.getContentType())
- .thenReturn(MediaType.APPLICATION_XML_UTF_8.toString());
- syncEventsRestApiServlet.doPost(req, rsp);
- verify(rsp).sendError(SC_UNSUPPORTED_MEDIA_TYPE,
- "Expecting " + JSON_UTF_8.toString() + " content type");
- }
-
- @Test
- public void testDoPostErrorWhileSendingErrorMessage() throws Exception {
- doThrow(new IOException(ERR_MSG)).when(req).getReader();
- doThrow(new IOException("someOtherError")).when(rsp)
- .sendError(SC_BAD_REQUEST, ERR_MSG);
- syncEventsRestApiServlet.doPost(req, rsp);
- }
-
- static class RefReplicationDoneEvent extends RefEvent {
- public static final String TYPE = "ref-replication-done";
- public final String project;
- public final String ref;
- public final int nodesCount;
-
- public RefReplicationDoneEvent(String project, String ref, int nodesCount) {
- super(TYPE);
- this.project = project;
- this.ref = ref;
- this.nodesCount = nodesCount;
- }
-
- @Override
- public Project.NameKey getProjectNameKey() {
- return new Project.NameKey(project);
- }
-
- @Override
- public String getRefName() {
- return ref;
- }
- }
-}