@Override public com.google.api.services.storage.model.Bucket call() { return storageRpc.create(bucketPb, optionsMap); } },
@Override public StorageObject call() { return storageRpc.create(blobPb, new ByteArrayInputStream(content), optionsMap); } },
@Override @Deprecated public Blob create(BlobInfo blobInfo, InputStream content, BlobWriteOption... options) { Tuple<BlobInfo, BlobTargetOption[]> targetOptions = BlobTargetOption.convert(blobInfo, options); StorageObject blobPb = targetOptions.x().toPb(); Map<StorageRpc.Option, ?> optionsMap = optionMap(targetOptions.x(), targetOptions.y()); InputStream inputStreamParam = firstNonNull(content, new ByteArrayInputStream(EMPTY_BYTE_ARRAY)); // retries are not safe when the input is an InputStream, so we can't retry. return Blob.fromPb(this, storageRpc.create(blobPb, inputStreamParam, optionsMap)); }
@Test public void testCreateBucketWithOptions() { EasyMock.expect(storageRpcMock.create(BUCKET_INFO1.toPb(), BUCKET_TARGET_OPTIONS)) .andReturn(BUCKET_INFO1.toPb()); EasyMock.replay(storageRpcMock); initializeService(); Bucket bucket = storage.create(BUCKET_INFO1, BUCKET_TARGET_METAGENERATION, BUCKET_TARGET_PREDEFINED_ACL); assertEquals(expectedBucket1, bucket); }
@Test public void testCreateBucket() { EasyMock.expect(storageRpcMock.create(BUCKET_INFO1.toPb(), EMPTY_RPC_OPTIONS)) .andReturn(BUCKET_INFO1.toPb()); EasyMock.replay(storageRpcMock); initializeService(); Bucket bucket = storage.create(BUCKET_INFO1); assertEquals(expectedBucket1, bucket); }
@Test public void testCreateBlob() throws IOException { Capture<ByteArrayInputStream> capturedStream = Capture.newInstance(); EasyMock.expect( storageRpcMock.create( EasyMock.eq( BLOB_INFO1 .toBuilder() .setMd5(CONTENT_MD5) .setCrc32c(CONTENT_CRC32C) .build() .toPb()), EasyMock.capture(capturedStream), EasyMock.eq(EMPTY_RPC_OPTIONS))) .andReturn(BLOB_INFO1.toPb()); EasyMock.replay(storageRpcMock); initializeService(); Blob blob = storage.create(BLOB_INFO1, BLOB_CONTENT); assertEquals(expectedBlob1, blob); ByteArrayInputStream byteStream = capturedStream.getValue(); byte[] streamBytes = new byte[BLOB_CONTENT.length]; assertEquals(BLOB_CONTENT.length, byteStream.read(streamBytes)); assertArrayEquals(BLOB_CONTENT, streamBytes); assertEquals(-1, byteStream.read(streamBytes)); }
@Test public void testCreateBlobFromStreamWithEncryptionKey() throws IOException { ByteArrayInputStream fileStream = new ByteArrayInputStream(BLOB_CONTENT); BlobInfo.Builder infoBuilder = BLOB_INFO1.toBuilder(); BlobInfo infoWithHashes = infoBuilder.setMd5(CONTENT_MD5).setCrc32c(CONTENT_CRC32C).build(); BlobInfo infoWithoutHashes = infoBuilder.setMd5(null).setCrc32c(null).build(); EasyMock.expect( storageRpcMock.create(infoWithoutHashes.toPb(), fileStream, ENCRYPTION_KEY_OPTIONS)) .andReturn(BLOB_INFO1.toPb()) .times(2); EasyMock.replay(storageRpcMock); initializeService(); Blob blob = storage.create(infoWithHashes, fileStream, BlobWriteOption.encryptionKey(BASE64_KEY)); assertEquals(expectedBlob1, blob); blob = storage.create(infoWithHashes, fileStream, BlobWriteOption.encryptionKey(BASE64_KEY)); assertEquals(expectedBlob1, blob); }
@Test public void testCreateBlobFromStream() throws IOException { Capture<ByteArrayInputStream> capturedStream = Capture.newInstance(); ByteArrayInputStream fileStream = new ByteArrayInputStream(BLOB_CONTENT); BlobInfo.Builder infoBuilder = BLOB_INFO1.toBuilder(); BlobInfo infoWithHashes = infoBuilder.setMd5(CONTENT_MD5).setCrc32c(CONTENT_CRC32C).build(); BlobInfo infoWithoutHashes = infoBuilder.setMd5(null).setCrc32c(null).build(); EasyMock.expect( storageRpcMock.create( EasyMock.eq(infoWithoutHashes.toPb()), EasyMock.capture(capturedStream), EasyMock.eq(EMPTY_RPC_OPTIONS))) .andReturn(BLOB_INFO1.toPb()); EasyMock.replay(storageRpcMock); initializeService(); Blob blob = storage.create(infoWithHashes, fileStream); assertEquals(expectedBlob1, blob); ByteArrayInputStream byteStream = capturedStream.getValue(); byte[] streamBytes = new byte[BLOB_CONTENT.length]; assertEquals(BLOB_CONTENT.length, byteStream.read(streamBytes)); assertArrayEquals(BLOB_CONTENT, streamBytes); assertEquals(-1, byteStream.read(streamBytes)); }
@Test public void testCreateEmptyBlob() throws IOException { Capture<ByteArrayInputStream> capturedStream = Capture.newInstance(); EasyMock.expect( storageRpcMock.create( EasyMock.eq( BLOB_INFO1 .toBuilder() .setMd5("1B2M2Y8AsgTpgAmY7PhCfg==") .setCrc32c("AAAAAA==") .build() .toPb()), EasyMock.capture(capturedStream), EasyMock.eq(EMPTY_RPC_OPTIONS))) .andReturn(BLOB_INFO1.toPb()); EasyMock.replay(storageRpcMock); initializeService(); Blob blob = storage.create(BLOB_INFO1); assertEquals(expectedBlob1, blob); ByteArrayInputStream byteStream = capturedStream.getValue(); byte[] streamBytes = new byte[BLOB_CONTENT.length]; assertEquals(-1, byteStream.read(streamBytes)); }
@Test public void testCreateBlobWithDisabledGzipContent() throws IOException { Capture<ByteArrayInputStream> capturedStream = Capture.newInstance(); EasyMock.expect( storageRpcMock.create( EasyMock.eq( BLOB_INFO1 .toBuilder() .setMd5(CONTENT_MD5) .setCrc32c(CONTENT_CRC32C) .build() .toPb()), EasyMock.capture(capturedStream), EasyMock.eq(BLOB_TARGET_OPTIONS_CREATE_DISABLE_GZIP_CONTENT))) .andReturn(BLOB_INFO1.toPb()); EasyMock.replay(storageRpcMock); initializeService(); Blob blob = storage.create(BLOB_INFO1, BLOB_CONTENT, BLOB_TARGET_DISABLE_GZIP_CONTENT); assertEquals(expectedBlob1, blob); ByteArrayInputStream byteStream = capturedStream.getValue(); byte[] streamBytes = new byte[BLOB_CONTENT.length]; assertEquals(BLOB_CONTENT.length, byteStream.read(streamBytes)); assertArrayEquals(BLOB_CONTENT, streamBytes); assertEquals(-1, byteStream.read(streamBytes)); }
Capture<ByteArrayInputStream> capturedStream = Capture.newInstance(); EasyMock.expect( storageRpcMock.create( EasyMock.eq( BLOB_INFO1
Capture<ByteArrayInputStream> capturedStream = Capture.newInstance(); EasyMock.expect( storageRpcMock.create( EasyMock.eq( BLOB_INFO1
Capture<ByteArrayInputStream> capturedStream = Capture.newInstance(); EasyMock.expect( storageRpcMock.create( EasyMock.eq( BLOB_INFO1
@Test public void testCreateBlobFromStreamRetryableException() throws IOException { Capture<ByteArrayInputStream> capturedStream = Capture.newInstance(); ByteArrayInputStream fileStream = new ByteArrayInputStream(BLOB_CONTENT); BlobInfo.Builder infoBuilder = BLOB_INFO1.toBuilder(); BlobInfo infoWithHashes = infoBuilder.setMd5(CONTENT_MD5).setCrc32c(CONTENT_CRC32C).build(); BlobInfo infoWithoutHashes = infoBuilder.setMd5(null).setCrc32c(null).build(); EasyMock.expect( storageRpcMock.create( EasyMock.eq(infoWithoutHashes.toPb()), EasyMock.capture(capturedStream), EasyMock.eq(EMPTY_RPC_OPTIONS))) .andThrow(new StorageException(500, "internalError")) .once(); EasyMock.replay(storageRpcMock); storage = options .toBuilder() .setRetrySettings(ServiceOptions.getDefaultRetrySettings()) .build() .getService(); // Even though this exception is retryable, storage.create(BlobInfo, InputStream) // shouldn't retry. thrown.expect(StorageException.class); thrown.expectMessage("internalError"); storage.create(infoWithHashes, fileStream); }
@Override public com.google.api.services.storage.model.Bucket call() { return storageRpc.create(bucketPb, optionsMap); } },
@Override public StorageObject call() { return storageRpc.create(blobPb, new ByteArrayInputStream(content), optionsMap); } },
@Override @Deprecated public Blob create(BlobInfo blobInfo, InputStream content, BlobWriteOption... options) { Tuple<BlobInfo, BlobTargetOption[]> targetOptions = BlobTargetOption.convert(blobInfo, options); StorageObject blobPb = targetOptions.x().toPb(); Map<StorageRpc.Option, ?> optionsMap = optionMap(targetOptions.x(), targetOptions.y()); InputStream inputStreamParam = firstNonNull(content, new ByteArrayInputStream(EMPTY_BYTE_ARRAY)); // retries are not safe when the input is an InputStream, so we can't retry. return Blob.fromPb(this, storageRpc.create(blobPb, inputStreamParam, optionsMap)); }