@@ -131,6 +131,11 @@ public void uploadFiles() throws Exception {
131131 UploadJob job = transferManager .uploadFiles (files , parallelUploadConfig );
132132 List <UploadResult > uploadResults = job .getUploadResults ();
133133 assertThat (uploadResults ).hasSize (3 );
134+ assertThat (
135+ uploadResults .stream ()
136+ .filter (result -> result .getStatus () == TransferStatus .SUCCESS )
137+ .collect (Collectors .toList ()))
138+ .hasSize (3 );
134139 }
135140 }
136141
@@ -153,6 +158,11 @@ public void uploadFilesWithOpts() throws Exception {
153158 UploadJob job = transferManager .uploadFiles (files , parallelUploadConfig );
154159 List <UploadResult > uploadResults = job .getUploadResults ();
155160 assertThat (uploadResults ).hasSize (3 );
161+ assertThat (
162+ uploadResults .stream ()
163+ .filter (result -> result .getStatus () == TransferStatus .SUCCESS )
164+ .collect (Collectors .toList ()))
165+ .hasSize (3 );
156166 }
157167 }
158168
@@ -178,9 +188,14 @@ public void uploadFilesOneFailure() throws Exception {
178188 assertThat (uploadResults ).hasSize (4 );
179189 assertThat (
180190 uploadResults .stream ()
181- .filter (x -> x .getStatus () == TransferStatus .FAILED_TO_START )
191+ .filter (x -> x .getStatus () == TransferStatus .FAILED_TO_FINISH )
182192 .collect (Collectors .toList ()))
183193 .hasSize (1 );
194+ assertThat (
195+ uploadResults .stream ()
196+ .filter (result -> result .getStatus () == TransferStatus .SUCCESS )
197+ .collect (Collectors .toList ()))
198+ .hasSize (3 );
184199 }
185200 }
186201
@@ -196,7 +211,7 @@ public void uploadNonexistentBucket() throws Exception {
196211 ParallelUploadConfig .newBuilder ().setBucketName (bucketName ).build ();
197212 UploadJob job = transferManager .uploadFiles (files , parallelUploadConfig );
198213 List <UploadResult > uploadResults = job .getUploadResults ();
199- assertThat (uploadResults .get (0 ).getStatus ()).isEqualTo (TransferStatus .FAILED_TO_START );
214+ assertThat (uploadResults .get (0 ).getStatus ()).isEqualTo (TransferStatus .FAILED_TO_FINISH );
200215 assertThat (uploadResults .get (0 ).getException ()).isInstanceOf (StorageException .class );
201216 }
202217 }
@@ -212,11 +227,56 @@ public void uploadNonexistentFile() throws Exception {
212227 ParallelUploadConfig .newBuilder ().setBucketName (bucketName ).build ();
213228 UploadJob job = transferManager .uploadFiles (files , parallelUploadConfig );
214229 List <UploadResult > uploadResults = job .getUploadResults ();
215- assertThat (uploadResults .get (0 ).getStatus ()).isEqualTo (TransferStatus .FAILED_TO_START );
230+ assertThat (uploadResults .get (0 ).getStatus ()).isEqualTo (TransferStatus .FAILED_TO_FINISH );
216231 assertThat (uploadResults .get (0 ).getException ()).isInstanceOf (NoSuchFileException .class );
217232 }
218233 }
219234
235+ @ Test
236+ public void uploadFailsSkipIfExists () throws Exception {
237+ TransferManagerConfig config =
238+ TransferManagerConfigTestingInstances .defaults (storage .getOptions ()).toBuilder ().build ();
239+ String bucketName = bucket .getName ();
240+ try (TransferManager transferManager = config .getService ();
241+ TmpFile tmpFile = DataGenerator .base64Characters ().tempFile (baseDir , objectContentSize )) {
242+ ParallelUploadConfig parallelUploadConfig =
243+ ParallelUploadConfig .newBuilder ().setBucketName (bucketName ).setSkipIfExists (true ).build ();
244+ UploadJob jobInitUpload =
245+ transferManager .uploadFiles (ImmutableList .of (tmpFile .getPath ()), parallelUploadConfig );
246+ List <UploadResult > uploadResults = jobInitUpload .getUploadResults ();
247+ assertThat (uploadResults .get (0 ).getStatus ()).isEqualTo (TransferStatus .SUCCESS );
248+ UploadJob failedSecondUpload =
249+ transferManager .uploadFiles (ImmutableList .of (tmpFile .getPath ()), parallelUploadConfig );
250+ List <UploadResult > failedResult = failedSecondUpload .getUploadResults ();
251+ assertThat (failedResult .get (0 ).getStatus ()).isEqualTo (TransferStatus .SKIPPED );
252+ }
253+ }
254+
255+ @ Test
256+ public void uploadSkipIfExistsGenerationOverride () throws Exception {
257+ TransferManagerConfig config =
258+ TransferManagerConfigTestingInstances .defaults (storage .getOptions ()).toBuilder ().build ();
259+ String bucketName = bucket .getName ();
260+ try (TransferManager transferManager = config .getService ();
261+ TmpFile tmpFile = DataGenerator .base64Characters ().tempFile (baseDir , objectContentSize )) {
262+ ParallelUploadConfig parallelUploadConfig =
263+ ParallelUploadConfig .newBuilder ()
264+ .setBucketName (bucketName )
265+ .setSkipIfExists (true )
266+ .setWriteOptsPerRequest (ImmutableList .of (BlobWriteOption .generationMatch (5L )))
267+ .build ();
268+ assertThat (parallelUploadConfig .getWriteOptsPerRequest ()).hasSize (1 );
269+ UploadJob jobInitUpload =
270+ transferManager .uploadFiles (ImmutableList .of (tmpFile .getPath ()), parallelUploadConfig );
271+ List <UploadResult > uploadResults = jobInitUpload .getUploadResults ();
272+ assertThat (uploadResults .get (0 ).getStatus ()).isEqualTo (TransferStatus .SUCCESS );
273+ UploadJob failedSecondUpload =
274+ transferManager .uploadFiles (ImmutableList .of (tmpFile .getPath ()), parallelUploadConfig );
275+ List <UploadResult > failedResult = failedSecondUpload .getUploadResults ();
276+ assertThat (failedResult .get (0 ).getStatus ()).isEqualTo (TransferStatus .SKIPPED );
277+ }
278+ }
279+
220280 @ Test
221281 public void downloadBlobs () throws Exception {
222282 TransferManagerConfig config =
0 commit comments