use of org.projectnessie.model.Branch in project nessie by projectnessie.
the class AbstractRestMergeTransplant method mergeWithNamespaces.
@ParameterizedTest
@EnumSource(value = ReferenceMode.class, mode = Mode.EXCLUDE, // merge requires the hash
names = "NAME_ONLY")
public void mergeWithNamespaces(ReferenceMode refMode) throws BaseNessieClientServerException {
Branch base = createBranch("merge-base");
Branch branch = createBranch("merge-branch");
Namespace ns = Namespace.parse("a.b.c");
// create the same namespace on both branches
getApi().createNamespace().namespace(ns).refName(branch.getName()).create();
getApi().createNamespace().namespace(ns).refName(base.getName()).create();
IcebergTable table1 = IcebergTable.of("merge-table1", 42, 42, 42, 42);
IcebergTable table2 = IcebergTable.of("merge-table2", 43, 43, 43, 43);
ContentKey key1 = ContentKey.of(ns, "key1");
ContentKey key2 = ContentKey.of(ns, "key2");
Branch committed1 = getApi().commitMultipleOperations().branchName(branch.getName()).hash(branch.getHash()).commitMeta(CommitMeta.fromMessage("test-merge-branch1")).operation(Put.of(key1, table1)).commit();
assertThat(committed1.getHash()).isNotNull();
Branch committed2 = getApi().commitMultipleOperations().branchName(branch.getName()).hash(committed1.getHash()).commitMeta(CommitMeta.fromMessage("test-merge-branch2")).operation(Put.of(key1, table1, table1)).commit();
assertThat(committed2.getHash()).isNotNull();
getApi().commitMultipleOperations().branchName(base.getName()).hash(base.getHash()).commitMeta(CommitMeta.fromMessage("test-merge-main")).operation(Put.of(key2, table2)).commit();
getApi().mergeRefIntoBranch().branch(base).fromRef(refMode.transform(committed2)).merge();
LogResponse log = getApi().getCommitLog().refName(base.getName()).untilHash(base.getHash()).get();
assertThat(log.getLogEntries().stream().map(LogEntry::getCommitMeta).map(CommitMeta::getMessage)).containsExactly("test-merge-branch2", "test-merge-branch1", "create namespace a.b.c", "test-merge-main", "create namespace a.b.c");
assertThat(getApi().getEntries().refName(base.getName()).get().getEntries().stream().map(Entry::getName)).containsExactlyInAnyOrder(key1, key2, ContentKey.of(ns.getElements()));
assertThat(getApi().getNamespace().refName(base.getName()).namespace(ns).get()).isNotNull();
}
use of org.projectnessie.model.Branch in project nessie by projectnessie.
the class AbstractRestMisc method checkServerErrorPropagation.
@Test
public void checkServerErrorPropagation() throws BaseNessieClientServerException {
Branch branch = createBranch("bar");
assertThatThrownBy(() -> getApi().createReference().sourceRefName("main").reference(branch).create()).isInstanceOf(NessieReferenceAlreadyExistsException.class).hasMessageContaining("already exists");
assertThatThrownBy(() -> getApi().commitMultipleOperations().branch(branch).commitMeta(CommitMeta.builder().author("author").message("committed-by-test").committer("disallowed-client-side-committer").build()).operation(Unchanged.of(ContentKey.of("table"))).commit()).isInstanceOf(NessieBadRequestException.class).hasMessageContaining("Cannot set the committer on the client side.");
}
use of org.projectnessie.model.Branch in project nessie by projectnessie.
the class AbstractRestNamespace method testNamespaceDeletion.
@Test
public void testNamespaceDeletion() throws BaseNessieClientServerException {
Branch branch = createBranch("testNamespaceDeletion");
CommitMultipleOperationsBuilder commit = getApi().commitMultipleOperations().branch(branch).commitMeta(CommitMeta.fromMessage("verifyAllContentAndOperationTypes"));
contentAndOperationTypes().flatMap(c -> c.globalOperation == null ? Stream.of(c.operation) : Stream.of(c.operation, c.globalOperation)).forEach(commit::operation);
commit.commit();
List<Entry> entries = contentAndOperationTypes().filter(c -> c.operation instanceof Put).map(c -> Entry.builder().type(c.type).name(c.operation.getKey()).build()).collect(Collectors.toList());
for (Entry e : entries) {
Namespace namespace = e.getName().getNamespace();
assertThat(getApi().getNamespace().refName(branch.getName()).namespace(namespace).get()).isEqualTo(namespace);
assertThatThrownBy(() -> getApi().deleteNamespace().refName(branch.getName()).namespace(namespace).delete()).isInstanceOf(NessieNamespaceNotEmptyException.class).hasMessage(String.format("Namespace '%s' is not empty", namespace));
}
}
use of org.projectnessie.model.Branch in project nessie by projectnessie.
the class AbstractRest method tearDown.
@AfterEach
public void tearDown() throws Exception {
Branch defaultBranch = api.getDefaultBranch();
for (Reference ref : api.getAllReferences().get().getReferences()) {
if (ref.getName().equals(defaultBranch.getName())) {
continue;
}
if (ref instanceof Branch) {
api.deleteBranch().branch((Branch) ref).delete();
} else if (ref instanceof Tag) {
api.deleteTag().tag((Tag) ref).delete();
}
}
api.close();
}
use of org.projectnessie.model.Branch in project nessie by projectnessie.
the class AbstractRest method createBranch.
protected Branch createBranch(String name, Branch from) throws BaseNessieClientServerException {
Branch expectedBranch;
String srcBranchName;
if (from == null) {
Branch main = getApi().getDefaultBranch();
expectedBranch = Branch.of(name, main.getHash());
srcBranchName = "main";
} else {
expectedBranch = Branch.of(name, from.getHash());
srcBranchName = from.getName();
}
Reference created = getApi().createReference().sourceRefName(srcBranchName).reference(Branch.of(name, expectedBranch.getHash())).create();
assertThat(created).isEqualTo(expectedBranch);
return expectedBranch;
}
Aggregations