Merge branch 'stable-2.15'
* stable-2.15:
Upgrade bazlets to the latest stable-2.15 revision
Replace Apache commons-dbcp with HikariCP
Periodically remove older database entries
Do not remove entries from local DB
Remove entries from deleted projects asynchronously
Upgrade mockito to latest version
Convert local variable to field
Remove unneeded JDBC driver class name
Remove unneeded annotation
Use already defined constant
Inline one-time use variables
Update bazlets to latest stable-2.14 to use 2.14.11 API
Fix index creation
Update bazlets to latest stable-2.14 to use 2.14.10 API
Add indexes to speed up queries
Configure DB connection pool
Simplify sorting of query events result
Avoid using non portable separator character
Use Java Files instead of Guava one
Simplify configuration
Make default query more readable
Format build files with buildifier 0.12.0
Use built-in log formatter
SQLQueryMaker: add order-by clause to the query
EventsLogIT: Format with google-java-format 1.6
Change copyright to AOSP
Inline private method
Upgrade bazlets to latest stable-2.14 revision
Automate the SonarQube analysis with bazel
Format all files with google-java-format
Compile against Gerrit 2.15
Fix errorprone issue about tearDown method
Update bazlets to latest stable-2.14 to use 2.14.7 release API
Upgrade Mockito to 2.15.0
Format all Java files with google-java-format
SQLStoreTest: Fix Spotbugs warning about return value ignored
SQLEntryTest: Suppress 'unlikely argument type' warning
SQLStoreTest: Reduce visibility of tearDown method
Update bazlets to latest revision on stable-2.14
Build with API version 2.11.7
Change-Id: Iabfa051b2257f5665cfc9f24e53eff3ff677c2b2
diff --git a/WORKSPACE b/WORKSPACE
index b57d59c..6e37ab4 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -3,27 +3,27 @@
load("//:bazlets.bzl", "load_bazlets")
load_bazlets(
- commit = "3995849fe742201d93e40f2b109dcff13dd0a4ed",
+ commit = "44557bf2f571c233d9df6cd670e0250c14fef341",
# local_path = "/home/<user>/projects/bazlets",
)
#Snapshot Plugin API
-#load(
-# "@com_googlesource_gerrit_bazlets//:gerrit_api_maven_local.bzl",
-# "gerrit_api_maven_local",
-#)
-
-# Load snapshot Plugin API
-#gerrit_api_maven_local()
-
-# Release Plugin API
load(
- "@com_googlesource_gerrit_bazlets//:gerrit_api.bzl",
- "gerrit_api",
+ "@com_googlesource_gerrit_bazlets//:gerrit_api_maven_local.bzl",
+ "gerrit_api_maven_local",
)
+# Load snapshot Plugin API
+gerrit_api_maven_local()
+
+# Release Plugin API
+#load(
+# "@com_googlesource_gerrit_bazlets//:gerrit_api.bzl",
+# "gerrit_api",
+#)
+
# Load release Plugin API
-gerrit_api()
+#gerrit_api()
load("//:external_plugin_deps.bzl", "external_plugin_deps")
diff --git a/src/main/java/com/ericsson/gerrit/plugins/eventslog/EventHandler.java b/src/main/java/com/ericsson/gerrit/plugins/eventslog/EventHandler.java
index 15f830a..6a020c5 100644
--- a/src/main/java/com/ericsson/gerrit/plugins/eventslog/EventHandler.java
+++ b/src/main/java/com/ericsson/gerrit/plugins/eventslog/EventHandler.java
@@ -14,8 +14,8 @@
package com.ericsson.gerrit.plugins.eventslog;
-import com.google.gerrit.common.EventListener;
import com.google.gerrit.server.events.Event;
+import com.google.gerrit.server.events.EventListener;
import com.google.gerrit.server.events.ProjectEvent;
import com.google.inject.Inject;
import java.util.concurrent.ScheduledExecutorService;
diff --git a/src/main/java/com/ericsson/gerrit/plugins/eventslog/EventModule.java b/src/main/java/com/ericsson/gerrit/plugins/eventslog/EventModule.java
index b888425..3f905c7 100644
--- a/src/main/java/com/ericsson/gerrit/plugins/eventslog/EventModule.java
+++ b/src/main/java/com/ericsson/gerrit/plugins/eventslog/EventModule.java
@@ -15,10 +15,10 @@
package com.ericsson.gerrit.plugins.eventslog;
import com.ericsson.gerrit.plugins.eventslog.sql.EventsLogCleaner;
-import com.google.gerrit.common.EventListener;
import com.google.gerrit.extensions.events.LifecycleListener;
import com.google.gerrit.extensions.events.ProjectDeletedListener;
import com.google.gerrit.extensions.registration.DynamicSet;
+import com.google.gerrit.server.events.EventListener;
import com.google.inject.AbstractModule;
import com.google.inject.Provides;
import com.google.inject.Scopes;
diff --git a/src/main/java/com/ericsson/gerrit/plugins/eventslog/sql/SQLStore.java b/src/main/java/com/ericsson/gerrit/plugins/eventslog/sql/SQLStore.java
index 8a06904..cc8b3d8 100644
--- a/src/main/java/com/ericsson/gerrit/plugins/eventslog/sql/SQLStore.java
+++ b/src/main/java/com/ericsson/gerrit/plugins/eventslog/sql/SQLStore.java
@@ -26,13 +26,11 @@
import com.google.gerrit.extensions.events.LifecycleListener;
import com.google.gerrit.extensions.restapi.AuthException;
import com.google.gerrit.reviewdb.client.Project;
-import com.google.gerrit.server.CurrentUser;
import com.google.gerrit.server.events.ProjectEvent;
import com.google.gerrit.server.permissions.PermissionBackend;
import com.google.gerrit.server.permissions.PermissionBackendException;
import com.google.gerrit.server.permissions.ProjectPermission;
import com.google.inject.Inject;
-import com.google.inject.Provider;
import com.google.inject.Singleton;
import java.io.IOException;
import java.net.ConnectException;
@@ -54,7 +52,6 @@
private static final Logger log = LoggerFactory.getLogger(SQLStore.class);
private static final String H2_DB_SUFFIX = ".h2.db";
- private final Provider<CurrentUser> userProvider;
private final EventsLogCleaner eventsLogCleaner;
private SQLClient eventsDb;
private SQLClient localEventsDb;
@@ -71,7 +68,6 @@
@Inject
SQLStore(
- Provider<CurrentUser> userProvider,
EventsLogConfig cfg,
@EventsDb SQLClient eventsDb,
@LocalEventsDb SQLClient localEventsDb,
@@ -83,7 +79,6 @@
this.waitTime = cfg.getWaitTime();
this.connectTime = cfg.getConnectTime();
this.copyLocal = cfg.getCopyLocal();
- this.userProvider = userProvider;
this.eventsDb = eventsDb;
this.localEventsDb = localEventsDb;
this.eventsLogCleaner = eventsLogCleaner;
@@ -121,7 +116,7 @@
String projectName = entry.getKey();
try {
permissionBackend
- .user(userProvider)
+ .currentUser()
.project(new Project.NameKey(projectName))
.check(ProjectPermission.ACCESS);
entries.addAll(entry.getValue());
diff --git a/src/test/java/com/ericsson/gerrit/plugins/eventslog/sql/SQLStoreTest.java b/src/test/java/com/ericsson/gerrit/plugins/eventslog/sql/SQLStoreTest.java
index 96ce35d..b473ad9 100644
--- a/src/test/java/com/ericsson/gerrit/plugins/eventslog/sql/SQLStoreTest.java
+++ b/src/test/java/com/ericsson/gerrit/plugins/eventslog/sql/SQLStoreTest.java
@@ -29,13 +29,11 @@
import com.ericsson.gerrit.plugins.eventslog.ServiceUnavailableException;
import com.google.common.collect.ImmutableList;
import com.google.gerrit.reviewdb.client.Project;
-import com.google.gerrit.server.CurrentUser;
import com.google.gerrit.server.events.ProjectEvent;
import com.google.gerrit.server.permissions.PermissionBackend;
import com.google.gerrit.server.permissions.PermissionBackendException;
import com.google.gerrit.server.permissions.ProjectPermission;
import com.google.gson.Gson;
-import com.google.inject.Provider;
import com.zaxxer.hikari.HikariConfig;
import java.net.ConnectException;
import java.sql.Connection;
@@ -70,7 +68,6 @@
private static final String MSG = "message";
private static final String GENERIC_QUERY = "SELECT * FROM " + TABLE_NAME;
- @Mock private Provider<CurrentUser> userProviderMock;
@Mock private EventsLogConfig cfgMock;
@Mock private PermissionBackend permissionBackendMock;
@Mock private PermissionBackend.ForProject forProjectMock;
@@ -110,7 +107,7 @@
@Test
public void storeThenQueryVisible() throws Exception {
- when(permissionBackendMock.user(userProviderMock)).thenReturn(withUserMock);
+ when(permissionBackendMock.currentUser()).thenReturn(withUserMock);
when(withUserMock.project(any(Project.NameKey.class))).thenReturn(forProjectMock);
doNothing().when(forProjectMock).check(ProjectPermission.ACCESS);
setUpClient();
@@ -122,7 +119,7 @@
@Test
public void storeThenQueryNotVisible() throws Exception {
- when(permissionBackendMock.user(userProviderMock)).thenReturn(withUserMock);
+ when(permissionBackendMock.currentUser()).thenReturn(withUserMock);
when(withUserMock.project(any(Project.NameKey.class))).thenReturn(forProjectMock);
doThrow(new PermissionBackendException(""))
.when(forProjectMock)
@@ -142,7 +139,7 @@
@Test
public void notReturnEventWithNoVisibilityInfo() throws Exception {
- when(permissionBackendMock.user(userProviderMock)).thenReturn(withUserMock);
+ when(permissionBackendMock.currentUser()).thenReturn(withUserMock);
when(withUserMock.project(any(Project.NameKey.class))).thenReturn(forProjectMock);
doThrow(new PermissionBackendException(""))
.when(forProjectMock)
@@ -163,13 +160,7 @@
doThrow(exceptions).doNothing().when(eventsDb).queryOne();
store =
new SQLStore(
- userProviderMock,
- cfgMock,
- eventsDb,
- localEventsDb,
- poolMock,
- permissionBackendMock,
- logCleanerMock);
+ cfgMock, eventsDb, localEventsDb, poolMock, permissionBackendMock, logCleanerMock);
store.start();
store.storeEvent(mockEvent);
@@ -185,15 +176,10 @@
setUpClientMock();
doThrow(exceptions).doNothing().when(eventsDb).storeEvent(mockEvent);
doThrow(exceptions).doNothing().when(eventsDb).queryOne();
+
store =
new SQLStore(
- userProviderMock,
- cfgMock,
- eventsDb,
- localEventsDb,
- poolMock,
- permissionBackendMock,
- logCleanerMock);
+ cfgMock, eventsDb, localEventsDb, poolMock, permissionBackendMock, logCleanerMock);
store.start();
store.storeEvent(mockEvent);
@@ -206,15 +192,10 @@
when(cfgMock.getMaxTries()).thenReturn(3);
setUpClientMock();
doThrow(new SQLException(MSG)).when(eventsDb).storeEvent(mockEvent);
+
store =
new SQLStore(
- userProviderMock,
- cfgMock,
- eventsDb,
- localEventsDb,
- poolMock,
- permissionBackendMock,
- logCleanerMock);
+ cfgMock, eventsDb, localEventsDb, poolMock, permissionBackendMock, logCleanerMock);
store.start();
store.storeEvent(mockEvent);
@@ -229,15 +210,10 @@
setUpClientMock();
doThrow(exceptions).doNothing().when(eventsDb).storeEvent(mockEvent);
doThrow(exceptions).doNothing().when(eventsDb).queryOne();
+
store =
new SQLStore(
- userProviderMock,
- cfgMock,
- eventsDb,
- localEventsDb,
- poolMock,
- permissionBackendMock,
- logCleanerMock);
+ cfgMock, eventsDb, localEventsDb, poolMock, permissionBackendMock, logCleanerMock);
store.start();
store.storeEvent(mockEvent);
@@ -249,15 +225,10 @@
setUpClientMock();
doThrow(new SQLException(new ConnectException())).when(eventsDb).createDBIfNotCreated();
doThrow(new SQLException()).when(eventsDb).queryOne();
+
store =
new SQLStore(
- userProviderMock,
- cfgMock,
- eventsDb,
- localEventsDb,
- poolMock,
- permissionBackendMock,
- logCleanerMock);
+ cfgMock, eventsDb, localEventsDb, poolMock, permissionBackendMock, logCleanerMock);
store.start();
store.storeEvent(mockEvent);
@@ -268,7 +239,8 @@
public void restoreEventsFromLocalDb() throws Exception {
MockEvent mockEvent = new MockEvent();
MockEvent mockEvent2 = new MockEvent("proj");
- when(permissionBackendMock.user(userProviderMock)).thenReturn(withUserMock);
+
+ when(permissionBackendMock.currentUser()).thenReturn(withUserMock);
when(withUserMock.project(any(Project.NameKey.class))).thenReturn(forProjectMock);
doNothing().when(forProjectMock).check(ProjectPermission.ACCESS);
@@ -278,13 +250,7 @@
localEventsDb = new SQLClient(config);
store =
new SQLStore(
- userProviderMock,
- cfgMock,
- eventsDb,
- localEventsDb,
- poolMock,
- permissionBackendMock,
- logCleanerMock);
+ cfgMock, eventsDb, localEventsDb, poolMock, permissionBackendMock, logCleanerMock);
localEventsDb.createDBIfNotCreated();
localEventsDb.storeEvent(mockEvent);
@@ -295,6 +261,9 @@
Gson gson = new Gson();
String json = gson.toJson(mockEvent);
String json2 = gson.toJson(mockEvent2);
+
+ assertThat(events).containsExactly(json, json2);
+
assertThat(events).containsExactly(json, json2).inOrder();
}
@@ -303,15 +272,10 @@
setUpClientMock();
doThrow(new SQLException(new ConnectException())).when(eventsDb).createDBIfNotCreated();
doThrow(new SQLException()).when(eventsDb).queryOne();
+
store =
new SQLStore(
- userProviderMock,
- cfgMock,
- eventsDb,
- localEventsDb,
- poolMock,
- permissionBackendMock,
- logCleanerMock);
+ cfgMock, eventsDb, localEventsDb, poolMock, permissionBackendMock, logCleanerMock);
store.start();
verify(localEventsDb).createDBIfNotCreated();
@@ -322,15 +286,10 @@
setUpClientMock();
doThrow(new SQLException(new ConnectException())).when(eventsDb).createDBIfNotCreated();
doThrow(new SQLException()).when(eventsDb).queryOne();
+
store =
new SQLStore(
- userProviderMock,
- cfgMock,
- eventsDb,
- localEventsDb,
- poolMock,
- permissionBackendMock,
- logCleanerMock);
+ cfgMock, eventsDb, localEventsDb, poolMock, permissionBackendMock, logCleanerMock);
store.start();
store.storeEvent(mockEvent);
@@ -343,15 +302,10 @@
when(cfgMock.getMaxTries()).thenReturn(0);
doThrow(new SQLException(new ConnectException())).when(eventsDb).createDBIfNotCreated();
doThrow(new SQLException()).when(eventsDb).queryOne();
+
store =
new SQLStore(
- userProviderMock,
- cfgMock,
- eventsDb,
- localEventsDb,
- poolMock,
- permissionBackendMock,
- logCleanerMock);
+ cfgMock, eventsDb, localEventsDb, poolMock, permissionBackendMock, logCleanerMock);
store.start();
store.storeEvent(mockEvent);
@@ -359,17 +313,13 @@
}
private void setUpClient() {
+
eventsDb = new SQLClient(config);
localEventsDb = new SQLClient(config);
store =
new SQLStore(
- userProviderMock,
- cfgMock,
- eventsDb,
- localEventsDb,
- poolMock,
- permissionBackendMock,
- logCleanerMock);
+ cfgMock, eventsDb, localEventsDb, poolMock, permissionBackendMock, logCleanerMock);
+
store.start();
}
@@ -391,15 +341,10 @@
localEventsDb = mock(SQLClient.class);
when(localEventsDb.dbExists()).thenReturn(true);
when(localEventsDb.getAll()).thenReturn(ImmutableList.of(mock(SQLEntry.class)));
+
store =
new SQLStore(
- userProviderMock,
- cfgMock,
- eventsDb,
- localEventsDb,
- poolMock,
- permissionBackendMock,
- logCleanerMock);
+ cfgMock, eventsDb, localEventsDb, poolMock, permissionBackendMock, logCleanerMock);
store.start();
poolMock.scheduleWithFixedDelay(store.new CheckConnectionTask(), 0, 0, TimeUnit.MILLISECONDS);
@@ -433,13 +378,7 @@
store =
new SQLStore(
- userProviderMock,
- cfgMock,
- eventsDb,
- localEventsDb,
- poolMock,
- permissionBackendMock,
- logCleanerMock);
+ cfgMock, eventsDb, localEventsDb, poolMock, permissionBackendMock, logCleanerMock);
store.start();
verify(eventsDb).queryOne();