use of org.projectnessie.model.Branch in project nessie by projectnessie.
the class AbstractRestContents method verifyContentAndOperationTypesIndividually.
@ParameterizedTest
@MethodSource("contentAndOperationTypes")
public void verifyContentAndOperationTypesIndividually(ContentAndOperationType contentAndOperationType) throws BaseNessieClientServerException {
Branch branch = createBranch("contentAndOperation_" + contentAndOperationType);
CommitMultipleOperationsBuilder commit = getApi().commitMultipleOperations().branch(branch).commitMeta(CommitMeta.fromMessage("commit " + contentAndOperationType)).operation(contentAndOperationType.operation);
if (contentAndOperationType.globalOperation != null) {
commit.operation(contentAndOperationType.globalOperation);
}
commit.commit();
List<Entry> entries = getApi().getEntries().refName(branch.getName()).get().getEntries();
// Oh, yea - this is weird. The property ContentAndOperationType.operation.key.namespace is null
// (!!!)
// here, because somehow JUnit @MethodSource implementation re-constructs the objects returned
// from
// the source-method contentAndOperationTypes.
ContentKey fixedContentKey = ContentKey.of(contentAndOperationType.operation.getKey().getElements());
List<Entry> expect = contentAndOperationType.operation instanceof Put ? singletonList(Entry.builder().name(fixedContentKey).type(contentAndOperationType.type).build()) : emptyList();
assertThat(entries).containsExactlyInAnyOrderElementsOf(expect);
}
use of org.projectnessie.model.Branch in project nessie by projectnessie.
the class AbstractRestReferences method referenceNames.
@ParameterizedTest
@ValueSource(strings = { "normal", "with-no_space", "slash/thing" })
public void referenceNames(String refNamePart) throws BaseNessieClientServerException {
String tagName = "tag" + refNamePart;
String branchName = "branch" + refNamePart;
String branchName2 = "branch2" + refNamePart;
String root = "ref_name_" + refNamePart.replaceAll("[^a-z]", "");
Branch main = createBranch(root);
IcebergTable meta = IcebergTable.of("meep", 42, 42, 42, 42);
main = getApi().commitMultipleOperations().branchName(main.getName()).hash(main.getHash()).commitMeta(CommitMeta.builder().message("common-merge-ancestor").properties(ImmutableMap.of("prop1", "val1", "prop2", "val2")).build()).operation(Operation.Put.of(ContentKey.of("meep"), meta)).commit();
String someHash = main.getHash();
Reference createdTag = getApi().createReference().sourceRefName(main.getName()).reference(Tag.of(tagName, someHash)).create();
assertEquals(Tag.of(tagName, someHash), createdTag);
Reference createdBranch1 = getApi().createReference().sourceRefName(main.getName()).reference(Branch.of(branchName, someHash)).create();
assertEquals(Branch.of(branchName, someHash), createdBranch1);
Reference createdBranch2 = getApi().createReference().sourceRefName(main.getName()).reference(Branch.of(branchName2, someHash)).create();
assertEquals(Branch.of(branchName2, someHash), createdBranch2);
Map<String, Reference> references = getApi().getAllReferences().get().getReferences().stream().filter(r -> root.equals(r.getName()) || r.getName().endsWith(refNamePart)).collect(Collectors.toMap(Reference::getName, Function.identity()));
assertThat(references).containsAllEntriesOf(ImmutableMap.of(main.getName(), main, createdTag.getName(), createdTag, createdBranch1.getName(), createdBranch1, createdBranch2.getName(), createdBranch2));
assertThat(references.get(main.getName())).isInstanceOf(Branch.class);
assertThat(references.get(createdTag.getName())).isInstanceOf(Tag.class);
assertThat(references.get(createdBranch1.getName())).isInstanceOf(Branch.class);
assertThat(references.get(createdBranch2.getName())).isInstanceOf(Branch.class);
Reference tagRef = references.get(tagName);
Reference branchRef = references.get(branchName);
Reference branchRef2 = references.get(branchName2);
String tagHash = tagRef.getHash();
String branchHash = branchRef.getHash();
String branchHash2 = branchRef2.getHash();
assertThat(getApi().getReference().refName(tagName).get()).isEqualTo(tagRef);
assertThat(getApi().getReference().refName(branchName).get()).isEqualTo(branchRef);
EntriesResponse entries = getApi().getEntries().refName(tagName).get();
assertThat(entries).isNotNull();
entries = getApi().getEntries().refName(branchName).get();
assertThat(entries).isNotNull();
LogResponse log = getApi().getCommitLog().refName(tagName).get();
assertThat(log).isNotNull();
log = getApi().getCommitLog().refName(branchName).get();
assertThat(log).isNotNull();
// Need to have at least one op, otherwise all following operations (assignTag/Branch, merge,
// delete) will fail
meta = IcebergTable.of("foo", 42, 42, 42, 42);
getApi().commitMultipleOperations().branchName(branchName).hash(branchHash).operation(Put.of(ContentKey.of("some-key"), meta)).commitMeta(CommitMeta.fromMessage("One dummy op")).commit();
log = getApi().getCommitLog().refName(branchName).get();
String newHash = log.getLogEntries().get(0).getCommitMeta().getHash();
getApi().assignTag().tagName(tagName).hash(tagHash).assignTo(Branch.of(branchName, newHash)).assign();
getApi().assignBranch().branchName(branchName).hash(newHash).assignTo(Branch.of(branchName, newHash)).assign();
getApi().mergeRefIntoBranch().branchName(branchName2).hash(branchHash2).fromRefName(branchName).fromHash(newHash).merge();
}
use of org.projectnessie.model.Branch in project nessie by projectnessie.
the class AbstractRestReferences method testReferencesHaveMetadataProperties.
@Test
public void testReferencesHaveMetadataProperties() throws BaseNessieClientServerException {
String branchPrefix = "branchesHaveMetadataProperties";
String tagPrefix = "tagsHaveMetadataProperties";
int numBranches = 5;
int commitsPerBranch = 10;
for (int i = 0; i < numBranches; i++) {
Reference r = getApi().createReference().reference(Branch.of(branchPrefix + i, null)).create();
String currentHash = r.getHash();
currentHash = createCommits(r, 1, commitsPerBranch, currentHash);
getApi().createReference().reference(Tag.of(tagPrefix + i, currentHash)).sourceRefName(r.getName()).create();
}
// not fetching additional metadata
List<Reference> references = getApi().getAllReferences().get().getReferences();
Optional<Reference> main = references.stream().filter(r -> r.getName().equals("main")).findFirst();
assertThat(main).isPresent();
assertThat(references.stream().filter(r -> r.getName().startsWith(branchPrefix)).map(r -> (Branch) r)).hasSize(numBranches).allSatisfy(branch -> assertThat(branch.getMetadata()).isNull());
assertThat(references.stream().filter(r -> r.getName().startsWith(tagPrefix)).map(r -> (Tag) r)).hasSize(numBranches).allSatisfy(tag -> assertThat(tag.getMetadata()).isNull());
// fetching additional metadata for each reference
references = getApi().getAllReferences().fetch(FetchOption.ALL).get().getReferences();
assertThat(references.stream().filter(r -> r.getName().startsWith(branchPrefix)).map(r -> (Branch) r)).hasSize(numBranches).allSatisfy(branch -> verifyMetadataProperties(commitsPerBranch, 0, branch, main.get(), commitsPerBranch));
assertThat(references.stream().filter(r -> r.getName().startsWith(tagPrefix)).map(r -> (Tag) r)).hasSize(numBranches).allSatisfy(this::verifyMetadataProperties);
}
use of org.projectnessie.model.Branch in project nessie by projectnessie.
the class AbstractResteasyTest method testGetRefLog.
@Test
public void testGetRefLog() {
Branch branch = makeBranch("branch-temp");
IcebergTable table = IcebergTable.of("content-table", 42, 42, 42, 42);
ContentKey contentKey = ContentKey.of("key1");
commit(contentKey, table, branch, "code");
RefLogResponse refLogResponse = rest().get("reflogs").then().statusCode(200).extract().as(RefLogResponse.class);
assertThat(refLogResponse.getLogEntries().get(0).getOperation()).isEqualTo("COMMIT");
assertThat(refLogResponse.getLogEntries().get(0).getRefName()).isEqualTo("branch-temp");
assertThat(refLogResponse.getLogEntries().get(1).getOperation()).isEqualTo("CREATE_REFERENCE");
assertThat(refLogResponse.getLogEntries().get(1).getRefName()).isEqualTo("branch-temp");
RefLogResponse refLogResponse1 = rest().queryParam("endHash", refLogResponse.getLogEntries().get(1).getRefLogId()).get("reflogs").then().statusCode(200).extract().as(RefLogResponse.class);
assertThat(refLogResponse1.getLogEntries().get(0).getRefLogId()).isEqualTo(refLogResponse.getLogEntries().get(1).getRefLogId());
}
use of org.projectnessie.model.Branch in project nessie by projectnessie.
the class AbstractResteasyTest method testGetDiff.
@Test
public void testGetDiff() {
Branch fromBranch = makeBranch("getdiff-test-from");
Branch toBranch = makeBranch("getdiff-test-to");
IcebergTable fromTable = IcebergTable.of("content-table", 42, 42, 42, 42);
IcebergTable toTable = IcebergTable.of("content-table", 43, 43, 43, 43);
ContentKey contentKey = ContentKey.of("key1");
commit(contentKey, fromTable, fromBranch, "diffAuthor");
commit(contentKey, toTable, toBranch, "diffAuthor2");
DiffResponse diffResponse = rest().get(String.format("diffs/%s...%s", fromBranch.getName(), toBranch.getName())).then().statusCode(200).extract().as(DiffResponse.class);
assertThat(diffResponse).isNotNull();
assertThat(diffResponse.getDiffs()).hasSize(1);
DiffEntry diff = diffResponse.getDiffs().get(0);
assertThat(diff.getKey()).isEqualTo(contentKey);
assertThat(diff.getFrom()).isEqualTo(fromTable);
assertThat(diff.getTo()).isEqualTo(toTable);
}
Aggregations