|
25 | 25 | import com.google.api.core.ApiFuture; |
26 | 26 | import com.google.api.gax.retrying.RetrySettings; |
27 | 27 | import com.google.api.gax.rpc.AbortedException; |
28 | | -import com.google.api.gax.rpc.ApiExceptions; |
29 | 28 | import com.google.api.gax.rpc.DataLossException; |
30 | 29 | import com.google.api.gax.rpc.OutOfRangeException; |
31 | 30 | import com.google.api.gax.rpc.UnavailableException; |
|
58 | 57 | import io.grpc.stub.StreamObserver; |
59 | 58 | import java.nio.ByteBuffer; |
60 | 59 | import java.util.Arrays; |
61 | | -import java.util.List; |
62 | 60 | import java.util.Map; |
63 | 61 | import java.util.UUID; |
64 | 62 | import java.util.concurrent.ExecutionException; |
@@ -332,7 +330,6 @@ public void bidiReadObjectError() throws Exception { |
332 | 330 | BidiReadObjectRequest req2 = read(1, 10, 10); |
333 | 331 | BidiReadObjectResponse res2 = |
334 | 332 | BidiReadObjectResponse.newBuilder() |
335 | | - .setMetadata(METADATA) |
336 | 333 | .addObjectDataRanges( |
337 | 334 | ObjectRangeData.newBuilder() |
338 | 335 | .setChecksummedData(content2.asChecksummedData()) |
@@ -383,7 +380,7 @@ public void bidiReadObjectError() throws Exception { |
383 | 380 | com.google.rpc.Status grpcStatusDetails = |
384 | 381 | com.google.rpc.Status.newBuilder() |
385 | 382 | .setCode(com.google.rpc.Code.UNAVAILABLE_VALUE) |
386 | | - .setMessage("redirect") |
| 383 | + .setMessage("fail read_id: 1") |
387 | 384 | .addDetails(Any.pack(err2)) |
388 | 385 | .build(); |
389 | 386 |
|
@@ -625,18 +622,25 @@ public void onNext(BidiReadObjectRequest request) { |
625 | 622 |
|
626 | 623 | DataLossException dataLossException = |
627 | 624 | assertThrows( |
628 | | - DataLossException.class, () -> ApiExceptions.callAndTranslateApiException(future)); |
| 625 | + DataLossException.class, () -> TestUtils.await(future, 5, TimeUnit.SECONDS)); |
629 | 626 |
|
630 | 627 | assertThat(dataLossException).isInstanceOf(UncheckedChecksumMismatchException.class); |
631 | 628 | Throwable[] suppressed = dataLossException.getSuppressed(); |
632 | | - List<String> suppressedMessages = |
633 | | - Arrays.stream(suppressed).map(Throwable::getMessage).collect(Collectors.toList()); |
634 | | - assertThat(suppressedMessages) |
635 | | - .containsExactly( |
636 | | - "Operation failed to complete within retry limit (attempts: 3, maxAttempts: 3) previous failures follow in order of occurrence", |
637 | | - "Mismatch checksum value. Expected crc32c{0x00000001} actual crc32c{0xe16dcdee}", |
638 | | - "Mismatch checksum value. Expected crc32c{0x00000002} actual crc32c{0xe16dcdee}", |
639 | | - "Asynchronous task failed"); |
| 629 | + String suppressedMessages = |
| 630 | + Arrays.stream(suppressed).map(Throwable::getMessage).collect(Collectors.joining("\n")); |
| 631 | + assertAll( |
| 632 | + () -> |
| 633 | + assertThat(suppressedMessages) |
| 634 | + .contains("Operation failed to complete within attempt budget"), |
| 635 | + () -> |
| 636 | + assertThat(suppressedMessages) |
| 637 | + .contains( |
| 638 | + "Mismatch checksum value. Expected crc32c{0x00000001} actual crc32c{0xe16dcdee}"), |
| 639 | + () -> |
| 640 | + assertThat(suppressedMessages) |
| 641 | + .contains( |
| 642 | + "Mismatch checksum value. Expected crc32c{0x00000002} actual crc32c{0xe16dcdee}"), |
| 643 | + () -> assertThat(suppressedMessages).contains("Asynchronous task failed")); |
640 | 644 | } |
641 | 645 | } |
642 | 646 | } |
@@ -692,18 +696,20 @@ public void retrySettingsApplicable_objectRangeData_offset_notAligned_gt() throw |
692 | 696 |
|
693 | 697 | OutOfRangeException outOfRangeException = |
694 | 698 | assertThrows( |
695 | | - OutOfRangeException.class, |
696 | | - () -> ApiExceptions.callAndTranslateApiException(future)); |
| 699 | + OutOfRangeException.class, () -> TestUtils.await(future, 5, TimeUnit.SECONDS)); |
697 | 700 |
|
698 | 701 | assertThat(outOfRangeException).isInstanceOf(OutOfRangeException.class); |
699 | 702 | Throwable[] suppressed = outOfRangeException.getSuppressed(); |
700 | | - List<String> suppressedMessages = |
701 | | - Arrays.stream(suppressed).map(Throwable::getMessage).collect(Collectors.toList()); |
702 | | - assertThat(suppressedMessages) |
703 | | - .containsExactly( |
704 | | - "Operation failed to complete within retry limit (attempts: 2, maxAttempts: 2) previous failures follow in order of occurrence", |
705 | | - "position = 10, readRange.read_offset = 11", |
706 | | - "Asynchronous task failed"); |
| 703 | + String suppressedMessages = |
| 704 | + Arrays.stream(suppressed).map(Throwable::getMessage).collect(Collectors.joining("\n")); |
| 705 | + assertAll( |
| 706 | + () -> |
| 707 | + assertThat(suppressedMessages) |
| 708 | + .contains("Operation failed to complete within attempt budget"), |
| 709 | + () -> |
| 710 | + assertThat(suppressedMessages) |
| 711 | + .contains("position = 10, readRange.read_offset = 11"), |
| 712 | + () -> assertThat(suppressedMessages).contains("Asynchronous task failed")); |
707 | 713 | } |
708 | 714 | } |
709 | 715 | } |
|
0 commit comments