Improve running spanner emulator in docker
- use GCloud testcontainer module [1] instead of generic container
- use SpannerEmulatorContainer [2] from the GCloud testcontainer module
- update testcontainers to 1.9.0
- rename the class preparing a database for SpannerGlobalRefdatabase to
EmulatedSpannerRefDatabase
[1] https://java.testcontainers.org/modules/gcloud/
[2] https://java.testcontainers.org/modules/gcloud/#spanner
Change-Id: I14decdce8c2d6bcf9a0af14f676fb530b23c97d5
diff --git a/BUILD b/BUILD
index 5b434d5..f4d80f3 100644
--- a/BUILD
+++ b/BUILD
@@ -120,10 +120,10 @@
"@docker-java-transport//jar",
"@duct-tape//jar",
"@global-refdb//jar",
+ "@google-auth-library-oauth2-http//jar",
"@google-cloud-core//jar",
"@google-cloud-spanner//jar",
- "@testcontainer-localstack//jar",
+ "@testcontainer-gcloud//jar",
"@testcontainers//jar",
- "@google-auth-library-oauth2-http//jar",
],
)
diff --git a/external_plugin_deps.bzl b/external_plugin_deps.bzl
index b4dba16..94f3ae3 100644
--- a/external_plugin_deps.bzl
+++ b/external_plugin_deps.bzl
@@ -417,18 +417,18 @@
artifact = "com.gerritforge:global-refdb:3.3.2.1",
)
- TESTCONTAINERS_VERSION = "1.18.3"
+ TESTCONTAINERS_VERSION = "1.19.0"
maven_jar(
name = "testcontainers",
artifact = "org.testcontainers:testcontainers:" + TESTCONTAINERS_VERSION,
- sha1 = "a82f6258f92d50d278b9c67bdf5eabcaa5c08654",
+ sha1 = "f7794a79339b2e35f6be6507987deb7f7e3c3c0d",
)
maven_jar(
- name = "testcontainer-localstack",
- artifact = "org.testcontainers:localstack:" + TESTCONTAINERS_VERSION,
- sha1 = "2b7a8d4522330217545c4234b916b6b77f5c6f95",
+ name = "testcontainer-gcloud",
+ artifact = "org.testcontainers:gcloud:" + TESTCONTAINERS_VERSION,
+ sha1 = "cea5741575fc8892f432991203aa8cbf8ddf85b4",
)
DOCKER_JAVA_VERS = "3.3.2"
diff --git a/src/test/java/com/googlesource/gerrit/plugins/spannerrefdb/SpannerEmulatorContainer.java b/src/test/java/com/googlesource/gerrit/plugins/spannerrefdb/EmulatedSpannerRefDb.java
similarity index 81%
rename from src/test/java/com/googlesource/gerrit/plugins/spannerrefdb/SpannerEmulatorContainer.java
rename to src/test/java/com/googlesource/gerrit/plugins/spannerrefdb/EmulatedSpannerRefDb.java
index 9ee1043..8b7fcfe 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/spannerrefdb/SpannerEmulatorContainer.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/spannerrefdb/EmulatedSpannerRefDb.java
@@ -39,29 +39,17 @@
import java.util.concurrent.ExecutionException;
import org.eclipse.jgit.lib.Config;
import org.junit.Ignore;
-import org.testcontainers.containers.GenericContainer;
-import org.testcontainers.containers.wait.strategy.Wait;
+import org.testcontainers.containers.SpannerEmulatorContainer;
+import org.testcontainers.utility.DockerImageName;
@Ignore
-public class SpannerEmulatorContainer {
- public static class Container extends GenericContainer<Container> {
- public static String EMULATOR_VERSION = "1.5.7";
-
- public Container() {
- super("gcr.io/cloud-spanner-emulator/emulator:" + EMULATOR_VERSION);
- }
- }
-
+public class EmulatedSpannerRefDb {
public static final String PROJECT_ID = "test";
public static final String SPANNER_INSTANCE_ID = "instance";
public static final String SPANNER_DATABASE_ID = "refdb";
- private static final int GRPC_PORT = 9010;
- private static final int REST_PORT = 9020;
private static final String pluginName = "spanner-refdb";
- private final Container container;
- private final Integer grpcPort;
- private final Integer restPort;
+ private final SpannerEmulatorContainer container;
private final Spanner spanner;
private final InstanceAdminClient instanceAdminClient;
@@ -72,18 +60,15 @@
private final Configuration pluginConfig;
@Inject
- @SuppressWarnings("resource")
- public SpannerEmulatorContainer() throws Exception {
+ public EmulatedSpannerRefDb() throws Exception {
container =
- new Container().withExposedPorts(GRPC_PORT, REST_PORT).waitingFor(Wait.forListeningPort());
+ new SpannerEmulatorContainer(
+ DockerImageName.parse("gcr.io/cloud-spanner-emulator/emulator").withTag("1.5.9"));
container.start();
- grpcPort = container.getMappedPort(GRPC_PORT);
- restPort = container.getMappedPort(REST_PORT);
System.out.println(
- "Spanner emulator container started and is listening on ports "
- + grpcPort
- + ", "
- + restPort);
+ String.format(
+ "Spanner emulator container started and is listening on %s",
+ container.getEmulatorGrpcEndpoint()));
spanner = getEmulatorOptions().getService();
instanceAdminClient = spanner.getInstanceAdminClient();
@@ -111,18 +96,10 @@
System.out.println("Spanner emulator container was stopped");
}
- public Container getContainer() {
+ public SpannerEmulatorContainer getContainer() {
return container;
}
- public Integer getGrpcPort() {
- return grpcPort;
- }
-
- public Integer getRestPort() {
- return restPort;
- }
-
public Database getSpannerDatabase() {
return spannerDatabase;
}
@@ -133,7 +110,7 @@
private SpannerOptions getEmulatorOptions() {
return SpannerOptions.newBuilder()
- .setEmulatorHost("localhost:" + getGrpcPort())
+ .setEmulatorHost(container.getEmulatorGrpcEndpoint())
.setCredentials(NoCredentials.getInstance())
.setProjectId(PROJECT_ID)
.build();
diff --git a/src/test/java/com/googlesource/gerrit/plugins/spannerrefdb/SpannerRefDatabaseTest.java b/src/test/java/com/googlesource/gerrit/plugins/spannerrefdb/SpannerRefDatabaseTest.java
index 751e7bc..607256b 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/spannerrefdb/SpannerRefDatabaseTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/spannerrefdb/SpannerRefDatabaseTest.java
@@ -30,12 +30,12 @@
public class SpannerRefDatabaseTest implements RefFixture {
- private SpannerEmulatorContainer emulator;
+ private EmulatedSpannerRefDb emulator;
private SpannerRefDatabase refdb;
@Before
public void setup() throws Exception {
- emulator = new SpannerEmulatorContainer();
+ emulator = new EmulatedSpannerRefDb();
refdb = emulator.getSpannerRefDatabase();
}