use of com.google.cloud.kms.v1.Digest in project bazel-buildfarm by bazelbuild.
the class ReportResultStageTest method operationErrorOnStatusException.
@Test
public void operationErrorOnStatusException() throws Exception {
WorkerContext context = mock(WorkerContext.class);
SingleOutputSink output = new SingleOutputSink();
Operation erroringOperation = Operation.newBuilder().setName("erroring").setMetadata(Any.pack(ExecutingOperationMetadata.getDefaultInstance())).build();
Action action = Action.getDefaultInstance();
Digest actionDigest = DIGEST_UTIL.compute(action);
QueueEntry erroringEntry = QueueEntry.newBuilder().setExecuteEntry(ExecuteEntry.newBuilder().setOperationName(erroringOperation.getName()).setActionDigest(actionDigest)).build();
OperationContext erroringContext = OperationContext.newBuilder().setCommand(Command.getDefaultInstance()).setAction(action).setOperation(erroringOperation).setQueueEntry(erroringEntry).setExecDir(Paths.get("erroring-operation-path")).setPoller(mock(Poller.class)).build();
when(context.putOperation(any(Operation.class))).thenReturn(true);
Status erroredStatus = Status.newBuilder().setCode(Code.FAILED_PRECONDITION.getNumber()).build();
doThrow(StatusProto.toStatusException(erroredStatus)).when(context).uploadOutputs(eq(actionDigest), any(ActionResult.Builder.class), eq(erroringContext.execDir), eq(ImmutableList.of()), eq(ImmutableList.of()));
PipelineStage reportResultStage = new ReportResultStage(context, output, /* error=*/
null);
reportResultStage.put(erroringContext);
reportResultStage.run();
verify(context, times(1)).destroyExecDir(erroringContext.execDir);
ArgumentCaptor<Operation> operationCaptor = ArgumentCaptor.forClass(Operation.class);
verify(context, times(1)).putOperation(operationCaptor.capture());
Operation erroredOperation = operationCaptor.getValue();
assertThat(output.get().operation).isEqualTo(erroredOperation);
verify(context, times(1)).uploadOutputs(eq(DIGEST_UTIL.compute(erroringContext.action)), any(ActionResult.Builder.class), eq(erroringContext.execDir), eq(ImmutableList.of()), eq(ImmutableList.of()));
assertThat(erroredOperation.getResponse().unpack(ExecuteResponse.class).getStatus()).isEqualTo(erroredStatus);
verify(context, never()).putActionResult(any(ActionKey.class), any(ActionResult.class));
}
use of com.google.cloud.kms.v1.Digest in project bazel-buildfarm by bazelbuild.
the class FailoverInputStreamFactoryTest method DigestInPrimaryIsNotDelegated.
@Test
public void DigestInPrimaryIsNotDelegated() throws IOException, InterruptedException {
ByteString content = ByteString.copyFromUtf8("Hello, World");
Digest contentDigest = DIGEST_UTIL.compute(content);
FailoverInputStreamFactory failoverFactory = new FailoverInputStreamFactory(/* primary=*/
(digest, offset) -> {
if (digest.equals(contentDigest)) {
return content.newInput();
}
throw new NoSuchFileException(DigestUtil.toString(digest));
}, /* failover=*/
(digest, offset) -> {
throw new IOException("invalid");
});
InputStream in = failoverFactory.newInput(contentDigest, /* offset=*/
0);
assertThat(ByteString.readFrom(in)).isEqualTo(content);
}
use of com.google.cloud.kms.v1.Digest in project bazel-buildfarm by bazelbuild.
the class ContentAddressableStorageService method putAllBlobs.
private static Iterable<ListenableFuture<Response>> putAllBlobs(Instance instance, Iterable<Request> requests, long writeDeadlineAfter, TimeUnit writeDeadlineAfterUnits) {
ImmutableList.Builder<ListenableFuture<Response>> responses = new ImmutableList.Builder<>();
for (Request request : requests) {
Digest digest = request.getDigest();
ListenableFuture<Digest> future = putBlobFuture(instance, digest, request.getData(), writeDeadlineAfter, writeDeadlineAfterUnits, TracingMetadataUtils.fromCurrentContext());
responses.add(toResponseFuture(catching(transform(future, (d) -> Code.OK, directExecutor()), Throwable.class, (e) -> Status.fromThrowable(e).getCode(), directExecutor()), digest));
}
return responses.build();
}
use of com.google.cloud.kms.v1.Digest in project bazel-buildfarm by bazelbuild.
the class WriteStreamObserver method getWrite.
private Write getWrite(String resourceName) throws EntryLimitException, InvalidResourceNameException {
switch(detectResourceOperation(resourceName)) {
case UploadBlob:
Digest uploadBlobDigest = parseUploadBlobDigest(resourceName);
expectedCommittedSize = uploadBlobDigest.getSizeBytes();
return ByteStreamService.getUploadBlobWrite(instance, uploadBlobDigest, parseUploadBlobUUID(resourceName));
case OperationStream:
return ByteStreamService.getOperationStreamWrite(instance, resourceName);
case Blob:
default:
throw INVALID_ARGUMENT.withDescription("unknown resource operation for " + resourceName).asRuntimeException();
}
}
use of com.google.cloud.kms.v1.Digest in project bazel-buildfarm by bazelbuild.
the class Cat method reTreeToTree.
private static Tree reTreeToTree(DigestUtil digestUtil, build.bazel.remote.execution.v2.Tree reTree) {
Digest rootDigest = digestUtil.compute(reTree.getRoot());
Tree.Builder tree = Tree.newBuilder().setRootDigest(rootDigest);
tree.putDirectories(rootDigest.getHash(), reTree.getRoot());
for (Directory directory : reTree.getChildrenList()) {
tree.putDirectories(digestUtil.compute(directory).getHash(), directory);
}
return tree.build();
}
Aggregations