Ejemplo n.º 1
0
 @Test
 public void testReadGenerationChanged() throws IOException {
   BlobId blobId = BlobId.of(BUCKET_NAME, BLOB_NAME);
   reader = new BlobReadChannel(options, blobId, EMPTY_RPC_OPTIONS);
   byte[] firstResult = randomByteArray(DEFAULT_CHUNK_SIZE);
   byte[] secondResult = randomByteArray(DEFAULT_CHUNK_SIZE);
   ByteBuffer firstReadBuffer = ByteBuffer.allocate(DEFAULT_CHUNK_SIZE);
   ByteBuffer secondReadBuffer = ByteBuffer.allocate(DEFAULT_CHUNK_SIZE);
   expect(storageRpcMock.read(blobId.toPb(), EMPTY_RPC_OPTIONS, 0, DEFAULT_CHUNK_SIZE))
       .andReturn(StorageRpc.Tuple.of("etag1", firstResult));
   expect(
           storageRpcMock.read(
               blobId.toPb(), EMPTY_RPC_OPTIONS, DEFAULT_CHUNK_SIZE, DEFAULT_CHUNK_SIZE))
       .andReturn(StorageRpc.Tuple.of("etag2", secondResult));
   replay(storageRpcMock);
   reader.read(firstReadBuffer);
   try {
     reader.read(secondReadBuffer);
     fail("Expected ReadChannel read to throw StorageException");
   } catch (StorageException ex) {
     StringBuilder messageBuilder = new StringBuilder();
     messageBuilder.append("Blob ").append(blobId).append(" was updated while reading");
     assertEquals(messageBuilder.toString(), ex.getMessage());
   }
 }
Ejemplo n.º 2
0
 @Test
 public void testReadFinish() throws IOException {
   reader = new BlobReadChannel(options, BLOB_ID, EMPTY_RPC_OPTIONS);
   byte[] result = {};
   ByteBuffer readBuffer = ByteBuffer.allocate(DEFAULT_CHUNK_SIZE);
   expect(storageRpcMock.read(BLOB_ID.toPb(), EMPTY_RPC_OPTIONS, 0, DEFAULT_CHUNK_SIZE))
       .andReturn(StorageRpc.Tuple.of("etag", result));
   replay(storageRpcMock);
   assertEquals(-1, reader.read(readBuffer));
 }
Ejemplo n.º 3
0
 @Test
 public void testSaveAndRestore() throws IOException {
   byte[] firstResult = randomByteArray(DEFAULT_CHUNK_SIZE);
   byte[] secondResult = randomByteArray(DEFAULT_CHUNK_SIZE);
   ByteBuffer firstReadBuffer = ByteBuffer.allocate(42);
   ByteBuffer secondReadBuffer = ByteBuffer.allocate(DEFAULT_CHUNK_SIZE);
   expect(storageRpcMock.read(BLOB_ID.toPb(), EMPTY_RPC_OPTIONS, 0, DEFAULT_CHUNK_SIZE))
       .andReturn(StorageRpc.Tuple.of("etag", firstResult));
   expect(storageRpcMock.read(BLOB_ID.toPb(), EMPTY_RPC_OPTIONS, 42, DEFAULT_CHUNK_SIZE))
       .andReturn(StorageRpc.Tuple.of("etag", secondResult));
   replay(storageRpcMock);
   reader = new BlobReadChannel(options, BLOB_ID, EMPTY_RPC_OPTIONS);
   reader.read(firstReadBuffer);
   RestorableState<ReadChannel> readerState = reader.capture();
   ReadChannel restoredReader = readerState.restore();
   restoredReader.read(secondReadBuffer);
   assertArrayEquals(
       Arrays.copyOf(firstResult, firstReadBuffer.capacity()), firstReadBuffer.array());
   assertArrayEquals(secondResult, secondReadBuffer.array());
 }
Ejemplo n.º 4
0
 @Test
 public void testSeek() throws IOException {
   reader = new BlobReadChannel(options, BLOB_ID, EMPTY_RPC_OPTIONS);
   reader.seek(42);
   byte[] result = randomByteArray(DEFAULT_CHUNK_SIZE);
   ByteBuffer readBuffer = ByteBuffer.allocate(DEFAULT_CHUNK_SIZE);
   expect(storageRpcMock.read(BLOB_ID.toPb(), EMPTY_RPC_OPTIONS, 42, DEFAULT_CHUNK_SIZE))
       .andReturn(StorageRpc.Tuple.of("etag", result));
   replay(storageRpcMock);
   reader.read(readBuffer);
   assertArrayEquals(result, readBuffer.array());
 }
Ejemplo n.º 5
0
 @Test
 public void testReadBig() throws IOException {
   reader = new BlobReadChannel(options, BLOB_ID, EMPTY_RPC_OPTIONS);
   reader.chunkSize(CUSTOM_CHUNK_SIZE);
   byte[] firstResult = randomByteArray(DEFAULT_CHUNK_SIZE);
   byte[] secondResult = randomByteArray(DEFAULT_CHUNK_SIZE);
   ByteBuffer firstReadBuffer = ByteBuffer.allocate(DEFAULT_CHUNK_SIZE);
   ByteBuffer secondReadBuffer = ByteBuffer.allocate(42);
   expect(storageRpcMock.read(BLOB_ID.toPb(), EMPTY_RPC_OPTIONS, 0, DEFAULT_CHUNK_SIZE))
       .andReturn(StorageRpc.Tuple.of("etag", firstResult));
   expect(
           storageRpcMock.read(
               BLOB_ID.toPb(), EMPTY_RPC_OPTIONS, DEFAULT_CHUNK_SIZE, CUSTOM_CHUNK_SIZE))
       .andReturn(StorageRpc.Tuple.of("etag", secondResult));
   replay(storageRpcMock);
   reader.read(firstReadBuffer);
   reader.read(secondReadBuffer);
   assertArrayEquals(firstResult, firstReadBuffer.array());
   assertArrayEquals(
       Arrays.copyOf(secondResult, secondReadBuffer.capacity()), secondReadBuffer.array());
 }