diff options
author | 2017-07-12 11:24:43 +0200 | |
---|---|---|
committer | 2017-07-12 11:27:38 +0200 | |
commit | 423a46a11acd109467573c3344a4dd49f211aea6 (patch) | |
tree | e456dcbf8bfb08f05bb78912a4ee99da04da9a18 | |
parent | 226510b85b9c0b1465aa860bc6cdd792b01b3412 (diff) |
remote: fix flaky test. Fixes #3348
The sameBlobsShouldNotBeUploadedTwice() test was found flaky on bazel ci
[1]. This can happen when the first upload finishes before the second is
started.
Add a CountDownLatch to stop the first upload from completing, before the
second is started.
[1] https://github.com/bazelbuild/bazel/issues/3348
PiperOrigin-RevId: 161641110
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/remote/ByteStreamUploaderTest.java | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/remote/ByteStreamUploaderTest.java b/src/test/java/com/google/devtools/build/lib/remote/ByteStreamUploaderTest.java index 8cd78ff10c..732afac1fa 100644 --- a/src/test/java/com/google/devtools/build/lib/remote/ByteStreamUploaderTest.java +++ b/src/test/java/com/google/devtools/build/lib/remote/ByteStreamUploaderTest.java @@ -263,11 +263,18 @@ public class ByteStreamUploaderTest { Chunker chunker = new Chunker(blob, CHUNK_SIZE); AtomicInteger numWriteCalls = new AtomicInteger(); + CountDownLatch blocker = new CountDownLatch(1); serviceRegistry.addService(new ByteStreamImplBase() { @Override public StreamObserver<WriteRequest> write(StreamObserver<WriteResponse> response) { numWriteCalls.incrementAndGet(); + try { + // Ensures that the first upload does not finish, before the second upload is started. + blocker.await(); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + } return new StreamObserver<WriteRequest>() { @@ -295,6 +302,8 @@ public class ByteStreamUploaderTest { Future<?> upload1 = uploader.uploadBlobAsync(chunker); Future<?> upload2 = uploader.uploadBlobAsync(chunker); + blocker.countDown(); + assertThat(upload1).isSameAs(upload2); upload1.get(); |