Merge "tests: Print container logs of startup failure" into stable-3.5
diff --git a/BUILD b/BUILD
index 4750354..b16fb0d 100644
--- a/BUILD
+++ b/BUILD
@@ -73,6 +73,7 @@
     tags = [
         "docker",
         "elastic",
+        "exclusive",
     ],
     deps = ELASTICSEARCH_DEPS + PLUGIN_TEST_DEPS + [
         QUERY_TESTS_DEP % name,
diff --git a/README.md b/README.md
index b231e37..41d4279 100644
--- a/README.md
+++ b/README.md
@@ -6,6 +6,10 @@
 This module was originally part of Gerrit core and then extracted into a separate
 component from v3.5.0-rc3 as part of [Change-Id: Ib7b5167ce](https://gerrit-review.googlesource.com/c/gerrit/+/323676).
 
+Note that, ElasticSearch source code is no longer Apache 2.0-licensed for versions
+7.11 and newer. See ElasticSearch [2021 license change](https://www.elastic.co/pricing/faq/licensing)
+for more information.
+
 ## How to build
 
 This libModule is built like a Gerrit in-tree plugin, using Bazelisk. See the
diff --git a/src/main/java/com/google/gerrit/elasticsearch/ElasticVersion.java b/src/main/java/com/google/gerrit/elasticsearch/ElasticVersion.java
index b5bf44b..baea46b 100644
--- a/src/main/java/com/google/gerrit/elasticsearch/ElasticVersion.java
+++ b/src/main/java/com/google/gerrit/elasticsearch/ElasticVersion.java
@@ -20,7 +20,9 @@
 public enum ElasticVersion {
   V7_6("7.6.*"),
   V7_7("7.7.*"),
-  V7_8("7.8.*");
+  V7_8("7.8.*"),
+  V7_10("7.10.*"),
+  V7_16("7.16.*");
 
   private final String version;
   private final Pattern pattern;
diff --git a/src/test/java/com/google/gerrit/elasticsearch/ElasticContainer.java b/src/test/java/com/google/gerrit/elasticsearch/ElasticContainer.java
index a071bda..4567acf 100644
--- a/src/test/java/com/google/gerrit/elasticsearch/ElasticContainer.java
+++ b/src/test/java/com/google/gerrit/elasticsearch/ElasticContainer.java
@@ -42,19 +42,21 @@
   private static String getImageName(ElasticVersion version) {
     switch (version) {
       case V7_6:
-        return "blacktop/elasticsearch:7.6.2";
+        return "docker.elastic.co/elasticsearch/elasticsearch:7.6.2";
       case V7_7:
-        return "blacktop/elasticsearch:7.7.1";
+        return "docker.elastic.co/elasticsearch/elasticsearch:7.7.1";
       case V7_8:
-        return "blacktop/elasticsearch:7.8.1";
+        return "docker.elastic.co/elasticsearch/elasticsearch:7.8.1";
+      case V7_10:
+        return "docker.elastic.co/elasticsearch/elasticsearch:7.10.0";
+      case V7_16:
+        return "docker.elastic.co/elasticsearch/elasticsearch:7.16.2";
     }
     throw new IllegalStateException("No tests for version: " + version.name());
   }
 
   private ElasticContainer(ElasticVersion version) {
-    super(
-        DockerImageName.parse(getImageName(version))
-            .asCompatibleSubstituteFor("docker.elastic.co/elasticsearch/elasticsearch"));
+    super(DockerImageName.parse(getImageName(version)));
   }
 
   @Override
diff --git a/src/test/java/com/google/gerrit/elasticsearch/ElasticV7QueryAccountsTest.java b/src/test/java/com/google/gerrit/elasticsearch/ElasticV7QueryAccountsTest.java
index 30d07c7..6bdcf3c 100644
--- a/src/test/java/com/google/gerrit/elasticsearch/ElasticV7QueryAccountsTest.java
+++ b/src/test/java/com/google/gerrit/elasticsearch/ElasticV7QueryAccountsTest.java
@@ -41,7 +41,7 @@
   public static void startIndexService() {
     if (container == null) {
       // Only start Elasticsearch once
-      container = ElasticContainer.createAndStart(ElasticVersion.V7_8);
+      container = ElasticContainer.createAndStart(ElasticVersion.V7_16);
       client = HttpAsyncClients.createDefault();
       client.start();
     }
diff --git a/src/test/java/com/google/gerrit/elasticsearch/ElasticV7QueryChangesTest.java b/src/test/java/com/google/gerrit/elasticsearch/ElasticV7QueryChangesTest.java
index e7f1d1c..4929970 100644
--- a/src/test/java/com/google/gerrit/elasticsearch/ElasticV7QueryChangesTest.java
+++ b/src/test/java/com/google/gerrit/elasticsearch/ElasticV7QueryChangesTest.java
@@ -47,7 +47,7 @@
   public static void startIndexService() {
     if (container == null) {
       // Only start Elasticsearch once
-      container = ElasticContainer.createAndStart(ElasticVersion.V7_8);
+      container = ElasticContainer.createAndStart(ElasticVersion.V7_16);
       client = HttpAsyncClients.createDefault();
       client.start();
     }
diff --git a/src/test/java/com/google/gerrit/elasticsearch/ElasticV7QueryGroupsTest.java b/src/test/java/com/google/gerrit/elasticsearch/ElasticV7QueryGroupsTest.java
index 17fc0d2..c9c1e10 100644
--- a/src/test/java/com/google/gerrit/elasticsearch/ElasticV7QueryGroupsTest.java
+++ b/src/test/java/com/google/gerrit/elasticsearch/ElasticV7QueryGroupsTest.java
@@ -42,7 +42,7 @@
   public static void startIndexService() {
     if (container == null) {
       // Only start Elasticsearch once
-      container = ElasticContainer.createAndStart(ElasticVersion.V7_8);
+      container = ElasticContainer.createAndStart(ElasticVersion.V7_16);
       client = HttpAsyncClients.createDefault();
       client.start();
     }
diff --git a/src/test/java/com/google/gerrit/elasticsearch/ElasticV7QueryProjectsTest.java b/src/test/java/com/google/gerrit/elasticsearch/ElasticV7QueryProjectsTest.java
index f5524d7..e0383b0 100644
--- a/src/test/java/com/google/gerrit/elasticsearch/ElasticV7QueryProjectsTest.java
+++ b/src/test/java/com/google/gerrit/elasticsearch/ElasticV7QueryProjectsTest.java
@@ -42,7 +42,7 @@
   public static void startIndexService() {
     if (container == null) {
       // Only start Elasticsearch once
-      container = ElasticContainer.createAndStart(ElasticVersion.V7_8);
+      container = ElasticContainer.createAndStart(ElasticVersion.V7_16);
       client = HttpAsyncClients.createDefault();
       client.start();
     }
diff --git a/src/test/java/com/google/gerrit/elasticsearch/ElasticVersionTest.java b/src/test/java/com/google/gerrit/elasticsearch/ElasticVersionTest.java
index 2ce3a2c..19b7e31 100644
--- a/src/test/java/com/google/gerrit/elasticsearch/ElasticVersionTest.java
+++ b/src/test/java/com/google/gerrit/elasticsearch/ElasticVersionTest.java
@@ -30,6 +30,12 @@
 
     assertThat(ElasticVersion.forVersion("7.8.0")).isEqualTo(ElasticVersion.V7_8);
     assertThat(ElasticVersion.forVersion("7.8.1")).isEqualTo(ElasticVersion.V7_8);
+
+    assertThat(ElasticVersion.forVersion("7.10.0")).isEqualTo(ElasticVersion.V7_10);
+    assertThat(ElasticVersion.forVersion("7.10.1")).isEqualTo(ElasticVersion.V7_10);
+
+    assertThat(ElasticVersion.forVersion("7.16.0")).isEqualTo(ElasticVersion.V7_16);
+    assertThat(ElasticVersion.forVersion("7.16.1")).isEqualTo(ElasticVersion.V7_16);
   }
 
   @Test