use of com.google.cloud.kms.v1.Digest in project bazel-buildfarm by bazelbuild.
the class MemoryInstanceTest method actionWithMaximumTimeoutIsValid.
@Test
public void actionWithMaximumTimeoutIsValid() throws InterruptedException {
Digest actionDigestWithExcessiveTimeout = createAction(Action.newBuilder().setTimeout(MAXIMUM_ACTION_TIMEOUT));
Watcher watcher = mock(Watcher.class);
instance.execute(actionDigestWithExcessiveTimeout, /* skipCacheLookup=*/
true, ExecutionPolicy.getDefaultInstance(), ResultsCachePolicy.getDefaultInstance(), RequestMetadata.getDefaultInstance(), watcher);
verify(watcher, atLeastOnce()).observe(any(Operation.class));
}
use of com.google.cloud.kms.v1.Digest in project bazel-buildfarm by bazelbuild.
the class MemoryInstanceTest method createAction.
private Digest createAction(Action.Builder actionBuilder) {
Command command = Command.newBuilder().addArguments("echo").build();
ByteString commandBlob = command.toByteString();
Digest commandDigest = DIGEST_UTIL.compute(commandBlob);
storage.put(commandDigest.getHash(), commandBlob);
Directory root = Directory.getDefaultInstance();
Digest rootDigest = DIGEST_UTIL.compute(root);
Action action = actionBuilder.setCommandDigest(commandDigest).setInputRootDigest(rootDigest).build();
ByteString actionBlob = action.toByteString();
Digest actionDigest = DIGEST_UTIL.compute(actionBlob);
storage.put(actionDigest.getHash(), actionBlob);
return actionDigest;
}
use of com.google.cloud.kms.v1.Digest in project bazel-buildfarm by bazelbuild.
the class AbstractServerInstanceTest method undeclaredWorkingDirectoryIsInvalid.
@Test
public void undeclaredWorkingDirectoryIsInvalid() {
AbstractServerInstance instance = new DummyServerInstance();
Digest inputRootDigest = DIGEST_UTIL.compute(Directory.getDefaultInstance());
PreconditionFailure.Builder preconditionFailureBuilder = PreconditionFailure.newBuilder();
instance.validateCommand(Command.newBuilder().addArguments("foo").setWorkingDirectory("not/an/input").build(), inputRootDigest, ImmutableSet.of(), ImmutableSet.of(), ImmutableMap.of(inputRootDigest, Directory.getDefaultInstance()), preconditionFailureBuilder);
PreconditionFailure preconditionFailure = preconditionFailureBuilder.build();
assertThat(preconditionFailure.getViolationsCount()).isEqualTo(1);
Violation violation = preconditionFailure.getViolationsList().get(0);
assertThat(violation.getType()).isEqualTo(VIOLATION_TYPE_INVALID);
assertThat(violation.getSubject()).isEqualTo(INVALID_COMMAND);
assertThat(violation.getDescription()).isEqualTo("working directory is not an input directory");
}
use of com.google.cloud.kms.v1.Digest in project bazel-buildfarm by bazelbuild.
the class AbstractServerInstanceTest method outputDirectoriesFilesAreEnsuredPresent.
@SuppressWarnings("unchecked")
@Test
public void outputDirectoriesFilesAreEnsuredPresent() throws Exception {
// our test subjects - these should appear in the findMissingBlobs request
Digest fileDigest = DIGEST_UTIL.compute(ByteString.copyFromUtf8("Output Directory Root File Content"));
Digest childFileDigest = DIGEST_UTIL.compute(ByteString.copyFromUtf8("Output Directory Child File Content"));
Digest otherFileDigest = DIGEST_UTIL.compute(ByteString.copyFromUtf8("Another Output Directory File Content"));
// setup block and ensureOutputsPresent trigger
RequestMetadata requestMetadata = RequestMetadata.newBuilder().setCorrelatedInvocationsId("https://localhost:12345/test/build?ENSURE_OUTPUTS_PRESENT=true#92af266a-c5bf-48ca-a723-344ae516a786").build();
ContentAddressableStorage contentAddressableStorage = mock(ContentAddressableStorage.class);
ActionCache actionCache = mock(ActionCache.class);
AbstractServerInstance instance = new DummyServerInstance(contentAddressableStorage, actionCache);
Tree tree = Tree.newBuilder().setRoot(Directory.newBuilder().addFiles(FileNode.newBuilder().setDigest(fileDigest)).build()).addChildren(Directory.newBuilder().addFiles(FileNode.newBuilder().setDigest(childFileDigest)).build()).build();
Tree otherTree = Tree.newBuilder().setRoot(Directory.newBuilder().addFiles(FileNode.newBuilder().setDigest(otherFileDigest)).build()).build();
Digest treeDigest = DIGEST_UTIL.compute(tree);
doBlob(contentAddressableStorage, treeDigest, tree.toByteString(), requestMetadata);
Digest otherTreeDigest = DIGEST_UTIL.compute(otherTree);
doBlob(contentAddressableStorage, otherTreeDigest, otherTree.toByteString(), requestMetadata);
ActionKey actionKey = DigestUtil.asActionKey(DIGEST_UTIL.compute(ByteString.copyFromUtf8("action")));
ActionResult actionResult = ActionResult.newBuilder().addOutputDirectories(OutputDirectory.newBuilder().setTreeDigest(treeDigest).build()).addOutputDirectories(OutputDirectory.newBuilder().setTreeDigest(otherTreeDigest).build()).build();
when(actionCache.get(actionKey)).thenReturn(immediateFuture(actionResult));
// invocation
assertThat(instance.getActionResult(actionKey, requestMetadata).get()).isEqualTo(actionResult);
// validation
ArgumentCaptor<Iterable<Digest>> findMissingBlobsCaptor = ArgumentCaptor.forClass(Iterable.class);
verify(contentAddressableStorage, times(1)).get(eq(treeDigest), /* offset=*/
eq(0L), eq(treeDigest.getSizeBytes()), any(ServerCallStreamObserver.class), eq(requestMetadata));
verify(contentAddressableStorage, times(1)).findMissingBlobs(findMissingBlobsCaptor.capture());
assertThat(findMissingBlobsCaptor.getValue()).containsAtLeast(fileDigest, childFileDigest, otherFileDigest);
}
use of com.google.cloud.kms.v1.Digest in project bazel-buildfarm by bazelbuild.
the class AbstractServerInstanceTest method unsortedDirectoryInputIsInvalid.
@Test
public void unsortedDirectoryInputIsInvalid() {
Directory emptyDirectory = Directory.getDefaultInstance();
Digest emptyDirectoryDigest = DIGEST_UTIL.compute(emptyDirectory);
PreconditionFailure.Builder preconditionFailure = PreconditionFailure.newBuilder();
AbstractServerInstance.validateActionInputDirectory(ACTION_INPUT_ROOT_DIRECTORY_PATH, Directory.newBuilder().addAllDirectories(ImmutableList.of(DirectoryNode.newBuilder().setName("foo").setDigest(emptyDirectoryDigest).build(), DirectoryNode.newBuilder().setName("bar").setDigest(emptyDirectoryDigest).build())).build(), /* pathDigests=*/
new Stack<>(), /* visited=*/
Sets.newHashSet(), /* directoriesIndex=*/
ImmutableMap.of(emptyDirectoryDigest, emptyDirectory), /* onInputFiles=*/
file -> {
}, /* onInputDirectories=*/
directory -> {
}, /* onInputDigests=*/
digest -> {
}, preconditionFailure);
assertThat(preconditionFailure.getViolationsCount()).isEqualTo(1);
Violation violation = preconditionFailure.getViolationsList().get(0);
assertThat(violation.getType()).isEqualTo(VIOLATION_TYPE_INVALID);
assertThat(violation.getSubject()).isEqualTo("/: foo > bar");
assertThat(violation.getDescription()).isEqualTo(DIRECTORY_NOT_SORTED);
}
Aggregations