use of org.projectnessie.client.api.NessieApiV1 in project nessie by projectnessie.
the class BaseIcebergTest method beforeEach.
@BeforeEach
public void beforeEach(@NessieUri URI x) throws IOException {
uri = x.toString();
this.api = HttpClientBuilder.builder().withUri(uri).build(NessieApiV1.class);
resetData();
try {
api.createReference().reference(Branch.of(branch, null)).create();
} catch (Exception e) {
// ignore, already created. Can't run this in BeforeAll as quarkus hasn't disabled auth
}
hadoopConfig = new Configuration();
catalog = initCatalog(branch);
}
use of org.projectnessie.client.api.NessieApiV1 in project nessie by projectnessie.
the class TestNessieApiHolder method oldVersionServer.
@Test
void oldVersionServer() throws Throwable {
ExtensionValuesStore valuesStore = new ExtensionValuesStore(null);
try {
Store store = new NamespaceAwareStore(valuesStore, Util.NAMESPACE);
ExtensionContext ctx = mock(ExtensionContext.class);
when(ctx.getRoot()).thenReturn(ctx);
when(ctx.getStore(any(Namespace.class))).thenReturn(store);
OldNessieApiHolder apiHolder = new OldNessieApiHolder(ctx, new ClientKey(Version.parseVersion("0.19.0"), "org.projectnessie.client.http.HttpClientBuilder", NessieApiV1.class, Collections.singletonMap("nessie.uri", "http://127.42.42.42:19120")));
try {
assertThat(apiHolder).satisfies(api -> assertThat(api.getApiInstance().getClass()).matches(Proxy::isProxyClass)).extracting(OldNessieApiHolder::getTranslatingApiInstance).extracting(TranslatingVersionNessieApi::getOldVersionApiInstance).extracting(Object::getClass).extracting(Class::getClassLoader).isNotSameAs(Thread.currentThread().getContextClassLoader());
} finally {
apiHolder.close();
}
} finally {
valuesStore.closeAllStoredCloseableValues();
}
}
use of org.projectnessie.client.api.NessieApiV1 in project nessie by projectnessie.
the class GenerateContent method execute.
@Override
public void execute() throws BaseNessieClientServerException {
if (runtimeDuration != null) {
if (runtimeDuration.isZero() || runtimeDuration.isNegative()) {
throw new ParameterException(spec.commandLine(), "Duration must be absent to greater than zero.");
}
}
Duration perCommitDuration = Optional.ofNullable(runtimeDuration).orElse(Duration.ZERO).dividedBy(numCommits);
ThreadLocalRandom random = ThreadLocalRandom.current();
String runStartTime = DateTimeFormatter.ofPattern("yyyy-MM-dd-HH-mm-ss").format(LocalDateTime.now());
List<ContentKey> tableNames = IntStream.range(0, numTables).mapToObj(i -> ContentKey.of(String.format("create-contents-%s", runStartTime), "contents", Integer.toString(i))).collect(Collectors.toList());
try (NessieApiV1 api = createNessieApiInstance()) {
Branch defaultBranch;
if (defaultBranchName == null) {
// Use the server's default branch.
defaultBranch = api.getDefaultBranch();
} else {
// Use the specified default branch.
try {
defaultBranch = (Branch) api.getReference().refName(defaultBranchName).get();
} catch (NessieReferenceNotFoundException e) {
// Create branch if it does not exist.
defaultBranch = api.getDefaultBranch();
defaultBranch = (Branch) api.createReference().reference(Branch.of(defaultBranchName, defaultBranch.getHash())).sourceRefName(defaultBranch.getName()).create();
}
}
List<String> branches = new ArrayList<>();
branches.add(defaultBranch.getName());
while (branches.size() < branchCount) {
// Create a new branch
String newBranchName = "branch-" + runStartTime + "_" + (branches.size() - 1);
Branch branch = Branch.of(newBranchName, defaultBranch.getHash());
spec.commandLine().getOut().printf("Creating branch '%s' from '%s' at %s%n", branch.getName(), defaultBranch.getName(), branch.getHash());
api.createReference().reference(branch).sourceRefName(defaultBranch.getName()).create();
branches.add(newBranchName);
}
spec.commandLine().getOut().printf("Starting contents generation, %d commits...%n", numCommits);
for (int i = 0; i < numCommits; i++) {
// Choose a random branch to commit to
String branchName = branches.get(random.nextInt(branches.size()));
Branch commitToBranch = (Branch) api.getReference().refName(branchName).get();
ContentKey tableName = tableNames.get(random.nextInt(tableNames.size()));
Content tableContents = api.getContent().refName(branchName).key(tableName).get().get(tableName);
Content newContents = createContents(tableContents, random);
spec.commandLine().getOut().printf("Committing content-key '%s' to branch '%s' at %s%n", tableName, commitToBranch.getName(), commitToBranch.getHash());
CommitMultipleOperationsBuilder commit = api.commitMultipleOperations().branch(commitToBranch).commitMeta(CommitMeta.builder().message(String.format("%s table %s on %s, commit #%d of %d", tableContents != null ? "Update" : "Create", tableName, branchName, i, numCommits)).author(System.getProperty("user.name")).authorTime(Instant.now()).build());
if (newContents instanceof IcebergTable || newContents instanceof IcebergView) {
commit.operation(Put.of(tableName, newContents, tableContents));
} else {
commit.operation(Put.of(tableName, newContents));
}
Branch newHead = commit.commit();
if (random.nextDouble() < newTagProbability) {
Tag tag = Tag.of("new-tag-" + random.nextLong(), newHead.getHash());
spec.commandLine().getOut().printf("Creating tag '%s' from '%s' at %s%n", tag.getName(), branchName, tag.getHash());
api.createReference().reference(tag).sourceRefName(branchName).create();
}
try {
TimeUnit.NANOSECONDS.sleep(perCommitDuration.toNanos());
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
break;
}
}
}
spec.commandLine().getOut().printf("Done creating contents.%n");
}
use of org.projectnessie.client.api.NessieApiV1 in project nessie by projectnessie.
the class ReadContent method execute.
@Override
public void execute() throws NessieNotFoundException {
try (NessieApiV1 api = createNessieApiInstance()) {
ContentKey contentKey = ContentKey.of(key);
spec.commandLine().getOut().printf("Reading content for key '%s'\n\n", contentKey);
Map<ContentKey, Content> contentMap = api.getContent().refName(ref).key(contentKey).get();
for (Map.Entry<ContentKey, Content> entry : contentMap.entrySet()) {
spec.commandLine().getOut().printf("Key: %s\n", entry.getKey());
if (isVerbose()) {
List<String> key = entry.getKey().getElements();
for (int i = 0; i < key.size(); i++) {
spec.commandLine().getOut().printf(" key[%d]: %s\n", i, key.get(i));
}
}
spec.commandLine().getOut().printf("Value: %s\n", entry.getValue());
}
spec.commandLine().getOut().printf("\nDone reading content for key '%s'\n\n", contentKey);
}
}
use of org.projectnessie.client.api.NessieApiV1 in project nessie by projectnessie.
the class ReadReferences method execute.
@Override
public void execute() {
try (NessieApiV1 api = createNessieApiInstance()) {
spec.commandLine().getOut().printf("Reading all references\n\n");
List<Reference> references = api.getAllReferences().get().getReferences();
references.forEach(reference -> spec.commandLine().getOut().printf(reference + "\n"));
spec.commandLine().getOut().printf("\nDone reading all references\n\n");
}
}
Aggregations