diff --git a/Documentation/rest-api-projects.txt b/Documentation/rest-api-projects.txt index 32147611c7..fbcca51212 100644 --- a/Documentation/rest-api-projects.txt +++ b/Documentation/rest-api-projects.txt @@ -1192,21 +1192,19 @@ entity is returned. Content-Type: application/json; charset=UTF-8 { - "remove": [ - { - "refs/*": { - "permissions": { - "read": { - "rules": { - "c2ce4749a32ceb82cd6adcce65b8216e12afb41c": { - "action": "ALLOW" - } + "remove": { + "refs/*": { + "permissions": { + "read": { + "rules": { + "c2ce4749a32ceb82cd6adcce65b8216e12afb41c": { + "action": "ALLOW" } } } } } - ] + } } ---- diff --git a/WORKSPACE b/WORKSPACE index 0825969a60..bdc4456201 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -1103,10 +1103,18 @@ maven_jar( sha1 = "4b7f0e0dc527fab032e9800ed231080fdc3ac015", ) +TESTCONTAINERS_VERSION = "1.10.2" + maven_jar( name = "testcontainers", - artifact = "org.testcontainers:testcontainers:1.8.0", - sha1 = "bc413912f7044f9f12aa0782853aef0a067ee52a", + artifact = "org.testcontainers:testcontainers:" + TESTCONTAINERS_VERSION, + sha1 = "dfe35b1887685000fecee7f102bd8ce55643665c", +) + +maven_jar( + name = "testcontainers-elasticsearch", + artifact = "org.testcontainers:elasticsearch:" + TESTCONTAINERS_VERSION, + sha1 = "c6eb4a3a0ad114929b659fa59c2ee9fe1c1d6a58", ) maven_jar( diff --git a/javatests/com/google/gerrit/elasticsearch/BUILD b/javatests/com/google/gerrit/elasticsearch/BUILD index 52eb0b5cad..446953e652 100644 --- a/javatests/com/google/gerrit/elasticsearch/BUILD +++ b/javatests/com/google/gerrit/elasticsearch/BUILD @@ -18,6 +18,7 @@ java_library( "//lib/httpcomponents:httpcore", "//lib/jgit/org.eclipse.jgit:jgit", "//lib/testcontainers", + "//lib/testcontainers:testcontainers-elasticsearch", ], ) @@ -73,7 +74,10 @@ ELASTICSEARCH_TAGS = [ size = "large", srcs = [src], tags = ELASTICSEARCH_TAGS + ["flaky"], - deps = ELASTICSEARCH_DEPS + [QUERY_TESTS_DEP % name], + deps = ELASTICSEARCH_DEPS + [QUERY_TESTS_DEP % name] + [ + "//lib/httpcomponents:httpasyncclient", + "//lib/httpcomponents:httpclient", + ], ) for name, src in ELASTICSEARCH_TESTS_V7.items()] junit_tests( diff --git a/javatests/com/google/gerrit/elasticsearch/ElasticContainer.java b/javatests/com/google/gerrit/elasticsearch/ElasticContainer.java index 79e2853789..14fe4de08f 100644 --- a/javatests/com/google/gerrit/elasticsearch/ElasticContainer.java +++ b/javatests/com/google/gerrit/elasticsearch/ElasticContainer.java @@ -14,21 +14,19 @@ package com.google.gerrit.elasticsearch; -import com.google.common.collect.ImmutableSet; -import java.util.Set; import org.apache.http.HttpHost; import org.junit.AssumptionViolatedException; -import org.testcontainers.containers.GenericContainer; +import org.testcontainers.elasticsearch.ElasticsearchContainer; /* Helper class for running ES integration tests in docker container */ -public class ElasticContainer> extends GenericContainer { +public class ElasticContainer extends ElasticsearchContainer { private static final int ELASTICSEARCH_DEFAULT_PORT = 9200; - public static ElasticContainer createAndStart(ElasticVersion version) { + public static ElasticContainer createAndStart(ElasticVersion version) { // Assumption violation is not natively supported by Testcontainers. // See https://github.com/testcontainers/testcontainers-java/issues/343 try { - ElasticContainer container = new ElasticContainer<>(version); + ElasticContainer container = new ElasticContainer(version); container.start(); return container; } catch (Throwable t) { @@ -58,16 +56,6 @@ public class ElasticContainer> extends Gener super(getImageName(version)); } - @Override - protected void configure() { - addExposedPort(ELASTICSEARCH_DEFAULT_PORT); - } - - @Override - public Set getLivenessCheckPortNumbers() { - return ImmutableSet.of(getMappedPort(ELASTICSEARCH_DEFAULT_PORT)); - } - public HttpHost getHttpHost() { return new HttpHost(getContainerIpAddress(), getMappedPort(ELASTICSEARCH_DEFAULT_PORT)); } diff --git a/javatests/com/google/gerrit/elasticsearch/ElasticTestUtils.java b/javatests/com/google/gerrit/elasticsearch/ElasticTestUtils.java index 9f7b60c760..020a15834c 100644 --- a/javatests/com/google/gerrit/elasticsearch/ElasticTestUtils.java +++ b/javatests/com/google/gerrit/elasticsearch/ElasticTestUtils.java @@ -58,7 +58,7 @@ public final class ElasticTestUtils { public static Config getConfig(ElasticVersion version) { ElasticNodeInfo elasticNodeInfo; - ElasticContainer container = ElasticContainer.createAndStart(version); + ElasticContainer container = ElasticContainer.createAndStart(version); elasticNodeInfo = new ElasticNodeInfo(container.getHttpHost().getPort()); String indicesPrefix = UUID.randomUUID().toString(); Config cfg = new Config(); diff --git a/javatests/com/google/gerrit/elasticsearch/ElasticV5QueryAccountsTest.java b/javatests/com/google/gerrit/elasticsearch/ElasticV5QueryAccountsTest.java index 074debcbd9..c8ce54a792 100644 --- a/javatests/com/google/gerrit/elasticsearch/ElasticV5QueryAccountsTest.java +++ b/javatests/com/google/gerrit/elasticsearch/ElasticV5QueryAccountsTest.java @@ -32,7 +32,7 @@ public class ElasticV5QueryAccountsTest extends AbstractQueryAccountsTest { } private static ElasticNodeInfo nodeInfo; - private static ElasticContainer container; + private static ElasticContainer container; @BeforeClass public static void startIndexService() { diff --git a/javatests/com/google/gerrit/elasticsearch/ElasticV5QueryChangesTest.java b/javatests/com/google/gerrit/elasticsearch/ElasticV5QueryChangesTest.java index 89d0168410..cfdfa983d0 100644 --- a/javatests/com/google/gerrit/elasticsearch/ElasticV5QueryChangesTest.java +++ b/javatests/com/google/gerrit/elasticsearch/ElasticV5QueryChangesTest.java @@ -32,7 +32,7 @@ public class ElasticV5QueryChangesTest extends AbstractQueryChangesTest { } private static ElasticNodeInfo nodeInfo; - private static ElasticContainer container; + private static ElasticContainer container; @BeforeClass public static void startIndexService() { diff --git a/javatests/com/google/gerrit/elasticsearch/ElasticV5QueryGroupsTest.java b/javatests/com/google/gerrit/elasticsearch/ElasticV5QueryGroupsTest.java index 79d3ca51c6..832a7bd7fc 100644 --- a/javatests/com/google/gerrit/elasticsearch/ElasticV5QueryGroupsTest.java +++ b/javatests/com/google/gerrit/elasticsearch/ElasticV5QueryGroupsTest.java @@ -32,7 +32,7 @@ public class ElasticV5QueryGroupsTest extends AbstractQueryGroupsTest { } private static ElasticNodeInfo nodeInfo; - private static ElasticContainer container; + private static ElasticContainer container; @BeforeClass public static void startIndexService() { diff --git a/javatests/com/google/gerrit/elasticsearch/ElasticV5QueryProjectsTest.java b/javatests/com/google/gerrit/elasticsearch/ElasticV5QueryProjectsTest.java index 247cb2967e..29d3fa416a 100644 --- a/javatests/com/google/gerrit/elasticsearch/ElasticV5QueryProjectsTest.java +++ b/javatests/com/google/gerrit/elasticsearch/ElasticV5QueryProjectsTest.java @@ -32,7 +32,7 @@ public class ElasticV5QueryProjectsTest extends AbstractQueryProjectsTest { } private static ElasticNodeInfo nodeInfo; - private static ElasticContainer container; + private static ElasticContainer container; @BeforeClass public static void startIndexService() { diff --git a/javatests/com/google/gerrit/elasticsearch/ElasticV6QueryAccountsTest.java b/javatests/com/google/gerrit/elasticsearch/ElasticV6QueryAccountsTest.java index 519a9c365b..8833907be4 100644 --- a/javatests/com/google/gerrit/elasticsearch/ElasticV6QueryAccountsTest.java +++ b/javatests/com/google/gerrit/elasticsearch/ElasticV6QueryAccountsTest.java @@ -32,7 +32,7 @@ public class ElasticV6QueryAccountsTest extends AbstractQueryAccountsTest { } private static ElasticNodeInfo nodeInfo; - private static ElasticContainer container; + private static ElasticContainer container; @BeforeClass public static void startIndexService() { diff --git a/javatests/com/google/gerrit/elasticsearch/ElasticV6QueryChangesTest.java b/javatests/com/google/gerrit/elasticsearch/ElasticV6QueryChangesTest.java index 690734c5e2..8ba753c43d 100644 --- a/javatests/com/google/gerrit/elasticsearch/ElasticV6QueryChangesTest.java +++ b/javatests/com/google/gerrit/elasticsearch/ElasticV6QueryChangesTest.java @@ -32,7 +32,7 @@ public class ElasticV6QueryChangesTest extends AbstractQueryChangesTest { } private static ElasticNodeInfo nodeInfo; - private static ElasticContainer container; + private static ElasticContainer container; @BeforeClass public static void startIndexService() { diff --git a/javatests/com/google/gerrit/elasticsearch/ElasticV6QueryGroupsTest.java b/javatests/com/google/gerrit/elasticsearch/ElasticV6QueryGroupsTest.java index bf0095ac7f..cecb08557f 100644 --- a/javatests/com/google/gerrit/elasticsearch/ElasticV6QueryGroupsTest.java +++ b/javatests/com/google/gerrit/elasticsearch/ElasticV6QueryGroupsTest.java @@ -32,7 +32,7 @@ public class ElasticV6QueryGroupsTest extends AbstractQueryGroupsTest { } private static ElasticNodeInfo nodeInfo; - private static ElasticContainer container; + private static ElasticContainer container; @BeforeClass public static void startIndexService() { diff --git a/javatests/com/google/gerrit/elasticsearch/ElasticV6QueryProjectsTest.java b/javatests/com/google/gerrit/elasticsearch/ElasticV6QueryProjectsTest.java index f2227a9847..47e9b10cbb 100644 --- a/javatests/com/google/gerrit/elasticsearch/ElasticV6QueryProjectsTest.java +++ b/javatests/com/google/gerrit/elasticsearch/ElasticV6QueryProjectsTest.java @@ -32,7 +32,7 @@ public class ElasticV6QueryProjectsTest extends AbstractQueryProjectsTest { } private static ElasticNodeInfo nodeInfo; - private static ElasticContainer container; + private static ElasticContainer container; @BeforeClass public static void startIndexService() { diff --git a/javatests/com/google/gerrit/elasticsearch/ElasticV7QueryAccountsTest.java b/javatests/com/google/gerrit/elasticsearch/ElasticV7QueryAccountsTest.java index 7ac9f21075..bddbbc9023 100644 --- a/javatests/com/google/gerrit/elasticsearch/ElasticV7QueryAccountsTest.java +++ b/javatests/com/google/gerrit/elasticsearch/ElasticV7QueryAccountsTest.java @@ -32,7 +32,7 @@ public class ElasticV7QueryAccountsTest extends AbstractQueryAccountsTest { } private static ElasticNodeInfo nodeInfo; - private static ElasticContainer container; + private static ElasticContainer container; @BeforeClass public static void startIndexService() { diff --git a/javatests/com/google/gerrit/elasticsearch/ElasticV7QueryChangesTest.java b/javatests/com/google/gerrit/elasticsearch/ElasticV7QueryChangesTest.java index ed6f95ba1c..5dcf159c42 100644 --- a/javatests/com/google/gerrit/elasticsearch/ElasticV7QueryChangesTest.java +++ b/javatests/com/google/gerrit/elasticsearch/ElasticV7QueryChangesTest.java @@ -21,7 +21,12 @@ import com.google.gerrit.testing.InMemoryModule; import com.google.gerrit.testing.IndexConfig; import com.google.inject.Guice; import com.google.inject.Injector; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.client.protocol.HttpClientContext; +import org.apache.http.impl.nio.client.CloseableHttpAsyncClient; +import org.apache.http.impl.nio.client.HttpAsyncClients; import org.eclipse.jgit.lib.Config; +import org.junit.After; import org.junit.AfterClass; import org.junit.BeforeClass; @@ -32,7 +37,8 @@ public class ElasticV7QueryChangesTest extends AbstractQueryChangesTest { } private static ElasticNodeInfo nodeInfo; - private static ElasticContainer container; + private static ElasticContainer container; + private static CloseableHttpAsyncClient client; @BeforeClass public static void startIndexService() { @@ -43,6 +49,8 @@ public class ElasticV7QueryChangesTest extends AbstractQueryChangesTest { container = ElasticContainer.createAndStart(ElasticVersion.V7_0); nodeInfo = new ElasticNodeInfo(container.getHttpHost().getPort()); + client = HttpAsyncClients.createDefault(); + client.start(); } @AfterClass @@ -52,6 +60,16 @@ public class ElasticV7QueryChangesTest extends AbstractQueryChangesTest { } } + @After + public void closeIndex() { + client.execute( + new HttpPost( + String.format( + "http://localhost:%d/%s*/_close", nodeInfo.port, getSanitizedMethodName())), + HttpClientContext.create(), + null); + } + @Override protected void initAfterLifecycleStart() throws Exception { super.initAfterLifecycleStart(); diff --git a/javatests/com/google/gerrit/elasticsearch/ElasticV7QueryGroupsTest.java b/javatests/com/google/gerrit/elasticsearch/ElasticV7QueryGroupsTest.java index 5efaa4a87f..54be7b97c1 100644 --- a/javatests/com/google/gerrit/elasticsearch/ElasticV7QueryGroupsTest.java +++ b/javatests/com/google/gerrit/elasticsearch/ElasticV7QueryGroupsTest.java @@ -32,7 +32,7 @@ public class ElasticV7QueryGroupsTest extends AbstractQueryGroupsTest { } private static ElasticNodeInfo nodeInfo; - private static ElasticContainer container; + private static ElasticContainer container; @BeforeClass public static void startIndexService() { diff --git a/javatests/com/google/gerrit/elasticsearch/ElasticV7QueryProjectsTest.java b/javatests/com/google/gerrit/elasticsearch/ElasticV7QueryProjectsTest.java index 02b364176b..e8b4a2c32f 100644 --- a/javatests/com/google/gerrit/elasticsearch/ElasticV7QueryProjectsTest.java +++ b/javatests/com/google/gerrit/elasticsearch/ElasticV7QueryProjectsTest.java @@ -32,7 +32,7 @@ public class ElasticV7QueryProjectsTest extends AbstractQueryProjectsTest { } private static ElasticNodeInfo nodeInfo; - private static ElasticContainer container; + private static ElasticContainer container; @BeforeClass public static void startIndexService() { diff --git a/lib/httpcomponents/BUILD b/lib/httpcomponents/BUILD index a875eaf6d5..74cca14a7e 100644 --- a/lib/httpcomponents/BUILD +++ b/lib/httpcomponents/BUILD @@ -30,7 +30,10 @@ java_library( java_library( name = "httpasyncclient", data = ["//lib:LICENSE-Apache2.0"], - visibility = ["//java/com/google/gerrit/elasticsearch:__pkg__"], + visibility = [ + "//java/com/google/gerrit/elasticsearch:__pkg__", + "//javatests/com/google/gerrit/elasticsearch:__pkg__", + ], exports = ["@httpasyncclient//jar"], ) diff --git a/lib/testcontainers/BUILD b/lib/testcontainers/BUILD index f99365d730..5e2d039bce 100644 --- a/lib/testcontainers/BUILD +++ b/lib/testcontainers/BUILD @@ -35,3 +35,12 @@ java_library( "//lib/log:ext", ], ) + +java_library( + name = "testcontainers-elasticsearch", + testonly = 1, + data = ["//lib:LICENSE-testcontainers"], + visibility = ["//visibility:public"], + exports = ["@testcontainers-elasticsearch//jar"], + runtime_deps = [":testcontainers"], +)