diff --git a/google-cloud-jar-parent/pom.xml b/google-cloud-jar-parent/pom.xml
index 285459cad823..2e8868b2d5d7 100644
--- a/google-cloud-jar-parent/pom.xml
+++ b/google-cloud-jar-parent/pom.xml
@@ -227,6 +227,7 @@
1C
true
+ 1200
diff --git a/java-storage/google-cloud-storage/pom.xml b/java-storage/google-cloud-storage/pom.xml
index 892fd729b9ae..cef251b77c0e 100644
--- a/java-storage/google-cloud-storage/pom.xml
+++ b/java-storage/google-cloud-storage/pom.xml
@@ -460,6 +460,23 @@
+
+ org.apache.maven.plugins
+ maven-failsafe-plugin
+
+ 1C
+ true
+ 600
+
+
+
+
+ integration-test
+ verify
+
+
+
+
diff --git a/java-storage/google-cloud-storage/src/test/java/com/google/cloud/storage/it/runner/registry/MetadataService.java b/java-storage/google-cloud-storage/src/test/java/com/google/cloud/storage/it/runner/registry/MetadataService.java
index b668a4936c26..f27046cc5d03 100644
--- a/java-storage/google-cloud-storage/src/test/java/com/google/cloud/storage/it/runner/registry/MetadataService.java
+++ b/java-storage/google-cloud-storage/src/test/java/com/google/cloud/storage/it/runner/registry/MetadataService.java
@@ -42,6 +42,8 @@ final class MetadataService {
.createRequestFactory(
request -> {
request.setCurlLoggingEnabled(false);
+ request.setConnectTimeout(1000);
+ request.setReadTimeout(2000);
request.getHeaders().set("Metadata-Flavor", "Google");
}));
private static final String baseUri = "http://metadata.google.internal";
diff --git a/java-storage/google-cloud-storage/src/test/java/com/google/cloud/storage/it/runner/registry/TestBench.java b/java-storage/google-cloud-storage/src/test/java/com/google/cloud/storage/it/runner/registry/TestBench.java
index 4d9340762093..493f51f8cc50 100644
--- a/java-storage/google-cloud-storage/src/test/java/com/google/cloud/storage/it/runner/registry/TestBench.java
+++ b/java-storage/google-cloud-storage/src/test/java/com/google/cloud/storage/it/runner/registry/TestBench.java
@@ -128,6 +128,8 @@ private TestBench(
.createRequestFactory(
request -> {
request.setCurlLoggingEnabled(false);
+ request.setConnectTimeout(5000);
+ request.setReadTimeout(10000);
request.getHeaders().setAccept("application/json");
request
.getHeaders()
@@ -487,6 +489,14 @@ static final class Builder {
private static final String DEFAULT_CONTAINER_NAME = "default";
+ private static int findFreePort() {
+ try (java.net.ServerSocket socket = new java.net.ServerSocket(0)) {
+ return socket.getLocalPort();
+ } catch (IOException e) {
+ throw new RuntimeException("No free port available", e);
+ }
+ }
+
private boolean ignorePullError;
private String baseUri;
private String gRPCBaseUri;
@@ -497,8 +507,8 @@ static final class Builder {
private Builder() {
this(
false,
- DEFAULT_BASE_URI,
- DEFAULT_GRPC_BASE_URI,
+ "http://localhost:" + findFreePort(),
+ "http://localhost:" + findFreePort(),
DEFAULT_IMAGE_NAME,
DEFAULT_IMAGE_TAG,
DEFAULT_CONTAINER_NAME);
@@ -550,13 +560,15 @@ public Builder setContainerName(String containerName) {
}
public TestBench build() {
+ String suffix = Optional.ofNullable(System.getProperty("surefire.forkNumber"))
+ .orElseGet(() -> java.util.UUID.randomUUID().toString().substring(0, 8));
return new TestBench(
ignorePullError,
baseUri,
gRPCBaseUri,
requireNonNull(dockerImageName, "dockerImageName must be non null"),
requireNonNull(dockerImageTag, "dockerImageTag must be non null"),
- String.format(Locale.US, "storage-testbench_%s", containerName));
+ String.format(Locale.US, "storage-testbench_%s_%s", containerName, suffix));
}
}