@Override public boolean isOpen() { synchronized (this) { return channel.isOpen(); } }
private void checkOpen() throws ClosedChannelException { if (!channel.isOpen()) { throw new ClosedChannelException(); } } }
@Before public void before() { when(gcsChannel.isOpen()).thenReturn(true); }
@Test public void testIsOpen() throws IOException { when(gcsChannel.isOpen()).thenReturn(true).thenReturn(false); assertThat(chan.isOpen()).isTrue(); chan.close(); assertThat(chan.isOpen()).isFalse(); verify(gcsChannel, times(2)).isOpen(); verify(gcsChannel).close(); verifyNoMoreInteractions(gcsChannel); }
@Test public void testWrite_whenClosed_throwsCce() throws IOException { when(gcsChannel.isOpen()).thenReturn(false); thrown.expect(ClosedChannelException.class); chan.write(ByteBuffer.allocate(1)); }
@Test public void testSize() throws IOException { assertThat(chan.size()).isEqualTo(0L); verify(gcsChannel).isOpen(); verifyZeroInteractions(gcsChannel); }
@Test public void testSize_whenClosed_throwsCce() throws IOException { when(gcsChannel.isOpen()).thenReturn(false); thrown.expect(ClosedChannelException.class); chan.size(); }
@Test public void testPosition_whenClosed_throwsCce() throws IOException { when(gcsChannel.isOpen()).thenReturn(false); thrown.expect(ClosedChannelException.class); chan.position(); }
@Test public void testWrite() throws IOException { ByteBuffer buffer = ByteBuffer.allocate(1); buffer.put((byte) 'B'); assertThat(chan.position()).isEqualTo(0L); assertThat(chan.size()).isEqualTo(0L); when(gcsChannel.write(eq(buffer))).thenReturn(1); assertThat(chan.write(buffer)).isEqualTo(1); assertThat(chan.position()).isEqualTo(1L); assertThat(chan.size()).isEqualTo(1L); verify(gcsChannel).write(any(ByteBuffer.class)); verify(gcsChannel, times(5)).isOpen(); verifyNoMoreInteractions(gcsChannel); }
@Test public void testWriterWithEncryptionKey() { BlobInfo info = BLOB_INFO1.toBuilder().setMd5(null).setCrc32c(null).build(); EasyMock.expect(storageRpcMock.open(info.toPb(), ENCRYPTION_KEY_OPTIONS)) .andReturn("upload-id") .times(2); EasyMock.replay(storageRpcMock); initializeService(); WriteChannel channel = storage.writer(info, BlobWriteOption.encryptionKey(KEY)); assertNotNull(channel); assertTrue(channel.isOpen()); channel = storage.writer(info, BlobWriteOption.encryptionKey(BASE64_KEY)); assertNotNull(channel); assertTrue(channel.isOpen()); }
@Test public void testWriterWithKmsKeyName() { BlobInfo info = BLOB_INFO1.toBuilder().setMd5(null).setCrc32c(null).build(); EasyMock.expect(storageRpcMock.open(info.toPb(), KMS_KEY_NAME_OPTIONS)) .andReturn("upload-id") .times(2); EasyMock.replay(storageRpcMock); initializeService(); WriteChannel channel = storage.writer(info, BlobWriteOption.kmsKeyName(KMS_KEY_NAME)); assertNotNull(channel); assertTrue(channel.isOpen()); channel = storage.writer(info, BlobWriteOption.kmsKeyName(KMS_KEY_NAME)); assertNotNull(channel); assertTrue(channel.isOpen()); }
@Test public void testWriterWithOptions() { BlobInfo info = BLOB_INFO1.toBuilder().setMd5(CONTENT_MD5).setCrc32c(CONTENT_CRC32C).build(); EasyMock.expect(storageRpcMock.open(info.toPb(), BLOB_TARGET_OPTIONS_CREATE)) .andReturn("upload-id"); EasyMock.replay(storageRpcMock); initializeService(); WriteChannel channel = storage.writer( info, BLOB_WRITE_METAGENERATION, BLOB_WRITE_NOT_EXIST, BLOB_WRITE_PREDEFINED_ACL, BLOB_WRITE_CRC2C, BLOB_WRITE_MD5_HASH); assertNotNull(channel); assertTrue(channel.isOpen()); }
@Test public void testWriter() { 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.open(infoWithoutHashes.toPb(), EMPTY_RPC_OPTIONS)) .andReturn("upload-id"); EasyMock.replay(storageRpcMock); initializeService(); WriteChannel channel = storage.writer(infoWithHashes); assertNotNull(channel); assertTrue(channel.isOpen()); }
@Override public boolean isOpen() { synchronized (this) { return channel.isOpen(); } }
private void checkOpen() throws ClosedChannelException { if (!channel.isOpen()) { throw new ClosedChannelException(); } } }