diff --git a/google-cloud-nio/pom.xml b/google-cloud-nio/pom.xml
index 8cc3169c1e..56ece011e8 100644
--- a/google-cloud-nio/pom.xml
+++ b/google-cloud-nio/pom.xml
@@ -82,6 +82,13 @@
1.3
test
+
+ com.google.cloud
+ google-cloud-core
+ 1.94.0
+ test
+ tests
+
diff --git a/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/CloudStorageConfigurationTest.java b/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/CloudStorageConfigurationTest.java
index b71926981f..d771562332 100644
--- a/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/CloudStorageConfigurationTest.java
+++ b/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/CloudStorageConfigurationTest.java
@@ -18,10 +18,12 @@
import static com.google.common.truth.Truth.assertThat;
+import com.google.cloud.testing.junit4.MultipleAttemptsRule;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import java.net.SocketTimeoutException;
import org.junit.Assert;
+import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@@ -30,6 +32,8 @@
@RunWith(JUnit4.class)
public class CloudStorageConfigurationTest {
+ @Rule public final MultipleAttemptsRule multipleAttemptsRule = new MultipleAttemptsRule(3);
+
@Test
public void testBuilder() {
CloudStorageConfiguration config =
diff --git a/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/CloudStorageFileAttributeViewTest.java b/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/CloudStorageFileAttributeViewTest.java
index be601e8885..5fb915424b 100644
--- a/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/CloudStorageFileAttributeViewTest.java
+++ b/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/CloudStorageFileAttributeViewTest.java
@@ -20,6 +20,7 @@
import static java.nio.charset.StandardCharsets.UTF_8;
import com.google.cloud.storage.contrib.nio.testing.LocalStorageHelper;
+import com.google.cloud.testing.junit4.MultipleAttemptsRule;
import com.google.common.testing.EqualsTester;
import com.google.common.testing.NullPointerTester;
import java.io.IOException;
@@ -31,6 +32,7 @@
import java.nio.file.attribute.FileTime;
import org.junit.Assert;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@@ -38,6 +40,7 @@
/** Unit tests for {@link CloudStorageFileAttributeView}. */
@RunWith(JUnit4.class)
public class CloudStorageFileAttributeViewTest {
+ @Rule public final MultipleAttemptsRule multipleAttemptsRule = new MultipleAttemptsRule(3);
private static final byte[] HAPPY = "(✿◕ ‿◕ )ノ".getBytes(UTF_8);
diff --git a/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/CloudStorageFileAttributesTest.java b/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/CloudStorageFileAttributesTest.java
index 041c66670f..9f0914dc08 100644
--- a/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/CloudStorageFileAttributesTest.java
+++ b/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/CloudStorageFileAttributesTest.java
@@ -21,6 +21,7 @@
import com.google.cloud.storage.Acl;
import com.google.cloud.storage.contrib.nio.testing.LocalStorageHelper;
+import com.google.cloud.testing.junit4.MultipleAttemptsRule;
import com.google.common.testing.EqualsTester;
import com.google.common.testing.NullPointerTester;
import java.io.IOException;
@@ -29,6 +30,7 @@
import java.nio.file.Path;
import java.nio.file.Paths;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@@ -36,6 +38,7 @@
/** Unit tests for {@link CloudStorageFileAttributes}. */
@RunWith(JUnit4.class)
public class CloudStorageFileAttributesTest {
+ @Rule public final MultipleAttemptsRule multipleAttemptsRule = new MultipleAttemptsRule(3);
private static final byte[] HAPPY = "(✿◕ ‿◕ )ノ".getBytes(UTF_8);
private static final byte[] EMPTY = "".getBytes(UTF_8);
diff --git a/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/CloudStorageFileSystemProviderTest.java b/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/CloudStorageFileSystemProviderTest.java
index a8b9d041de..4afce170c4 100644
--- a/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/CloudStorageFileSystemProviderTest.java
+++ b/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/CloudStorageFileSystemProviderTest.java
@@ -28,6 +28,7 @@
import static java.nio.file.StandardOpenOption.WRITE;
import com.google.cloud.storage.contrib.nio.testing.LocalStorageHelper;
+import com.google.cloud.testing.junit4.MultipleAttemptsRule;
import com.google.common.collect.ImmutableList;
import com.google.common.testing.NullPointerTester;
import java.io.IOException;
@@ -53,6 +54,7 @@
import java.util.Map;
import org.junit.Assert;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@@ -60,6 +62,7 @@
/** Unit tests for {@link CloudStorageFileSystemProvider}. */
@RunWith(JUnit4.class)
public class CloudStorageFileSystemProviderTest {
+ @Rule public final MultipleAttemptsRule multipleAttemptsRule = new MultipleAttemptsRule(3);
private static final List FILE_CONTENTS =
ImmutableList.of(
diff --git a/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/CloudStorageFileSystemTest.java b/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/CloudStorageFileSystemTest.java
index 966bf994a8..35b2e50fbd 100644
--- a/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/CloudStorageFileSystemTest.java
+++ b/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/CloudStorageFileSystemTest.java
@@ -25,6 +25,7 @@
import com.google.cloud.storage.StorageOptions;
import com.google.cloud.storage.contrib.nio.testing.LocalStorageHelper;
+import com.google.cloud.testing.junit4.MultipleAttemptsRule;
import com.google.common.testing.EqualsTester;
import com.google.common.testing.NullPointerTester;
import java.io.IOException;
@@ -43,6 +44,7 @@
import java.util.List;
import org.junit.Assert;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@@ -50,6 +52,7 @@
/** Unit tests for {@link CloudStorageFileSystem}. */
@RunWith(JUnit4.class)
public class CloudStorageFileSystemTest {
+ @Rule public final MultipleAttemptsRule multipleAttemptsRule = new MultipleAttemptsRule(3);
private static final String ALONE =
"To be, or not to be, that is the question—\n"
diff --git a/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/CloudStorageLateInitializationTest.java b/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/CloudStorageLateInitializationTest.java
index 0885eb76c1..8142a31212 100644
--- a/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/CloudStorageLateInitializationTest.java
+++ b/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/CloudStorageLateInitializationTest.java
@@ -24,8 +24,10 @@
import com.google.cloud.storage.Storage;
import com.google.cloud.storage.StorageOptions;
+import com.google.cloud.testing.junit4.MultipleAttemptsRule;
import java.net.URI;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@@ -33,6 +35,7 @@
/** Unit tests for {@link CloudStorageFileSystemProvider} late initialization. */
@RunWith(JUnit4.class)
public class CloudStorageLateInitializationTest {
+ @Rule public final MultipleAttemptsRule multipleAttemptsRule = new MultipleAttemptsRule(3);
private StorageOptions mockOptions;
diff --git a/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/CloudStorageOptionsTest.java b/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/CloudStorageOptionsTest.java
index c6ce31ef6f..adda34335f 100644
--- a/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/CloudStorageOptionsTest.java
+++ b/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/CloudStorageOptionsTest.java
@@ -21,6 +21,7 @@
import com.google.cloud.storage.Acl;
import com.google.cloud.storage.contrib.nio.testing.LocalStorageHelper;
+import com.google.cloud.testing.junit4.MultipleAttemptsRule;
import com.google.common.testing.NullPointerTester;
import java.io.IOException;
import java.net.URI;
@@ -28,6 +29,7 @@
import java.nio.file.Path;
import java.nio.file.Paths;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@@ -35,6 +37,7 @@
/** Unit tests for {@link CloudStorageOptions}. */
@RunWith(JUnit4.class)
public class CloudStorageOptionsTest {
+ @Rule public final MultipleAttemptsRule multipleAttemptsRule = new MultipleAttemptsRule(3);
@Before
public void before() {
diff --git a/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/CloudStoragePathTest.java b/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/CloudStoragePathTest.java
index 5fb43719e3..107569cc34 100644
--- a/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/CloudStoragePathTest.java
+++ b/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/CloudStoragePathTest.java
@@ -19,6 +19,7 @@
import static com.google.common.truth.Truth.assertThat;
import com.google.cloud.storage.contrib.nio.testing.LocalStorageHelper;
+import com.google.cloud.testing.junit4.MultipleAttemptsRule;
import com.google.common.collect.Iterables;
import com.google.common.testing.EqualsTester;
import com.google.common.testing.NullPointerTester;
@@ -31,6 +32,7 @@
import java.nio.file.ProviderMismatchException;
import org.junit.Assert;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@@ -38,6 +40,7 @@
/** Unit tests for {@link CloudStoragePath}. */
@RunWith(JUnit4.class)
public class CloudStoragePathTest {
+ @Rule public final MultipleAttemptsRule multipleAttemptsRule = new MultipleAttemptsRule(3);
@Before
public void before() {
diff --git a/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/CloudStorageReadChannelTest.java b/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/CloudStorageReadChannelTest.java
index c5681366a8..7b827d2710 100644
--- a/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/CloudStorageReadChannelTest.java
+++ b/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/CloudStorageReadChannelTest.java
@@ -30,6 +30,7 @@
import com.google.cloud.storage.BlobId;
import com.google.cloud.storage.Storage;
import com.google.cloud.storage.StorageException;
+import com.google.cloud.testing.junit4.MultipleAttemptsRule;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.ClosedChannelException;
@@ -37,6 +38,7 @@
import javax.net.ssl.SSLHandshakeException;
import org.junit.Assert;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@@ -45,6 +47,7 @@
/** Unit tests for {@link CloudStorageReadChannel}. */
@RunWith(JUnit4.class)
public class CloudStorageReadChannelTest {
+ @Rule public final MultipleAttemptsRule multipleAttemptsRule = new MultipleAttemptsRule(3);
private CloudStorageReadChannel chan;
diff --git a/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/CloudStorageReadFileChannelTest.java b/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/CloudStorageReadFileChannelTest.java
index 2774474b2c..c6bd9ad4ef 100644
--- a/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/CloudStorageReadFileChannelTest.java
+++ b/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/CloudStorageReadFileChannelTest.java
@@ -19,17 +19,21 @@
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
+import com.google.cloud.testing.junit4.MultipleAttemptsRule;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import java.nio.channels.SeekableByteChannel;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@RunWith(JUnit4.class)
public class CloudStorageReadFileChannelTest {
+ @Rule public final MultipleAttemptsRule multipleAttemptsRule = new MultipleAttemptsRule(3);
+
private static final class SeekableByteChannelImpl implements SeekableByteChannel {
private boolean open = true;
private ByteBuffer data;
diff --git a/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/CloudStorageReadTest.java b/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/CloudStorageReadTest.java
index af84ddea01..e6e9748600 100644
--- a/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/CloudStorageReadTest.java
+++ b/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/CloudStorageReadTest.java
@@ -21,6 +21,7 @@
import static java.nio.charset.StandardCharsets.UTF_8;
import com.google.cloud.storage.contrib.nio.testing.LocalStorageHelper;
+import com.google.cloud.testing.junit4.MultipleAttemptsRule;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
@@ -32,6 +33,7 @@
import java.nio.file.StandardOpenOption;
import java.util.Arrays;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@@ -39,6 +41,7 @@
/** Unit tests for {@link CloudStorageFileSystem}. */
@RunWith(JUnit4.class)
public class CloudStorageReadTest {
+ @Rule public final MultipleAttemptsRule multipleAttemptsRule = new MultipleAttemptsRule(3);
private static final String ALONE =
"To be, or not to be, that is the question—\n"
diff --git a/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/CloudStorageRetryHandlerTest.java b/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/CloudStorageRetryHandlerTest.java
index 4df5c4dd57..a8c957d83b 100644
--- a/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/CloudStorageRetryHandlerTest.java
+++ b/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/CloudStorageRetryHandlerTest.java
@@ -19,13 +19,16 @@
import static com.google.common.truth.Truth.assertThat;
import com.google.cloud.storage.StorageException;
+import com.google.cloud.testing.junit4.MultipleAttemptsRule;
import com.google.common.collect.ImmutableList;
+import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@RunWith(JUnit4.class)
public class CloudStorageRetryHandlerTest {
+ @Rule public final MultipleAttemptsRule multipleAttemptsRule = new MultipleAttemptsRule(3);
@Test
public void testIsRetryable() throws Exception {
diff --git a/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/CloudStorageWriteChannelTest.java b/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/CloudStorageWriteChannelTest.java
index aa388fbbac..a098e10f96 100644
--- a/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/CloudStorageWriteChannelTest.java
+++ b/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/CloudStorageWriteChannelTest.java
@@ -26,12 +26,14 @@
import static org.mockito.Mockito.when;
import com.google.cloud.WriteChannel;
+import com.google.cloud.testing.junit4.MultipleAttemptsRule;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.ClosedChannelException;
import java.nio.channels.NonReadableChannelException;
import org.junit.Assert;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@@ -39,6 +41,7 @@
/** Unit tests for {@link CloudStorageWriteChannel}. */
@RunWith(JUnit4.class)
public class CloudStorageWriteChannelTest {
+ @Rule public final MultipleAttemptsRule multipleAttemptsRule = new MultipleAttemptsRule(3);
private final WriteChannel gcsChannel = mock(WriteChannel.class);
private final CloudStorageWriteChannel chan = new CloudStorageWriteChannel(gcsChannel);
diff --git a/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/CloudStorageWriteFileChannelTest.java b/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/CloudStorageWriteFileChannelTest.java
index 7dd105e74c..685efe226c 100644
--- a/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/CloudStorageWriteFileChannelTest.java
+++ b/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/CloudStorageWriteFileChannelTest.java
@@ -19,17 +19,21 @@
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
+import com.google.cloud.testing.junit4.MultipleAttemptsRule;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import java.nio.channels.SeekableByteChannel;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@RunWith(JUnit4.class)
public class CloudStorageWriteFileChannelTest {
+ @Rule public final MultipleAttemptsRule multipleAttemptsRule = new MultipleAttemptsRule(3);
+
private static final class SeekableByteChannelImpl implements SeekableByteChannel {
private boolean open = true;
private ByteBuffer data;
diff --git a/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/NIOTest.java b/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/NIOTest.java
index a420b85938..c1e9ba7729 100644
--- a/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/NIOTest.java
+++ b/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/NIOTest.java
@@ -18,10 +18,12 @@
import static com.google.common.truth.Truth.assertThat;
+import com.google.cloud.testing.junit4.MultipleAttemptsRule;
import java.net.URI;
import java.nio.file.Path;
import java.nio.file.Paths;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@@ -32,6 +34,7 @@
*/
@RunWith(JUnit4.class)
public class NIOTest {
+ @Rule public final MultipleAttemptsRule multipleAttemptsRule = new MultipleAttemptsRule(3);
private URI uriToCloudStorage;
diff --git a/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/SeekableByteChannelPrefetcherTest.java b/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/SeekableByteChannelPrefetcherTest.java
index 642b58c67c..ed4f130eee 100644
--- a/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/SeekableByteChannelPrefetcherTest.java
+++ b/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/SeekableByteChannelPrefetcherTest.java
@@ -18,6 +18,7 @@
import static com.google.common.truth.Truth.assertThat;
+import com.google.cloud.testing.junit4.MultipleAttemptsRule;
import java.io.BufferedOutputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
@@ -27,12 +28,15 @@
import java.nio.file.Path;
import org.junit.AfterClass;
import org.junit.BeforeClass;
+import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@RunWith(JUnit4.class)
public class SeekableByteChannelPrefetcherTest {
+ @Rule public final MultipleAttemptsRule multipleAttemptsRule = new MultipleAttemptsRule(3);
+
// A file big enough to try seeks on.
private static Path input;
diff --git a/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/UnixPathTest.java b/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/UnixPathTest.java
index ebf87999fe..8dd762a887 100644
--- a/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/UnixPathTest.java
+++ b/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/UnixPathTest.java
@@ -19,9 +19,11 @@
import static com.google.common.truth.Truth.assertThat;
import static org.junit.Assume.assumeTrue;
+import com.google.cloud.testing.junit4.MultipleAttemptsRule;
import com.google.common.testing.EqualsTester;
import com.google.common.testing.NullPointerTester;
import org.junit.Assert;
+import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@@ -29,6 +31,7 @@
/** Unit tests for {@link UnixPath}. */
@RunWith(JUnit4.class)
public class UnixPathTest {
+ @Rule public final MultipleAttemptsRule multipleAttemptsRule = new MultipleAttemptsRule(3);
@Test
public void testNormalize() {
diff --git a/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/it/ITGcsNio.java b/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/it/ITGcsNio.java
index 2df7856951..0554b7bb28 100644
--- a/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/it/ITGcsNio.java
+++ b/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/it/ITGcsNio.java
@@ -40,6 +40,7 @@
import com.google.cloud.storage.contrib.nio.CloudStoragePath;
import com.google.cloud.storage.contrib.nio.testing.LocalStorageHelper;
import com.google.cloud.storage.testing.RemoteStorageHelper;
+import com.google.cloud.testing.junit4.MultipleAttemptsRule;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
@@ -73,6 +74,7 @@
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.BeforeClass;
+import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@@ -117,6 +119,8 @@ public class ITGcsNio {
private static Storage storage;
private static StorageOptions storageOptions;
+ @Rule public final MultipleAttemptsRule multipleAttemptsRule = new MultipleAttemptsRule(3);
+
private final Random rnd = new Random();
@BeforeClass