@Test public void testRewriteWithoutObjectMultipleRequests() { EasyMock.expect(storageRpcMock.continueRewrite(RESPONSE_WITHOUT_OBJECT)) .andReturn(RESPONSE_WITHOUT_OBJECT); EasyMock.expect(storageRpcMock.continueRewrite(RESPONSE_WITHOUT_OBJECT)) .andReturn(RESPONSE_WITHOUT_OBJECT_DONE); EasyMock.replay(storageRpcMock); copyWriter = new CopyWriter(options, RESPONSE_WITHOUT_OBJECT); assertEquals(result, copyWriter.getResult()); assertTrue(copyWriter.isDone()); assertEquals(42L, copyWriter.getTotalBytesCopied()); assertEquals(42L, copyWriter.getBlobSize()); }
@Test public void testRewriteWithObjectMultipleRequests() { EasyMock.expect(storageRpcMock.continueRewrite(RESPONSE_WITH_OBJECT)) .andReturn(RESPONSE_WITH_OBJECT); EasyMock.expect(storageRpcMock.continueRewrite(RESPONSE_WITH_OBJECT)) .andReturn(RESPONSE_WITH_OBJECT_DONE); EasyMock.replay(storageRpcMock); copyWriter = new CopyWriter(options, RESPONSE_WITH_OBJECT); assertEquals(result, copyWriter.getResult()); assertTrue(copyWriter.isDone()); assertEquals(42L, copyWriter.getTotalBytesCopied()); assertEquals(42L, copyWriter.getBlobSize()); }
@Test public void testRewriteWithoutObject() { EasyMock.expect(storageRpcMock.continueRewrite(RESPONSE_WITHOUT_OBJECT)) .andReturn(RESPONSE_WITHOUT_OBJECT_DONE); EasyMock.replay(storageRpcMock); copyWriter = new CopyWriter(options, RESPONSE_WITHOUT_OBJECT); assertEquals(result, copyWriter.getResult()); assertTrue(copyWriter.isDone()); assertEquals(42L, copyWriter.getTotalBytesCopied()); assertEquals(42L, copyWriter.getBlobSize()); }
@Test public void testRewriteWithObject() { EasyMock.expect(storageRpcMock.continueRewrite(RESPONSE_WITH_OBJECT)) .andReturn(RESPONSE_WITH_OBJECT_DONE); EasyMock.replay(storageRpcMock); copyWriter = new CopyWriter(options, RESPONSE_WITH_OBJECT); assertEquals(result, copyWriter.getResult()); assertTrue(copyWriter.isDone()); assertEquals(42L, copyWriter.getTotalBytesCopied()); assertEquals(42L, copyWriter.getBlobSize()); }
@Test public void testSaveAndRestoreWithoutObject() { EasyMock.expect(storageRpcMock.continueRewrite(RESPONSE_WITHOUT_OBJECT)) .andReturn(RESPONSE_WITHOUT_OBJECT); EasyMock.expect(storageRpcMock.continueRewrite(RESPONSE_WITHOUT_OBJECT)) .andReturn(RESPONSE_WITHOUT_OBJECT_DONE); EasyMock.replay(storageRpcMock); copyWriter = new CopyWriter(options, RESPONSE_WITHOUT_OBJECT); copyWriter.copyChunk(); assertTrue(!copyWriter.isDone()); assertEquals(21L, copyWriter.getTotalBytesCopied()); assertEquals(42L, copyWriter.getBlobSize()); RestorableState<CopyWriter> rewriterState = copyWriter.capture(); CopyWriter restoredRewriter = rewriterState.restore(); assertEquals(result, restoredRewriter.getResult()); assertTrue(restoredRewriter.isDone()); assertEquals(42L, restoredRewriter.getTotalBytesCopied()); assertEquals(42L, restoredRewriter.getBlobSize()); }
@Test public void testSaveAndRestoreWithObject() { EasyMock.expect(storageRpcMock.continueRewrite(RESPONSE_WITH_OBJECT)) .andReturn(RESPONSE_WITH_OBJECT); EasyMock.expect(storageRpcMock.continueRewrite(RESPONSE_WITH_OBJECT)) .andReturn(RESPONSE_WITH_OBJECT_DONE); EasyMock.replay(storageRpcMock); copyWriter = new CopyWriter(options, RESPONSE_WITH_OBJECT); copyWriter.copyChunk(); assertTrue(!copyWriter.isDone()); assertEquals(21L, copyWriter.getTotalBytesCopied()); assertEquals(42L, copyWriter.getBlobSize()); RestorableState<CopyWriter> rewriterState = copyWriter.capture(); CopyWriter restoredRewriter = rewriterState.restore(); assertEquals(result, restoredRewriter.getResult()); assertTrue(restoredRewriter.isDone()); assertEquals(42L, restoredRewriter.getTotalBytesCopied()); assertEquals(42L, restoredRewriter.getBlobSize()); }
@Override public RestorableState<CopyWriter> capture() { return StateImpl.newBuilder( serviceOptions, BlobId.fromPb(rewriteResponse.rewriteRequest.source), rewriteResponse.rewriteRequest.sourceOptions, rewriteResponse.rewriteRequest.overrideInfo, BlobInfo.fromPb(rewriteResponse.rewriteRequest.target), rewriteResponse.rewriteRequest.targetOptions) .setResult(rewriteResponse.result != null ? BlobInfo.fromPb(rewriteResponse.result) : null) .setBlobSize(getBlobSize()) .setIsDone(isDone()) .setMegabytesCopiedPerChunk(rewriteResponse.rewriteRequest.megabytesRewrittenPerCall) .setRewriteToken(rewriteResponse.rewriteToken) .setTotalBytesRewritten(getTotalBytesCopied()) .build(); }
@Test public void testSaveAndRestoreWithResult() { EasyMock.expect(storageRpcMock.continueRewrite(RESPONSE_WITH_OBJECT)) .andReturn(RESPONSE_WITH_OBJECT_DONE); EasyMock.replay(storageRpcMock); copyWriter = new CopyWriter(options, RESPONSE_WITH_OBJECT); copyWriter.copyChunk(); assertEquals(result, copyWriter.getResult()); assertTrue(copyWriter.isDone()); assertEquals(42L, copyWriter.getTotalBytesCopied()); assertEquals(42L, copyWriter.getBlobSize()); RestorableState<CopyWriter> rewriterState = copyWriter.capture(); CopyWriter restoredRewriter = rewriterState.restore(); assertEquals(result, restoredRewriter.getResult()); assertTrue(restoredRewriter.isDone()); assertEquals(42L, restoredRewriter.getTotalBytesCopied()); assertEquals(42L, restoredRewriter.getBlobSize()); } }
@Test public void testCopyMultipleRequests() { CopyRequest request = Storage.CopyRequest.of(BLOB_INFO1.getBlobId(), BLOB_INFO2.getBlobId()); StorageRpc.RewriteRequest rpcRequest = new StorageRpc.RewriteRequest( request.getSource().toPb(), EMPTY_RPC_OPTIONS, false, BLOB_INFO2.toPb(), EMPTY_RPC_OPTIONS, null); StorageRpc.RewriteResponse rpcResponse1 = new StorageRpc.RewriteResponse(rpcRequest, null, 42L, false, "token", 21L); StorageRpc.RewriteResponse rpcResponse2 = new StorageRpc.RewriteResponse(rpcRequest, BLOB_INFO1.toPb(), 42L, true, "token", 42L); EasyMock.expect(storageRpcMock.openRewrite(rpcRequest)).andReturn(rpcResponse1); EasyMock.expect(storageRpcMock.continueRewrite(rpcResponse1)).andReturn(rpcResponse2); EasyMock.replay(storageRpcMock); initializeService(); CopyWriter writer = storage.copy(request); assertEquals(42L, writer.getBlobSize()); assertEquals(21L, writer.getTotalBytesCopied()); assertTrue(!writer.isDone()); assertEquals(expectedBlob1, writer.getResult()); assertTrue(writer.isDone()); assertEquals(42L, writer.getTotalBytesCopied()); assertEquals(42L, writer.getBlobSize()); }
@Test public void testCopy() { CopyRequest request = Storage.CopyRequest.of(BLOB_INFO1.getBlobId(), BLOB_INFO2.getBlobId()); StorageRpc.RewriteRequest rpcRequest = new StorageRpc.RewriteRequest( request.getSource().toPb(), EMPTY_RPC_OPTIONS, false, BLOB_INFO2.toPb(), EMPTY_RPC_OPTIONS, null); StorageRpc.RewriteResponse rpcResponse = new StorageRpc.RewriteResponse(rpcRequest, null, 42L, false, "token", 21L); EasyMock.expect(storageRpcMock.openRewrite(rpcRequest)).andReturn(rpcResponse); EasyMock.replay(storageRpcMock); initializeService(); CopyWriter writer = storage.copy(request); assertEquals(42L, writer.getBlobSize()); assertEquals(21L, writer.getTotalBytesCopied()); assertTrue(!writer.isDone()); }
@Test public void testCopyWithOptionsFromBlobId() { CopyRequest request = Storage.CopyRequest.newBuilder() .setSource(BLOB_INFO1.getBlobId()) .setSourceOptions(BLOB_SOURCE_GENERATION_FROM_BLOB_ID, BLOB_SOURCE_METAGENERATION) .setTarget(BLOB_INFO1, BLOB_TARGET_GENERATION, BLOB_TARGET_METAGENERATION) .build(); StorageRpc.RewriteRequest rpcRequest = new StorageRpc.RewriteRequest( request.getSource().toPb(), BLOB_SOURCE_OPTIONS_COPY, true, request.getTarget().toPb(), BLOB_TARGET_OPTIONS_COMPOSE, null); StorageRpc.RewriteResponse rpcResponse = new StorageRpc.RewriteResponse(rpcRequest, null, 42L, false, "token", 21L); EasyMock.expect(storageRpcMock.openRewrite(rpcRequest)).andReturn(rpcResponse); EasyMock.replay(storageRpcMock); initializeService(); CopyWriter writer = storage.copy(request); assertEquals(42L, writer.getBlobSize()); assertEquals(21L, writer.getTotalBytesCopied()); assertTrue(!writer.isDone()); }
@Test public void testCopyWithOptions() { CopyRequest request = Storage.CopyRequest.newBuilder() .setSource(BLOB_INFO2.getBlobId()) .setSourceOptions(BLOB_SOURCE_GENERATION, BLOB_SOURCE_METAGENERATION) .setTarget(BLOB_INFO1, BLOB_TARGET_GENERATION, BLOB_TARGET_METAGENERATION) .build(); StorageRpc.RewriteRequest rpcRequest = new StorageRpc.RewriteRequest( request.getSource().toPb(), BLOB_SOURCE_OPTIONS_COPY, true, request.getTarget().toPb(), BLOB_TARGET_OPTIONS_COMPOSE, null); StorageRpc.RewriteResponse rpcResponse = new StorageRpc.RewriteResponse(rpcRequest, null, 42L, false, "token", 21L); EasyMock.expect(storageRpcMock.openRewrite(rpcRequest)).andReturn(rpcResponse); EasyMock.replay(storageRpcMock); initializeService(); CopyWriter writer = storage.copy(request); assertEquals(42L, writer.getBlobSize()); assertEquals(21L, writer.getTotalBytesCopied()); assertTrue(!writer.isDone()); }
CopyWriter writer = storage.copy(request); assertEquals(42L, writer.getBlobSize()); assertEquals(21L, writer.getTotalBytesCopied()); assertTrue(!writer.isDone()); request = writer = storage.copy(request); assertEquals(42L, writer.getBlobSize()); assertEquals(21L, writer.getTotalBytesCopied()); assertTrue(!writer.isDone());
CopyWriter writer = storage.copy(request); assertEquals(42L, writer.getBlobSize()); assertEquals(21L, writer.getTotalBytesCopied()); assertTrue(!writer.isDone()); request = writer = storage.copy(request); assertEquals(42L, writer.getBlobSize()); assertEquals(21L, writer.getTotalBytesCopied()); assertTrue(!writer.isDone());
@Override public RestorableState<CopyWriter> capture() { return StateImpl.newBuilder( serviceOptions, BlobId.fromPb(rewriteResponse.rewriteRequest.source), rewriteResponse.rewriteRequest.sourceOptions, rewriteResponse.rewriteRequest.overrideInfo, BlobInfo.fromPb(rewriteResponse.rewriteRequest.target), rewriteResponse.rewriteRequest.targetOptions) .setResult(rewriteResponse.result != null ? BlobInfo.fromPb(rewriteResponse.result) : null) .setBlobSize(getBlobSize()) .setIsDone(isDone()) .setMegabytesCopiedPerChunk(rewriteResponse.rewriteRequest.megabytesRewrittenPerCall) .setRewriteToken(rewriteResponse.rewriteToken) .setTotalBytesRewritten(getTotalBytesCopied()) .build(); }