From bac15bfdc7eb568502b2f5c091bd2b85d5bb8682 Mon Sep 17 00:00:00 2001 From: Sebastian Martinez Date: Wed, 6 Dec 2023 13:20:08 +0100 Subject: [PATCH] Rename tracking to seeding Following the heartwood release 6ca7da2 we also rename tracking to seeding, and update our `radicle-httpd` endpoints and configs. Also updates test suites to handle new CLI commands. --- httpd-client/index.ts | 4 +- httpd-client/lib/project.ts | 2 +- src/views/projects/Commit.svelte | 4 +- .../{TrackButton.svelte => SeedButton.svelte} | 28 ++++---- src/views/projects/History.svelte | 4 +- src/views/projects/Issue.svelte | 4 +- src/views/projects/Issue/New.svelte | 4 +- src/views/projects/Issues.svelte | 4 +- src/views/projects/Layout.svelte | 10 +-- src/views/projects/Patch.svelte | 4 +- src/views/projects/Patches.svelte | 4 +- src/views/projects/Source.svelte | 4 +- src/views/projects/Source/PeerSelector.svelte | 2 +- src/views/projects/router.ts | 66 +++++++++---------- tests/e2e/node.spec.ts | 2 +- tests/e2e/project.spec.ts | 4 +- tests/support/fixtures.ts | 33 +++++++--- tests/support/globalSetup.ts | 2 +- tests/support/heartwood-version | 2 +- tests/support/peerManager.ts | 12 +++- 20 files changed, 110 insertions(+), 89 deletions(-) rename src/views/projects/Header/{TrackButton.svelte => SeedButton.svelte} (71%) diff --git a/httpd-client/index.ts b/httpd-client/index.ts index fdf5b2be8..d9fdd816a 100644 --- a/httpd-client/index.ts +++ b/httpd-client/index.ts @@ -99,8 +99,8 @@ const nodeSchema = object({ }), }), }), - policy: union([literal("track"), literal("block")]), - scope: union([literal("trusted"), literal("all")]), + policy: union([literal("allow"), literal("block")]), + scope: union([literal("followed"), literal("all")]), }).nullable(), state: union([literal("running"), literal("stopped")]), }); diff --git a/httpd-client/lib/project.ts b/httpd-client/lib/project.ts index 9ec796449..a204438b1 100644 --- a/httpd-client/lib/project.ts +++ b/httpd-client/lib/project.ts @@ -70,7 +70,7 @@ const projectSchema = object({ open: number(), closed: number(), }), - trackings: number(), + seeding: number(), }); const projectsSchema = array(projectSchema); diff --git a/src/views/projects/Commit.svelte b/src/views/projects/Commit.svelte index 78d94e92e..091be70d6 100644 --- a/src/views/projects/Commit.svelte +++ b/src/views/projects/Commit.svelte @@ -12,7 +12,7 @@ export let baseUrl: BaseUrl; export let commit: Commit; export let project: Project; - export let tracking: boolean; + export let seeding: boolean; $: header = commit.commit; @@ -42,7 +42,7 @@ } - +
diff --git a/src/views/projects/Header/TrackButton.svelte b/src/views/projects/Header/SeedButton.svelte similarity index 71% rename from src/views/projects/Header/TrackButton.svelte rename to src/views/projects/Header/SeedButton.svelte index 85e7b452a..ff606d62f 100644 --- a/src/views/projects/Header/TrackButton.svelte +++ b/src/views/projects/Header/SeedButton.svelte @@ -1,6 +1,4 @@ - +
string; - export let tracking: boolean; + export let seeding: boolean; const api = new HttpdClient(baseUrl); @@ -460,7 +460,7 @@ } - +
diff --git a/src/views/projects/Issue/New.svelte b/src/views/projects/Issue/New.svelte index e2d1e0dc6..22b869d71 100644 --- a/src/views/projects/Issue/New.svelte +++ b/src/views/projects/Issue/New.svelte @@ -25,7 +25,7 @@ export let baseUrl: BaseUrl; export let project: Project; export let rawPath: (commit?: string) => string; - export let tracking: boolean; + export let seeding: boolean; let preview: boolean = false; let selectionStart = 0; @@ -144,7 +144,7 @@ } - +
{#if session}
diff --git a/src/views/projects/Issues.svelte b/src/views/projects/Issues.svelte index 28cee444f..9ec5bf47c 100644 --- a/src/views/projects/Issues.svelte +++ b/src/views/projects/Issues.svelte @@ -25,7 +25,7 @@ export let issues: Issue[]; export let project: Project; export let state: IssueState["status"]; - export let tracking: boolean; + export let seeding: boolean; let loading = false; let page = 0; @@ -79,7 +79,7 @@ } - +
diff --git a/src/views/projects/Layout.svelte b/src/views/projects/Layout.svelte index b0200b831..2ebf5673c 100644 --- a/src/views/projects/Layout.svelte +++ b/src/views/projects/Layout.svelte @@ -13,12 +13,12 @@ import CopyableId from "@app/components/CopyableId.svelte"; import Header from "@app/views/projects/Header.svelte"; import Link from "@app/components/Link.svelte"; - import TrackButton from "@app/views/projects/Header/TrackButton.svelte"; + import SeedButton from "@app/views/projects/Header/SeedButton.svelte"; export let activeTab: ActiveTab = undefined; export let baseUrl: BaseUrl; export let project: Project; - export let tracking: boolean; + export let seeding: boolean; const render = (content: string): string => dompurify.sanitize(markdown.parse(content) as string); @@ -99,9 +99,9 @@
-
diff --git a/src/views/projects/Patch.svelte b/src/views/projects/Patch.svelte index 60ef4ea52..6d4bf1b1a 100644 --- a/src/views/projects/Patch.svelte +++ b/src/views/projects/Patch.svelte @@ -83,7 +83,7 @@ export let rawPath: (commit?: string) => string; export let project: Project; export let view: PatchView; - export let tracking: boolean; + export let seeding: boolean; $: api = new HttpdClient(baseUrl); @@ -638,7 +638,7 @@ } - +
diff --git a/src/views/projects/Patches.svelte b/src/views/projects/Patches.svelte index da76808af..e2f20c0fc 100644 --- a/src/views/projects/Patches.svelte +++ b/src/views/projects/Patches.svelte @@ -22,7 +22,7 @@ export let patches: Patch[]; export let project: Project; export let state: PatchState["status"]; - export let tracking: boolean; + export let seeding: boolean; let loading = false; let page = 0; @@ -84,7 +84,7 @@ } - +
diff --git a/src/views/projects/Source.svelte b/src/views/projects/Source.svelte index 4c23672b5..ffb0911f4 100644 --- a/src/views/projects/Source.svelte +++ b/src/views/projects/Source.svelte @@ -25,7 +25,7 @@ export let project: Project; export let revision: string | undefined; export let tree: Tree; - export let tracking: boolean; + export let seeding: boolean; // Whether the mobile file tree is visible. let mobileFileTree = false; @@ -136,7 +136,7 @@ } - +
diff --git a/src/views/projects/router.ts b/src/views/projects/router.ts index 2ecd95d07..42eb770c7 100644 --- a/src/views/projects/router.ts +++ b/src/views/projects/router.ts @@ -115,7 +115,7 @@ export type ProjectLoadedRoute = path: string; rawPath: (commit?: string) => string; blobResult: BlobResult; - tracking: boolean; + seeding: boolean; }; } | { @@ -130,7 +130,7 @@ export type ProjectLoadedRoute = tree: Tree; commitHeaders: CommitHeader[]; totalCommitCount: number; - tracking: boolean; + seeding: boolean; }; } | { @@ -139,7 +139,7 @@ export type ProjectLoadedRoute = baseUrl: BaseUrl; project: Project; commit: Commit; - tracking: boolean; + seeding: boolean; }; } | { @@ -149,7 +149,7 @@ export type ProjectLoadedRoute = project: Project; rawPath: (commit?: string) => string; issue: Issue; - tracking: boolean; + seeding: boolean; }; } | { @@ -159,7 +159,7 @@ export type ProjectLoadedRoute = project: Project; issues: Issue[]; state: IssueState["status"]; - tracking: boolean; + seeding: boolean; }; } | { @@ -168,7 +168,7 @@ export type ProjectLoadedRoute = baseUrl: BaseUrl; project: Project; rawPath: (commit?: string) => string; - tracking: boolean; + seeding: boolean; }; } | { @@ -178,7 +178,7 @@ export type ProjectLoadedRoute = project: Project; patches: Patch[]; state: PatchState["status"]; - tracking: boolean; + seeding: boolean; }; } | { @@ -189,7 +189,7 @@ export type ProjectLoadedRoute = rawPath: (commit?: string) => string; patch: Patch; view: PatchView; - tracking: boolean; + seeding: boolean; }; }; @@ -244,7 +244,7 @@ function parseRevisionToOid( } } -async function isLocalNodeTracking(route: ProjectRoute): Promise { +async function isLocalNodeSeeding(route: ProjectRoute): Promise { if (isLocal(route.node.hostname)) { return true; } else { @@ -278,10 +278,10 @@ export async function loadProjectRoute( } else if (route.resource === "project.history") { return await loadHistoryView(route); } else if (route.resource === "project.commit") { - const [project, commit, tracking] = await Promise.all([ + const [project, commit, seeding] = await Promise.all([ api.project.getById(route.project), api.project.getCommitBySha(route.project, route.commit), - isLocalNodeTracking(route), + isLocalNodeSeeding(route), ]); return { @@ -290,14 +290,14 @@ export async function loadProjectRoute( baseUrl: route.node, project, commit, - tracking, + seeding, }, }; } else if (route.resource === "project.issue") { - const [project, issue, tracking] = await Promise.all([ + const [project, issue, seeding] = await Promise.all([ api.project.getById(route.project), api.project.getIssueById(route.project, route.issue), - isLocalNodeTracking(route), + isLocalNodeSeeding(route), ]); return { resource: "project.issue", @@ -306,7 +306,7 @@ export async function loadProjectRoute( project, rawPath, issue, - tracking, + seeding, }, }; } else if (route.resource === "project.patch") { @@ -314,9 +314,9 @@ export async function loadProjectRoute( } else if (route.resource === "project.issues") { return await loadIssuesView(route); } else if (route.resource === "project.newIssue") { - const [project, tracking] = await Promise.all([ + const [project, seeding] = await Promise.all([ api.project.getById(route.project), - isLocalNodeTracking(route), + isLocalNodeSeeding(route), ]); return { resource: "project.newIssue", @@ -324,7 +324,7 @@ export async function loadProjectRoute( baseUrl: route.node, project, rawPath, - tracking, + seeding, }, }; } else if (route.resource === "project.patches") { @@ -372,14 +372,14 @@ async function loadPatchesView( const searchParams = new URLSearchParams(route.search || ""); const state = (searchParams.get("state") as PatchState["status"]) || "open"; - const [project, patches, tracking] = await Promise.all([ + const [project, patches, seeding] = await Promise.all([ api.project.getById(route.project), api.project.getAllPatches(route.project, { state, page: 0, perPage: PATCHES_PER_PAGE, }), - isLocalNodeTracking(route), + isLocalNodeSeeding(route), ]); return { @@ -389,7 +389,7 @@ async function loadPatchesView( patches, state, project, - tracking, + seeding, }, }; } @@ -400,14 +400,14 @@ async function loadIssuesView( const api = new HttpdClient(route.node); const state = route.state || "open"; - const [project, issues, tracking] = await Promise.all([ + const [project, issues, seeding] = await Promise.all([ api.project.getById(route.project), api.project.getAllIssues(route.project, { state, page: 0, perPage: ISSUES_PER_PAGE, }), - isLocalNodeTracking(route), + isLocalNodeSeeding(route), ]); return { @@ -417,7 +417,7 @@ async function loadIssuesView( issues, state, project, - tracking, + seeding, }, }; } @@ -431,11 +431,11 @@ async function loadTreeView( route.project }${commit ? `/${commit}` : ""}`; - const [project, peers, branchMap, tracking] = await Promise.all([ + const [project, peers, branchMap, seeding] = await Promise.all([ api.project.getById(route.project), api.project.getAllRemotes(route.project), getPeerBranches(api, route.project, route.peer), - isLocalNodeTracking(route), + isLocalNodeSeeding(route), ]); if (route.route) { @@ -472,7 +472,7 @@ async function loadTreeView( tree, path, blobResult, - tracking, + seeding, }, }; } @@ -543,14 +543,14 @@ async function loadHistoryView( ); } - const [tree, commitsResponse, tracking] = await Promise.all([ + const [tree, commitsResponse, seeding] = await Promise.all([ api.project.getTree(route.project, commitId), await api.project.getAllCommits(project.id, { parent: commitId, page: 0, perPage: COMMITS_PER_PAGE, }), - isLocalNodeTracking(route), + isLocalNodeSeeding(route), ]); return { @@ -565,7 +565,7 @@ async function loadHistoryView( tree, commitHeaders: commitsResponse.commits.map(c => c.commit), totalCommitCount: commitsResponse.stats.commits, - tracking, + seeding, }, }; } @@ -578,10 +578,10 @@ async function loadPatchView( `${route.node.scheme}://${route.node.hostname}:${route.node.port}/raw/${ route.project }${commit ? `/${commit}` : ""}`; - const [project, patch, tracking] = await Promise.all([ + const [project, patch, seeding] = await Promise.all([ api.project.getById(route.project), api.project.getPatchById(route.project, route.patch), - isLocalNodeTracking(route), + isLocalNodeSeeding(route), ]); const latestRevision = patch.revisions[patch.revisions.length - 1]; @@ -637,7 +637,7 @@ async function loadPatchView( rawPath, patch, view, - tracking, + seeding, }, }; } diff --git a/tests/e2e/node.spec.ts b/tests/e2e/node.spec.ts index 68f8e79a2..18cb91178 100644 --- a/tests/e2e/node.spec.ts +++ b/tests/e2e/node.spec.ts @@ -12,7 +12,7 @@ test("node metadata", async ({ page, peerManager }) => { }); await peer.startHttpd(); await peer.startNode({ - policy: "track", + policy: "allow", scope: "all", alias: "palm", externalAddresses: ["seed.radicle.test:8123"], diff --git a/tests/e2e/project.spec.ts b/tests/e2e/project.spec.ts index 23629ac3e..4e93c7fe9 100644 --- a/tests/e2e/project.spec.ts +++ b/tests/e2e/project.spec.ts @@ -65,8 +65,8 @@ test("navigate to project", async ({ page }) => { // Show rendered README.md contents. await expect(page.getByText("Git test repository")).toBeVisible(); - // Number of nodes tracking this project. - await expect(page.getByText("Tracking 3")).toBeVisible(); + // Number of nodes seeding this project. + await expect(page.getByText("Seeding 3")).toBeVisible(); }); test("show source tree at specific revision", async ({ page }) => { diff --git a/tests/support/fixtures.ts b/tests/support/fixtures.ts index e76585a71..d9f8c9d03 100644 --- a/tests/support/fixtures.ts +++ b/tests/support/fixtures.ts @@ -367,7 +367,7 @@ export async function createSourceBrowsingFixture( } export async function createCobsFixture(peer: RadiclePeer) { - await peer.rad(["track", peer.nodeId, "--alias", "palm"]); + await peer.rad(["follow", peer.nodeId, "--alias", "palm"]); await Fs.mkdir(Path.join(tmpDir, "repos", "cobs")); const { projectFolder, defaultBranch } = await createProject(peer, { name: "cobs", @@ -392,7 +392,7 @@ export async function createCobsFixture(peer: RadiclePeer) { }, ); await peer.rad( - ["assign", issueOne, "--to", `did:key:${peer.nodeId}`], + ["issue", "assign", issueOne, "--add", `did:key:${peer.nodeId}`], createOptions(projectFolder, 1), ); const { stdout: commentIssueOne } = await peer.rad( @@ -537,7 +537,7 @@ export async function createCobsFixture(peer: RadiclePeer) { createOptions(projectFolder, 5), ); await peer.rad( - ["review", patchOne, "-m", "LGTM", "--accept"], + ["patch", "review", patchOne, "-m", "LGTM", "--accept"], createOptions(projectFolder, 6), ); await patch.merge( @@ -557,7 +557,14 @@ export async function createCobsFixture(peer: RadiclePeer) { { cwd: projectFolder }, ); await peer.rad( - ["review", patchTwo, "-m", "Not the README we are looking for", "--reject"], + [ + "patch", + "review", + patchTwo, + "-m", + "Not the README we are looking for", + "--reject", + ], createOptions(projectFolder, 1), ); @@ -579,11 +586,11 @@ export async function createCobsFixture(peer: RadiclePeer) { { cwd: projectFolder }, ); await peer.rad( - ["patch", "label", patchThree, "--label", "documentation"], + ["patch", "label", patchThree, "--add", "documentation"], createOptions(projectFolder, 1), ); await peer.rad( - ["review", patchThree, "-m", "This looks better"], + ["patch", "review", patchThree, "-m", "This looks better"], createOptions(projectFolder, 2), ); await Fs.appendFile( @@ -605,7 +612,14 @@ export async function createCobsFixture(peer: RadiclePeer) { createOptions(projectFolder, 3), ); await peer.rad( - ["review", patchThree, "-m", "No this doesn't look better", "--reject"], + [ + "patch", + "review", + patchThree, + "-m", + "No this doesn't look better", + "--reject", + ], createOptions(projectFolder, 2), ); @@ -618,7 +632,10 @@ export async function createCobsFixture(peer: RadiclePeer) { [], { cwd: projectFolder }, ); - await peer.rad(["review", patchFour], createOptions(projectFolder, 1)); + await peer.rad( + ["patch", "review", patchFour], + createOptions(projectFolder, 1), + ); await peer.rad( ["patch", "archive", patchFour], createOptions(projectFolder, 2), diff --git a/tests/support/globalSetup.ts b/tests/support/globalSetup.ts index 9010f5c3b..48af308b2 100644 --- a/tests/support/globalSetup.ts +++ b/tests/support/globalSetup.ts @@ -54,7 +54,7 @@ export default async function globalSetup(): Promise<() => void> { if (!process.env.SKIP_FIXTURE_CREATION) { await palm.startHttpd(defaultHttpdPort); - await palm.startNode({ policy: "track", scope: "all", alias: "palm" }); + await palm.startNode({ policy: "allow", scope: "all", alias: "palm" }); try { console.log("Creating source-browsing fixture"); diff --git a/tests/support/heartwood-version b/tests/support/heartwood-version index 13f4a8a02..fd7bbaaf0 100644 --- a/tests/support/heartwood-version +++ b/tests/support/heartwood-version @@ -1 +1 @@ -1af9480b088c3eec800040a1bdcd09941a31bcf3 +6ca7da276839e5217b340dbfff8cd9095d8464c5 diff --git a/tests/support/peerManager.ts b/tests/support/peerManager.ts index f7cbb46e4..a5e2c3d48 100644 --- a/tests/support/peerManager.ts +++ b/tests/support/peerManager.ts @@ -131,9 +131,13 @@ export const NodeConfigSchema = object({ routingMaxAge: number(), fetchConcurrency: number(), gossipMaxAge: number(), + rate: object({ + inbound: object({ fillRate: number(), capacity: number() }), + outbound: object({ fillRate: number(), capacity: number() }), + }), }), - policy: union([literal("track"), literal("block")]), - scope: union([literal("trusted"), literal("all")]), + policy: union([literal("allow"), literal("block")]), + scope: union([literal("followed"), literal("all")]), }), }); @@ -297,6 +301,10 @@ export class RadiclePeer { routingMaxAge: 604800, fetchConcurrency: 1, gossipMaxAge: 1209600, + rate: { + inbound: { fillRate: 0.2, capacity: 32 }, + outbound: { fillRate: 1.0, capacity: 64 }, + }, }, });