@Test
 public void testComposeBlobFail() {
   String sourceBlobName1 = "test-compose-blob-fail-source-1";
   String sourceBlobName2 = "test-compose-blob-fail-source-2";
   BlobInfo sourceBlob1 = BlobInfo.builder(BUCKET, sourceBlobName1).build();
   BlobInfo sourceBlob2 = BlobInfo.builder(BUCKET, sourceBlobName2).build();
   assertNotNull(storage.create(sourceBlob1));
   assertNotNull(storage.create(sourceBlob2));
   String targetBlobName = "test-compose-blob-fail-target";
   BlobInfo targetBlob = BlobInfo.builder(BUCKET, targetBlobName).build();
   Storage.ComposeRequest req =
       Storage.ComposeRequest.builder()
           .addSource(sourceBlobName1, -1L)
           .addSource(sourceBlobName2, -1L)
           .target(targetBlob)
           .build();
   try {
     storage.compose(req);
     fail("StorageException was expected");
   } catch (StorageException ex) {
     // expected
   }
   assertTrue(storage.delete(BUCKET, sourceBlobName1));
   assertTrue(storage.delete(BUCKET, sourceBlobName2));
 }
 @Test
 public void testComposeBlob() {
   String sourceBlobName1 = "test-compose-blob-source-1";
   String sourceBlobName2 = "test-compose-blob-source-2";
   BlobInfo sourceBlob1 = BlobInfo.builder(BUCKET, sourceBlobName1).build();
   BlobInfo sourceBlob2 = BlobInfo.builder(BUCKET, sourceBlobName2).build();
   assertNotNull(storage.create(sourceBlob1, BLOB_BYTE_CONTENT));
   assertNotNull(storage.create(sourceBlob2, BLOB_BYTE_CONTENT));
   String targetBlobName = "test-compose-blob-target";
   BlobInfo targetBlob = BlobInfo.builder(BUCKET, targetBlobName).build();
   Storage.ComposeRequest req =
       Storage.ComposeRequest.of(ImmutableList.of(sourceBlobName1, sourceBlobName2), targetBlob);
   BlobInfo remoteBlob = storage.compose(req);
   assertNotNull(remoteBlob);
   assertEquals(targetBlob.blobId(), remoteBlob.blobId());
   byte[] readBytes = storage.readAllBytes(BUCKET, targetBlobName);
   byte[] composedBytes = Arrays.copyOf(BLOB_BYTE_CONTENT, BLOB_BYTE_CONTENT.length * 2);
   System.arraycopy(
       BLOB_BYTE_CONTENT, 0, composedBytes, BLOB_BYTE_CONTENT.length, BLOB_BYTE_CONTENT.length);
   assertArrayEquals(composedBytes, readBytes);
   assertTrue(storage.delete(BUCKET, sourceBlobName1));
   assertTrue(storage.delete(BUCKET, sourceBlobName2));
   assertTrue(storage.delete(BUCKET, targetBlobName));
 }