Skip to content

Commit 40d5d98

Browse files
committed
test(spanner-jdbc): unflake sample tests
1 parent f6db9ea commit 40d5d98

2 files changed

Lines changed: 72 additions & 8 deletions

File tree

java-spanner-jdbc/samples/spring-data-mybatis/googlesql/src/test/java/com/google/cloud/spanner/sample/ApplicationEmulatorTest.java

Lines changed: 33 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,25 +18,52 @@
1818

1919
import static org.junit.Assume.assumeTrue;
2020

21+
import com.google.cloud.spanner.connection.SpannerPool;
22+
import org.junit.AfterClass;
2123
import org.junit.BeforeClass;
2224
import org.junit.Test;
2325
import org.junit.runner.RunWith;
2426
import org.junit.runners.JUnit4;
27+
import org.springframework.boot.SpringApplication;
2528
import org.testcontainers.DockerClientFactory;
29+
import org.testcontainers.containers.GenericContainer;
30+
import org.testcontainers.containers.wait.strategy.Wait;
31+
import org.testcontainers.images.PullPolicy;
32+
import org.testcontainers.utility.DockerImageName;
2633

2734
@RunWith(JUnit4.class)
2835
public class ApplicationEmulatorTest {
36+
private static GenericContainer<?> emulator;
2937

3038
@BeforeClass
31-
public static void checkDocker() {
32-
assumeTrue(
33-
"Docker is required for this test", DockerClientFactory.instance().isDockerAvailable());
39+
public static void startEmulator() {
40+
assumeTrue(DockerClientFactory.instance().isDockerAvailable());
41+
42+
emulator =
43+
new GenericContainer<>(
44+
DockerImageName.parse("gcr.io/cloud-spanner-emulator/emulator:latest"))
45+
.withImagePullPolicy(PullPolicy.alwaysPull())
46+
.withExposedPorts(9010)
47+
.waitingFor(Wait.forLogMessage(".*gRPC server listening at.*\\n", 1));
48+
emulator.start();
49+
}
50+
51+
@AfterClass
52+
public static void cleanup() {
53+
SpannerPool.closeSpannerPool();
54+
if (emulator != null) {
55+
emulator.stop();
56+
}
3457
}
3558

3659
@Test
37-
public void testRunApplicationOnEmulator() {
60+
public void testRunApplication() {
61+
System.setProperty("open_telemetry.enabled", "false");
62+
System.setProperty("open_telemetry.project", "test-project");
3863
System.setProperty("spanner.emulator", "true");
39-
System.setProperty("spanner.auto_start_emulator", "true");
40-
Application.main(new String[] {});
64+
System.setProperty("spanner.auto_start_emulator", "false");
65+
System.setProperty(
66+
"spanner.endpoint", String.format("//localhost:%d", emulator.getMappedPort(9010)));
67+
SpringApplication.run(Application.class).close();
4168
}
4269
}

java-spanner-jdbc/samples/spring-data-mybatis/postgresql/src/test/java/com/google/cloud/spanner/sample/ApplicationEmulatorTest.java

Lines changed: 39 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,53 @@
1616

1717
package com.google.cloud.spanner.sample;
1818

19+
import static org.junit.Assume.assumeTrue;
20+
21+
import com.google.cloud.spanner.connection.SpannerPool;
22+
import org.junit.AfterClass;
23+
import org.junit.BeforeClass;
1924
import org.junit.Test;
2025
import org.junit.runner.RunWith;
2126
import org.junit.runners.JUnit4;
27+
import org.springframework.boot.SpringApplication;
28+
import org.testcontainers.DockerClientFactory;
29+
import org.testcontainers.containers.GenericContainer;
30+
import org.testcontainers.containers.wait.strategy.Wait;
31+
import org.testcontainers.images.PullPolicy;
32+
import org.testcontainers.utility.DockerImageName;
2233

2334
@RunWith(JUnit4.class)
2435
public class ApplicationEmulatorTest {
36+
private static GenericContainer<?> emulator;
37+
38+
@BeforeClass
39+
public static void startEmulator() {
40+
assumeTrue(DockerClientFactory.instance().isDockerAvailable());
41+
42+
emulator =
43+
new GenericContainer<>(
44+
DockerImageName.parse("gcr.io/cloud-spanner-emulator/emulator:latest"))
45+
.withImagePullPolicy(PullPolicy.alwaysPull())
46+
.withExposedPorts(9010)
47+
.waitingFor(Wait.forLogMessage(".*gRPC server listening at.*\\n", 1));
48+
emulator.start();
49+
}
50+
51+
@AfterClass
52+
public static void cleanup() {
53+
SpannerPool.closeSpannerPool();
54+
if (emulator != null) {
55+
emulator.stop();
56+
}
57+
}
2558

2659
@Test
27-
public void testRunApplicationOnEmulator() {
60+
public void testRunApplication() {
61+
System.setProperty("open_telemetry.enabled", "false");
62+
System.setProperty("open_telemetry.project", "test-project");
2863
System.setProperty("spanner.emulator", "true");
29-
Application.main(new String[] {});
64+
System.setProperty(
65+
"spanner.endpoint", String.format("//localhost:%d", emulator.getMappedPort(9010)));
66+
SpringApplication.run(Application.class).close();
3067
}
3168
}

0 commit comments

Comments
 (0)