|
18 | 18 |
|
19 | 19 | import static org.junit.Assume.assumeTrue; |
20 | 20 |
|
| 21 | +import com.google.cloud.spanner.connection.SpannerPool; |
| 22 | +import org.junit.AfterClass; |
21 | 23 | import org.junit.BeforeClass; |
22 | 24 | import org.junit.Test; |
23 | 25 | import org.junit.runner.RunWith; |
24 | 26 | import org.junit.runners.JUnit4; |
| 27 | +import org.springframework.boot.SpringApplication; |
25 | 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; |
26 | 33 |
|
27 | 34 | @RunWith(JUnit4.class) |
28 | 35 | public class ApplicationEmulatorTest { |
| 36 | + private static GenericContainer<?> emulator; |
29 | 37 |
|
30 | 38 | @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 | + } |
34 | 57 | } |
35 | 58 |
|
36 | 59 | @Test |
37 | | - public void testRunApplicationOnEmulator() { |
| 60 | + public void testRunApplication() { |
| 61 | + System.setProperty("open_telemetry.enabled", "false"); |
| 62 | + System.setProperty("open_telemetry.project", "test-project"); |
38 | 63 | 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(); |
41 | 68 | } |
42 | 69 | } |
0 commit comments