在maven中添加Testcontainers依赖项,并使用以下代码创建和启动BigQuery仿真器容器(使用Java语言):
public class BigQueryContainer extends Testcontainers {
private static final String IMAGE_NAME = "gcr.io/google.com/cloudsdktool/cloud-sdk:latest";
private static final String EMULATOR_CMD = "/bin/sh -c 'gcloud beta emulators bigtable start --host-port=0.0.0.0:8080 && gcloud beta emulators bigtable env-init'";
private static GenericContainer> container;
public static void startBigQuery() {
if (container == null) {
container = new GenericContainer<>(IMAGE_NAME)
.withCommand(EMULATOR_CMD)
.withExposedPorts(8080)
.withEnv("BIGTABLE_EMULATOR_HOST", "localhost:8080")
.waitingFor(Wait.forLogMessage(".*started.*\\n", 1))
.withLogConsumer(new Slf4jLogConsumer(LoggerFactory.getLogger(BigQueryContainer.class)));
container.start();
System.setProperty("BIGTABLE_EMULATOR_HOST", container.getHost() + ":" + container.getFirstMappedPort());
}
}
public static void stopBigQuery() {
if (container != null) {
container.stop();
container = null;
}
}
}
在测试中,你可以使用以下代码启动和停止BigQuery仿真器容器:
@BeforeAll
public static void startBigQuery() {
BigQueryContainer.startBigQuery();
}
@AfterAll
public static void stopBigQuery() {
BigQueryContainer.stopBigQuery();
}
这将为你提供一个运行BigQuery仿真器的容器,并允许你在测试中使用Testcontainers。
注意:这个示例假定你已经在本地安装了Google Cloud SDK。
以上代码示例来源于此处。