@@ -156,6 +156,67 @@ public void uploadFilesWithOpts() throws Exception {
156
156
}
157
157
}
158
158
159
+ @ Test
160
+ public void uploadFilesOneFailure () throws Exception {
161
+ TransferManagerConfig config =
162
+ TransferManagerConfigTestingInstances .defaults (storage .getOptions ());
163
+ try (TransferManager transferManager = config .getService ();
164
+ TmpFile tmpFile = DataGenerator .base64Characters ().tempFile (baseDir , objectContentSize );
165
+ TmpFile tmpFile1 = DataGenerator .base64Characters ().tempFile (baseDir , objectContentSize );
166
+ TmpFile tmpFile2 = DataGenerator .base64Characters ().tempFile (baseDir , objectContentSize )) {
167
+ List <Path > files =
168
+ ImmutableList .of (
169
+ tmpFile .getPath (),
170
+ tmpFile1 .getPath (),
171
+ tmpFile2 .getPath (),
172
+ Paths .get ("this-file-does-not-exist.txt" ));
173
+ String bucketName = bucket .getName ();
174
+ ParallelUploadConfig parallelUploadConfig =
175
+ ParallelUploadConfig .newBuilder ().setBucketName (bucketName ).build ();
176
+ UploadJob job = transferManager .uploadFiles (files , parallelUploadConfig );
177
+ List <UploadResult > uploadResults = job .getUploadResults ();
178
+ assertThat (uploadResults ).hasSize (4 );
179
+ assertThat (
180
+ uploadResults .stream ()
181
+ .filter (x -> x .getStatus () == TransferStatus .FAILED_TO_START )
182
+ .collect (Collectors .toList ()))
183
+ .hasSize (1 );
184
+ }
185
+ }
186
+
187
+ @ Test
188
+ public void uploadNonexistentBucket () throws Exception {
189
+ TransferManagerConfig config =
190
+ TransferManagerConfigTestingInstances .defaults (storage .getOptions ()).toBuilder ().build ();
191
+ String bucketName = bucket .getName () + "-does-not-exist" ;
192
+ try (TransferManager transferManager = config .getService ();
193
+ TmpFile tmpFile = DataGenerator .base64Characters ().tempFile (baseDir , objectContentSize )) {
194
+ List <Path > files = ImmutableList .of (tmpFile .getPath ());
195
+ ParallelUploadConfig parallelUploadConfig =
196
+ ParallelUploadConfig .newBuilder ().setBucketName (bucketName ).build ();
197
+ UploadJob job = transferManager .uploadFiles (files , parallelUploadConfig );
198
+ List <UploadResult > uploadResults = job .getUploadResults ();
199
+ assertThat (uploadResults .get (0 ).getStatus ()).isEqualTo (TransferStatus .FAILED_TO_START );
200
+ assertThat (uploadResults .get (0 ).getException ()).isInstanceOf (StorageException .class );
201
+ }
202
+ }
203
+
204
+ @ Test
205
+ public void uploadNonexistentFile () throws Exception {
206
+ TransferManagerConfig config =
207
+ TransferManagerConfigTestingInstances .defaults (storage .getOptions ()).toBuilder ().build ();
208
+ String bucketName = bucket .getName ();
209
+ try (TransferManager transferManager = config .getService ()) {
210
+ List <Path > files = ImmutableList .of (Paths .get ("this-file-does-not-exist.txt" ));
211
+ ParallelUploadConfig parallelUploadConfig =
212
+ ParallelUploadConfig .newBuilder ().setBucketName (bucketName ).build ();
213
+ UploadJob job = transferManager .uploadFiles (files , parallelUploadConfig );
214
+ List <UploadResult > uploadResults = job .getUploadResults ();
215
+ assertThat (uploadResults .get (0 ).getStatus ()).isEqualTo (TransferStatus .FAILED_TO_START );
216
+ assertThat (uploadResults .get (0 ).getException ()).isInstanceOf (NoSuchFileException .class );
217
+ }
218
+ }
219
+
159
220
@ Test
160
221
public void downloadBlobs () throws Exception {
161
222
TransferManagerConfig config =
@@ -220,39 +281,6 @@ public void downloadBlobsAllowChunked() throws Exception {
220
281
}
221
282
}
222
283
223
- @ Test
224
- public void uploadNonexistentBucket () throws Exception {
225
- TransferManagerConfig config =
226
- TransferManagerConfigTestingInstances .defaults (storage .getOptions ()).toBuilder ().build ();
227
- String bucketName = bucket .getName () + "-does-not-exist" ;
228
- try (TransferManager transferManager = config .getService ();
229
- TmpFile tmpFile = DataGenerator .base64Characters ().tempFile (baseDir , objectContentSize )) {
230
- List <Path > files = ImmutableList .of (tmpFile .getPath ());
231
- ParallelUploadConfig parallelUploadConfig =
232
- ParallelUploadConfig .newBuilder ().setBucketName (bucketName ).build ();
233
- UploadJob job = transferManager .uploadFiles (files , parallelUploadConfig );
234
- List <UploadResult > uploadResults = job .getUploadResults ();
235
- assertThat (uploadResults .get (0 ).getStatus ()).isEqualTo (TransferStatus .FAILED_TO_START );
236
- assertThat (uploadResults .get (0 ).getException ()).isInstanceOf (StorageException .class );
237
- }
238
- }
239
-
240
- @ Test
241
- public void uploadNonexistentFile () throws Exception {
242
- TransferManagerConfig config =
243
- TransferManagerConfigTestingInstances .defaults (storage .getOptions ()).toBuilder ().build ();
244
- String bucketName = bucket .getName ();
245
- try (TransferManager transferManager = config .getService ()) {
246
- List <Path > files = ImmutableList .of (Paths .get ("this-file-does-not-exist.txt" ));
247
- ParallelUploadConfig parallelUploadConfig =
248
- ParallelUploadConfig .newBuilder ().setBucketName (bucketName ).build ();
249
- UploadJob job = transferManager .uploadFiles (files , parallelUploadConfig );
250
- List <UploadResult > uploadResults = job .getUploadResults ();
251
- assertThat (uploadResults .get (0 ).getStatus ()).isEqualTo (TransferStatus .FAILED_TO_START );
252
- assertThat (uploadResults .get (0 ).getException ()).isInstanceOf (NoSuchFileException .class );
253
- }
254
- }
255
-
256
284
@ Test
257
285
public void downloadNonexistentBucket () throws Exception {
258
286
TransferManagerConfig config =
@@ -326,6 +354,42 @@ public void downloadBlobsPreconditionFailure() throws Exception {
326
354
}
327
355
}
328
356
357
+ @ Test
358
+ public void downloadBlobsOneFailure () throws Exception {
359
+ TransferManagerConfig config =
360
+ TransferManagerConfigTestingInstances .defaults (storage .getOptions ());
361
+ try (TransferManager transferManager = config .getService ()) {
362
+ String bucketName = bucket .getName ();
363
+ ParallelDownloadConfig parallelDownloadConfig =
364
+ ParallelDownloadConfig .newBuilder ()
365
+ .setBucketName (bucketName )
366
+ .setDownloadDirectory (baseDir )
367
+ .build ();
368
+ List <BlobInfo > downloadBlobs = blobs ;
369
+ BlobInfo nonexistentBlob =
370
+ BlobInfo .newBuilder (
371
+ BlobId .of (
372
+ bucket .getName (), String .format ("%s/src" , generator .randomObjectName ())))
373
+ .build ();
374
+ downloadBlobs .add (nonexistentBlob );
375
+ DownloadJob job = transferManager .downloadBlobs (blobs , parallelDownloadConfig );
376
+ List <DownloadResult > downloadResults = job .getDownloadResults ();
377
+ try {
378
+ assertThat (downloadResults ).hasSize (4 );
379
+ assertThat (
380
+ downloadResults .stream ()
381
+ .filter (res -> res .getStatus () == TransferStatus .FAILED_TO_START )
382
+ .collect (Collectors .toList ()))
383
+ .hasSize (1 );
384
+ } finally {
385
+ cleanUpFiles (
386
+ downloadResults .stream ()
387
+ .filter (res -> res .getStatus () == TransferStatus .SUCCESS )
388
+ .collect (Collectors .toList ()));
389
+ }
390
+ }
391
+ }
392
+
329
393
private void cleanUpFiles (List <DownloadResult > results ) throws IOException {
330
394
// Cleanup downloaded blobs and the parent directory
331
395
for (DownloadResult res : results ) {
0 commit comments