Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 21 additions & 21 deletions docs/modules/gcloud.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,131 +23,131 @@ PubSubEmulatorContainer | [gcr.io/google.com/cloudsdktool/google-cloud-cli:emula
Start BigQuery Emulator during a test:

<!--codeinclude-->
[Starting a BigQuery Emulator container](../../modules/gcloud/src/test/java/org/testcontainers/containers/BigQueryEmulatorContainerTest.java) inside_block:emulatorContainer
[Starting a BigQuery Emulator container](../../modules/gcloud/src/test/java/org/testcontainers/gcloud/BigQueryEmulatorContainerTest.java) inside_block:emulatorContainer
<!--/codeinclude-->

<!--codeinclude-->
[Creating BigQuery Client](../../modules/gcloud/src/test/java/org/testcontainers/containers/BigQueryEmulatorContainerTest.java) inside_block:bigQueryClient
[Creating BigQuery Client](../../modules/gcloud/src/test/java/org/testcontainers/gcloud/BigQueryEmulatorContainerTest.java) inside_block:bigQueryClient
<!--/codeinclude-->

### Bigtable

Start Bigtable Emulator during a test:

<!--codeinclude-->
[Starting a Bigtable Emulator container](../../modules/gcloud/src/test/java/org/testcontainers/containers/BigtableEmulatorContainerTest.java) inside_block:emulatorContainer
[Starting a Bigtable Emulator container](../../modules/gcloud/src/test/java/org/testcontainers/gcloud/BigtableEmulatorContainerTest.java) inside_block:emulatorContainer
<!--/codeinclude-->

Create a test Bigtable table in the Emulator:

<!--codeinclude-->
[Create a test table](../../modules/gcloud/src/test/java/org/testcontainers/containers/BigtableEmulatorContainerTest.java) inside_block:createTable
[Create a test table](../../modules/gcloud/src/test/java/org/testcontainers/gcloud/BigtableEmulatorContainerTest.java) inside_block:createTable
<!--/codeinclude-->

Test against the Emulator:

<!--codeinclude-->
[Testing with a Bigtable Emulator container](../../modules/gcloud/src/test/java/org/testcontainers/containers/BigtableEmulatorContainerTest.java) inside_block:testWithEmulatorContainer
[Testing with a Bigtable Emulator container](../../modules/gcloud/src/test/java/org/testcontainers/gcloud/BigtableEmulatorContainerTest.java) inside_block:testWithEmulatorContainer
<!--/codeinclude-->

### Datastore

Start Datastore Emulator during a test:

<!--codeinclude-->
[Starting a Datastore Emulator container](../../modules/gcloud/src/test/java/org/testcontainers/containers/DatastoreEmulatorContainerTest.java) inside_block:creatingDatastoreEmulatorContainer
[Starting a Datastore Emulator container](../../modules/gcloud/src/test/java/org/testcontainers/gcloud/DatastoreEmulatorContainerTest.java) inside_block:creatingDatastoreEmulatorContainer
<!--/codeinclude-->

And test against the Emulator:

<!--codeinclude-->
[Testing with a Datastore Emulator container](../../modules/gcloud/src/test/java/org/testcontainers/containers/DatastoreEmulatorContainerTest.java) inside_block:startingDatastoreEmulatorContainer
[Testing with a Datastore Emulator container](../../modules/gcloud/src/test/java/org/testcontainers/gcloud/DatastoreEmulatorContainerTest.java) inside_block:startingDatastoreEmulatorContainer
<!--/codeinclude-->

See more examples:

* [Full sample code](https://github.com/testcontainers/testcontainers-java/tree/main/modules/gcloud/src/test/java/org/testcontainers/containers/DatastoreEmulatorContainerTest.java)
* [Full sample code](https://github.com/testcontainers/testcontainers-java/tree/main/modules/gcloud/src/test/java/org/testcontainers/gcloud/DatastoreEmulatorContainerTest.java)
* [With Spring Boot](https://github.com/saturnism/testcontainers-gcloud-examples/tree/main/springboot/datastore-example/src/test/java/com/example/springboot/datastore)

### Firestore

Start Firestore Emulator during a test:

<!--codeinclude-->
[Starting a Firestore Emulator container](../../modules/gcloud/src/test/java/org/testcontainers/containers/FirestoreEmulatorContainerTest.java) inside_block:emulatorContainer
[Starting a Firestore Emulator container](../../modules/gcloud/src/test/java/org/testcontainers/gcloud/FirestoreEmulatorContainerTest.java) inside_block:emulatorContainer
<!--/codeinclude-->

And test against the Emulator:

<!--codeinclude-->
[Testing with a Firestore Emulator container](../../modules/gcloud/src/test/java/org/testcontainers/containers/FirestoreEmulatorContainerTest.java) inside_block:testWithEmulatorContainer
[Testing with a Firestore Emulator container](../../modules/gcloud/src/test/java/org/testcontainers/gcloud/FirestoreEmulatorContainerTest.java) inside_block:testWithEmulatorContainer
<!--/codeinclude-->

See more examples:

* [Full sample code](https://github.com/testcontainers/testcontainers-java/tree/main/modules/gcloud/src/test/java/org/testcontainers/containers/FirestoreEmulatorContainerTest.java)
* [Full sample code](https://github.com/testcontainers/testcontainers-java/tree/main/modules/gcloud/src/test/java/org/testcontainers/gcloud/FirestoreEmulatorContainerTest.java)
* [With Spring Boot](https://github.com/saturnism/testcontainers-gcloud-examples/tree/main/springboot/firestore-example/src/test/java/com/example/springboot/firestore/FirestoreIntegrationTests.java)

### Spanner

Start Spanner Emulator during a test:

<!--codeinclude-->
[Starting a Spanner Emulator container](../../modules/gcloud/src/test/java/org/testcontainers/containers/SpannerEmulatorContainerTest.java) inside_block:emulatorContainer
[Starting a Spanner Emulator container](../../modules/gcloud/src/test/java/org/testcontainers/gcloud/SpannerEmulatorContainerTest.java) inside_block:emulatorContainer
<!--/codeinclude-->

Create a test Spanner Instance in the Emulator:

<!--codeinclude-->
[Create a test Spanner instance](../../modules/gcloud/src/test/java/org/testcontainers/containers/SpannerEmulatorContainerTest.java) inside_block:createInstance
[Create a test Spanner instance](../../modules/gcloud/src/test/java/org/testcontainers/gcloud/SpannerEmulatorContainerTest.java) inside_block:createInstance
<!--/codeinclude-->

Create a test Database in the Emulator:

<!--codeinclude-->
[Creating a test Spanner database](../../modules/gcloud/src/test/java/org/testcontainers/containers/SpannerEmulatorContainerTest.java) inside_block:createDatabase
[Creating a test Spanner database](../../modules/gcloud/src/test/java/org/testcontainers/gcloud/SpannerEmulatorContainerTest.java) inside_block:createDatabase
<!--/codeinclude-->

And test against the Emulator:

<!--codeinclude-->
[Testing with a Spanner Emulator container](../../modules/gcloud/src/test/java/org/testcontainers/containers/SpannerEmulatorContainerTest.java) inside_block:testWithEmulatorContainer
[Testing with a Spanner Emulator container](../../modules/gcloud/src/test/java/org/testcontainers/gcloud/SpannerEmulatorContainerTest.java) inside_block:testWithEmulatorContainer
<!--/codeinclude-->

See more examples:

* [Full sample code](https://github.com/testcontainers/testcontainers-java/tree/main/modules/gcloud/src/test/java/org/testcontainers/containers/SpannerEmulatorContainerTest.java)
* [Full sample code](https://github.com/testcontainers/testcontainers-java/tree/main/modules/gcloud/src/test/java/org/testcontainers/gcloud/SpannerEmulatorContainerTest.java)
* [With Spring Boot](https://github.com/saturnism/testcontainers-gcloud-examples/tree/main/springboot/spanner-example/src/test/java/com/example/springboot/spanner/SpannerIntegrationTests.java)

### Pub/Sub

Start Pub/Sub Emulator during a test:

<!--codeinclude-->
[Starting a Pub/Sub Emulator container](../../modules/gcloud/src/test/java/org/testcontainers/containers/PubSubEmulatorContainerTest.java) inside_block:emulatorContainer
[Starting a Pub/Sub Emulator container](../../modules/gcloud/src/test/java/org/testcontainers/gcloud/PubSubEmulatorContainerTest.java) inside_block:emulatorContainer
<!--/codeinclude-->

Create a test Pub/Sub topic in the Emulator:

<!--codeinclude-->
[Create a test topic](../../modules/gcloud/src/test/java/org/testcontainers/containers/PubSubEmulatorContainerTest.java) inside_block:createTopic
[Create a test topic](../../modules/gcloud/src/test/java/org/testcontainers/gcloud/PubSubEmulatorContainerTest.java) inside_block:createTopic
<!--/codeinclude-->

Create a test Pub/Sub subscription in the Emulator:

<!--codeinclude-->
[Create a test subscription](../../modules/gcloud/src/test/java/org/testcontainers/containers/PubSubEmulatorContainerTest.java) inside_block:createSubscription
[Create a test subscription](../../modules/gcloud/src/test/java/org/testcontainers/gcloud/PubSubEmulatorContainerTest.java) inside_block:createSubscription
<!--/codeinclude-->

And test against the Emulator:

<!--codeinclude-->
[Testing with a Pub/Sub Emulator container](../../modules/gcloud/src/test/java/org/testcontainers/containers/PubSubEmulatorContainerTest.java) inside_block:testWithEmulatorContainer
[Testing with a Pub/Sub Emulator container](../../modules/gcloud/src/test/java/org/testcontainers/gcloud/PubSubEmulatorContainerTest.java) inside_block:testWithEmulatorContainer
<!--/codeinclude-->

See more examples:

* [Full sample code](https://github.com/testcontainers/testcontainers-java/tree/main/modules/gcloud/src/test/java/org/testcontainers/containers/PubSubEmulatorContainerTest.java)
* [Full sample code](https://github.com/testcontainers/testcontainers-java/tree/main/modules/gcloud/src/test/java/org/testcontainers/gcloud/PubSubEmulatorContainerTest.java)
* [With Spring Boot](https://github.com/saturnism/testcontainers-gcloud-examples/tree/main/springboot/pubsub-example/src/test/java/com/example/springboot/pubsub/PubSubIntegrationTests.java)

## Adding this module to your project dependencies
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,10 @@
* <p>
* Supported image: {@code ghcr.io/goccy/bigquery-emulator}
* <p>
*
* @deprecated use {@link org.testcontainers.gcloud.BigQueryEmulatorContainer} instead.
*/
@Deprecated
public class BigQueryEmulatorContainer extends GenericContainer<BigQueryEmulatorContainer> {

private static final DockerImageName DEFAULT_IMAGE_NAME = DockerImageName.parse("ghcr.io/goccy/bigquery-emulator");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,10 @@
* Supported images: {@code gcr.io/google.com/cloudsdktool/google-cloud-cli}, {@code gcr.io/google.com/cloudsdktool/cloud-sdk}
* <p>
* Default port is 9000.
*
* @deprecated use {@link org.testcontainers.gcloud.BigtableEmulatorContainer} instead.
*/
@Deprecated
public class BigtableEmulatorContainer extends GenericContainer<BigtableEmulatorContainer> {

private static final DockerImageName DEFAULT_IMAGE_NAME = DockerImageName.parse(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,10 @@
* Supported images: {@code gcr.io/google.com/cloudsdktool/google-cloud-cli}, {@code gcr.io/google.com/cloudsdktool/cloud-sdk}
* <p>
* Default port is 8081.
*
* @deprecated use {@link org.testcontainers.gcloud.DatastoreEmulatorContainer} instead.
*/
@Deprecated
public class DatastoreEmulatorContainer extends GenericContainer<DatastoreEmulatorContainer> {

private static final DockerImageName DEFAULT_IMAGE_NAME = DockerImageName.parse(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,10 @@
* Supported images: {@code gcr.io/google.com/cloudsdktool/google-cloud-cli}, {@code gcr.io/google.com/cloudsdktool/cloud-sdk}
* <p>
* Default port is 8080.
*
* @deprecated use {@link org.testcontainers.gcloud.FirestoreEmulatorContainer} instead.
*/
@Deprecated
public class FirestoreEmulatorContainer extends GenericContainer<FirestoreEmulatorContainer> {

private static final DockerImageName DEFAULT_IMAGE_NAME = DockerImageName.parse(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,10 @@
* Supported images: {@code gcr.io/google.com/cloudsdktool/google-cloud-cli}, {@code gcr.io/google.com/cloudsdktool/cloud-sdk}
* <p>
* Default port is 8085.
*
* @deprecated use {@link org.testcontainers.gcloud.PubSubEmulatorContainer} instead.
*/
@Deprecated
public class PubSubEmulatorContainer extends GenericContainer<PubSubEmulatorContainer> {

private static final DockerImageName DEFAULT_IMAGE_NAME = DockerImageName.parse(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,10 @@
* A Spanner container. Default ports: 9010 for GRPC and 9020 for HTTP.
* <p>
* Supported image: {@code gcr.io/cloud-spanner-emulator/emulator}
*
* @deprecated use {@link org.testcontainers.gcloud.SpannerEmulatorContainer} instead.
*/
@Deprecated
public class SpannerEmulatorContainer extends GenericContainer<SpannerEmulatorContainer> {

private static final DockerImageName DEFAULT_IMAGE_NAME = DockerImageName.parse(
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package org.testcontainers.gcloud;

import org.testcontainers.containers.GenericContainer;
import org.testcontainers.utility.DockerImageName;

/**
* Testcontainers implementation for BigQuery.
* <p>
* Supported image: {@code ghcr.io/goccy/bigquery-emulator}
* <p>
*/
public class BigQueryEmulatorContainer extends GenericContainer<BigQueryEmulatorContainer> {

private static final DockerImageName DEFAULT_IMAGE_NAME = DockerImageName.parse("ghcr.io/goccy/bigquery-emulator");

private static final int HTTP_PORT = 9050;

private static final int GRPC_PORT = 9060;

private static final String PROJECT_ID = "test-project";

public BigQueryEmulatorContainer(String image) {
this(DockerImageName.parse(image));
}

public BigQueryEmulatorContainer(DockerImageName dockerImageName) {
super(dockerImageName);
dockerImageName.assertCompatibleWith(DEFAULT_IMAGE_NAME);
addExposedPorts(HTTP_PORT, GRPC_PORT);
withCommand("--project", PROJECT_ID);
}

public String getEmulatorHttpEndpoint() {
return String.format("http://%s:%d", getHost(), getMappedPort(HTTP_PORT));
}

public Integer getEmulatorGrpcPort() {
return getMappedPort(GRPC_PORT);
}

public String getProjectId() {
return PROJECT_ID;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
package org.testcontainers.gcloud;

import org.testcontainers.containers.GenericContainer;
import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.utility.DockerImageName;

/**
* A Bigtable container that relies in google cloud sdk.
* <p>
* Supported images: {@code gcr.io/google.com/cloudsdktool/google-cloud-cli}, {@code gcr.io/google.com/cloudsdktool/cloud-sdk}
* <p>
* Default port is 9000.
*/
public class BigtableEmulatorContainer extends GenericContainer<BigtableEmulatorContainer> {

private static final DockerImageName DEFAULT_IMAGE_NAME = DockerImageName.parse(
"gcr.io/google.com/cloudsdktool/google-cloud-cli"
);

private static final DockerImageName CLOUD_SDK_IMAGE_NAME = DockerImageName.parse(
"gcr.io/google.com/cloudsdktool/cloud-sdk"
);

private static final String CMD = "gcloud beta emulators bigtable start --host-port 0.0.0.0:9000";

private static final int PORT = 9000;

public BigtableEmulatorContainer(String image) {
this(DockerImageName.parse(image));
}

public BigtableEmulatorContainer(final DockerImageName dockerImageName) {
super(dockerImageName);
dockerImageName.assertCompatibleWith(DEFAULT_IMAGE_NAME, CLOUD_SDK_IMAGE_NAME);

withExposedPorts(PORT);
setWaitStrategy(Wait.forLogMessage(".*running.*$", 1));
withCommand("/bin/sh", "-c", CMD);
}

/**
* @return a <code>host:port</code> pair corresponding to the address on which the emulator is
* reachable from the test host machine. Directly usable as a parameter to the
* com.google.cloud.ServiceOptions.Builder#setHost(java.lang.String) method.
*/
public String getEmulatorEndpoint() {
return getHost() + ":" + getEmulatorPort();
}

public int getEmulatorPort() {
return getMappedPort(PORT);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
package org.testcontainers.gcloud;

import org.testcontainers.containers.GenericContainer;
import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.utility.DockerImageName;

/**
* A Datastore container that relies in google cloud sdk.
* <p>
* Supported images: {@code gcr.io/google.com/cloudsdktool/google-cloud-cli}, {@code gcr.io/google.com/cloudsdktool/cloud-sdk}
* <p>
* Default port is 8081.
*/
public class DatastoreEmulatorContainer extends GenericContainer<DatastoreEmulatorContainer> {

private static final DockerImageName DEFAULT_IMAGE_NAME = DockerImageName.parse(
"gcr.io/google.com/cloudsdktool/google-cloud-cli"
);

private static final DockerImageName CLOUD_SDK_IMAGE_NAME = DockerImageName.parse(
"gcr.io/google.com/cloudsdktool/cloud-sdk"
);

private static final String PROJECT_ID = "test-project";

private static final String CMD = String.format(
"gcloud beta emulators datastore start --project %s --host-port 0.0.0.0:8081",
PROJECT_ID
);

private static final int HTTP_PORT = 8081;

private String flags;

public DatastoreEmulatorContainer(final String image) {
this(DockerImageName.parse(image));
}

public DatastoreEmulatorContainer(final DockerImageName dockerImageName) {
super(dockerImageName);
dockerImageName.assertCompatibleWith(DEFAULT_IMAGE_NAME, CLOUD_SDK_IMAGE_NAME);

withExposedPorts(HTTP_PORT);
setWaitStrategy(Wait.forHttp("/").forStatusCode(200));
}

@Override
protected void configure() {
String command = CMD;
if (this.flags != null && !this.flags.isEmpty()) {
command += " " + this.flags;
}
withCommand("/bin/sh", "-c", command);
}

public DatastoreEmulatorContainer withFlags(String flags) {
this.flags = flags;
return this;
}

/**
* @return a <code>host:port</code> pair corresponding to the address on which the emulator is
* reachable from the test host machine. Directly usable as a parameter to the
* com.google.cloud.ServiceOptions.Builder#setHost(java.lang.String) method.
*/
public String getEmulatorEndpoint() {
return getHost() + ":" + getMappedPort(HTTP_PORT);
}

public String getProjectId() {
return PROJECT_ID;
}
}
Loading
Loading