node: Rename commands with new "seed" nomenclature
This commit is contained in:
parent
f453090e27
commit
e65595c4c7
|
|
@ -217,7 +217,7 @@ pub fn clone<G: Signer>(
|
||||||
let me = *signer.public_key();
|
let me = *signer.public_key();
|
||||||
|
|
||||||
// Track.
|
// Track.
|
||||||
if node.track_repo(id, scope)? {
|
if node.seed(id, scope)? {
|
||||||
term::success!(
|
term::success!(
|
||||||
"Tracking relationship established for {} with scope '{scope}'",
|
"Tracking relationship established for {} with scope '{scope}'",
|
||||||
term::format::tertiary(id)
|
term::format::tertiary(id)
|
||||||
|
|
|
||||||
|
|
@ -98,7 +98,7 @@ pub fn follow(
|
||||||
node: &mut Node,
|
node: &mut Node,
|
||||||
profile: &Profile,
|
profile: &Profile,
|
||||||
) -> Result<(), anyhow::Error> {
|
) -> Result<(), anyhow::Error> {
|
||||||
let followed = match node.track_node(nid, alias.clone()) {
|
let followed = match node.follow(nid, alias.clone()) {
|
||||||
Ok(updated) => updated,
|
Ok(updated) => updated,
|
||||||
Err(e) if e.is_connection_err() => {
|
Err(e) if e.is_connection_err() => {
|
||||||
let mut config = profile.tracking_mut()?;
|
let mut config = profile.tracking_mut()?;
|
||||||
|
|
|
||||||
|
|
@ -76,7 +76,7 @@ pub fn run(options: Options, ctx: impl term::Context) -> anyhow::Result<()> {
|
||||||
let mut node = radicle::Node::new(profile.socket());
|
let mut node = radicle::Node::new(profile.socket());
|
||||||
let nid = options.nid;
|
let nid = options.nid;
|
||||||
|
|
||||||
let unfollowed = match node.untrack_node(nid) {
|
let unfollowed = match node.unfollow(nid) {
|
||||||
Ok(updated) => updated,
|
Ok(updated) => updated,
|
||||||
Err(e) if e.is_connection_err() => {
|
Err(e) if e.is_connection_err() => {
|
||||||
let mut config = profile.tracking_mut()?;
|
let mut config = profile.tracking_mut()?;
|
||||||
|
|
|
||||||
|
|
@ -60,7 +60,7 @@ pub fn track(
|
||||||
node: &mut Node,
|
node: &mut Node,
|
||||||
profile: &Profile,
|
profile: &Profile,
|
||||||
) -> Result<bool, anyhow::Error> {
|
) -> Result<bool, anyhow::Error> {
|
||||||
match node.track_repo(rid, scope) {
|
match node.seed(rid, scope) {
|
||||||
Ok(updated) => Ok(updated),
|
Ok(updated) => Ok(updated),
|
||||||
Err(e) if e.is_connection_err() => {
|
Err(e) if e.is_connection_err() => {
|
||||||
let mut config = profile.tracking_mut()?;
|
let mut config = profile.tracking_mut()?;
|
||||||
|
|
@ -73,7 +73,7 @@ pub fn track(
|
||||||
/// Untrack a repository by first trying to untrack through the node, and if the node isn't running,
|
/// Untrack a repository by first trying to untrack through the node, and if the node isn't running,
|
||||||
/// by updating the tracking database directly.
|
/// by updating the tracking database directly.
|
||||||
pub fn untrack(rid: Id, node: &mut Node, profile: &Profile) -> Result<bool, anyhow::Error> {
|
pub fn untrack(rid: Id, node: &mut Node, profile: &Profile) -> Result<bool, anyhow::Error> {
|
||||||
match node.untrack_repo(rid) {
|
match node.unseed(rid) {
|
||||||
Ok(updated) => Ok(updated),
|
Ok(updated) => Ok(updated),
|
||||||
Err(e) if e.is_connection_err() => {
|
Err(e) if e.is_connection_err() => {
|
||||||
let mut config = profile.tracking_mut()?;
|
let mut config = profile.tracking_mut()?;
|
||||||
|
|
|
||||||
|
|
@ -261,7 +261,7 @@ fn rad_id() {
|
||||||
let mut alice = alice.spawn();
|
let mut alice = alice.spawn();
|
||||||
let bob = bob.spawn();
|
let bob = bob.spawn();
|
||||||
|
|
||||||
alice.handle.track_repo(acme, Scope::All).unwrap();
|
alice.handle.seed(acme, Scope::All).unwrap();
|
||||||
alice.connect(&bob).converge([&bob]);
|
alice.connect(&bob).converge([&bob]);
|
||||||
let events = alice.handle.events();
|
let events = alice.handle.events();
|
||||||
|
|
||||||
|
|
@ -316,8 +316,8 @@ fn rad_id_multi_delegate() {
|
||||||
let mut bob = bob.spawn();
|
let mut bob = bob.spawn();
|
||||||
let mut eve = eve.spawn();
|
let mut eve = eve.spawn();
|
||||||
|
|
||||||
alice.handle.track_repo(acme, Scope::All).unwrap();
|
alice.handle.seed(acme, Scope::All).unwrap();
|
||||||
bob.handle.track_node(eve.id, None).unwrap();
|
bob.handle.follow(eve.id, None).unwrap();
|
||||||
alice.connect(&bob).converge([&bob]);
|
alice.connect(&bob).converge([&bob]);
|
||||||
eve.connect(&alice).converge([&alice]);
|
eve.connect(&alice).converge([&alice]);
|
||||||
|
|
||||||
|
|
@ -544,7 +544,7 @@ fn rad_patch_checkout_force() {
|
||||||
let mut alice = alice.spawn();
|
let mut alice = alice.spawn();
|
||||||
let mut bob = bob.spawn();
|
let mut bob = bob.spawn();
|
||||||
|
|
||||||
bob.handle.track_repo(acme, Scope::All).unwrap();
|
bob.handle.seed(acme, Scope::All).unwrap();
|
||||||
alice.connect(&bob).converge([&bob]);
|
alice.connect(&bob).converge([&bob]);
|
||||||
|
|
||||||
test(
|
test(
|
||||||
|
|
@ -699,8 +699,8 @@ fn rad_clean() {
|
||||||
let mut alice = alice.spawn();
|
let mut alice = alice.spawn();
|
||||||
let mut bob = bob.spawn();
|
let mut bob = bob.spawn();
|
||||||
let mut eve = eve.spawn();
|
let mut eve = eve.spawn();
|
||||||
alice.handle.track_repo(acme, Scope::All).unwrap();
|
alice.handle.seed(acme, Scope::All).unwrap();
|
||||||
eve.handle.track_repo(acme, Scope::Followed).unwrap();
|
eve.handle.seed(acme, Scope::Followed).unwrap();
|
||||||
|
|
||||||
bob.connect(&alice).converge([&alice]);
|
bob.connect(&alice).converge([&alice]);
|
||||||
eve.connect(&alice).converge([&alice]);
|
eve.connect(&alice).converge([&alice]);
|
||||||
|
|
@ -769,7 +769,7 @@ fn rad_clone() {
|
||||||
let mut alice = alice.spawn();
|
let mut alice = alice.spawn();
|
||||||
let mut bob = bob.spawn();
|
let mut bob = bob.spawn();
|
||||||
// Prevent Alice from fetching Bob's fork, as we're not testing that and it may cause errors.
|
// Prevent Alice from fetching Bob's fork, as we're not testing that and it may cause errors.
|
||||||
alice.handle.track_repo(acme, Scope::Followed).unwrap();
|
alice.handle.seed(acme, Scope::Followed).unwrap();
|
||||||
|
|
||||||
bob.connect(&alice).converge([&alice]);
|
bob.connect(&alice).converge([&alice]);
|
||||||
|
|
||||||
|
|
@ -791,7 +791,7 @@ fn rad_clone_all() {
|
||||||
let mut bob = bob.spawn();
|
let mut bob = bob.spawn();
|
||||||
let mut eve = eve.spawn();
|
let mut eve = eve.spawn();
|
||||||
|
|
||||||
alice.handle.track_repo(acme, Scope::All).unwrap();
|
alice.handle.seed(acme, Scope::All).unwrap();
|
||||||
bob.connect(&alice).converge([&alice]);
|
bob.connect(&alice).converge([&alice]);
|
||||||
eve.connect(&alice).converge([&alice]);
|
eve.connect(&alice).converge([&alice]);
|
||||||
|
|
||||||
|
|
@ -873,8 +873,8 @@ fn rad_clone_connect() {
|
||||||
|
|
||||||
let eve = eve.spawn();
|
let eve = eve.spawn();
|
||||||
|
|
||||||
alice.handle.track_repo(acme, Scope::Followed).unwrap();
|
alice.handle.seed(acme, Scope::Followed).unwrap();
|
||||||
bob.handle.track_repo(acme, Scope::Followed).unwrap();
|
bob.handle.seed(acme, Scope::Followed).unwrap();
|
||||||
alice.connect(&bob);
|
alice.connect(&bob);
|
||||||
bob.routes_to(&[(acme, alice.id)]);
|
bob.routes_to(&[(acme, alice.id)]);
|
||||||
eve.routes_to(&[(acme, alice.id), (acme, bob.id)]);
|
eve.routes_to(&[(acme, alice.id), (acme, bob.id)]);
|
||||||
|
|
@ -1105,7 +1105,7 @@ fn test_cob_replication() {
|
||||||
let mut bob = bob.spawn();
|
let mut bob = bob.spawn();
|
||||||
let events = alice.handle.events();
|
let events = alice.handle.events();
|
||||||
|
|
||||||
alice.handle.track_node(bob.id, None).unwrap();
|
alice.handle.follow(bob.id, None).unwrap();
|
||||||
alice.connect(&bob);
|
alice.connect(&bob);
|
||||||
|
|
||||||
bob.routes_to(&[(rid, alice.id)]);
|
bob.routes_to(&[(rid, alice.id)]);
|
||||||
|
|
@ -1165,8 +1165,8 @@ fn test_cob_deletion() {
|
||||||
let mut alice = alice.spawn();
|
let mut alice = alice.spawn();
|
||||||
let mut bob = bob.spawn();
|
let mut bob = bob.spawn();
|
||||||
|
|
||||||
alice.handle.track_repo(rid, Scope::All).unwrap();
|
alice.handle.seed(rid, Scope::All).unwrap();
|
||||||
bob.handle.track_repo(rid, Scope::All).unwrap();
|
bob.handle.seed(rid, Scope::All).unwrap();
|
||||||
alice.connect(&bob);
|
alice.connect(&bob);
|
||||||
bob.routes_to(&[(rid, alice.id)]);
|
bob.routes_to(&[(rid, alice.id)]);
|
||||||
|
|
||||||
|
|
@ -1229,8 +1229,8 @@ fn rad_sync() {
|
||||||
let mut bob = bob.spawn();
|
let mut bob = bob.spawn();
|
||||||
let mut eve = eve.spawn();
|
let mut eve = eve.spawn();
|
||||||
|
|
||||||
bob.handle.track_repo(acme, Scope::All).unwrap();
|
bob.handle.seed(acme, Scope::All).unwrap();
|
||||||
eve.handle.track_repo(acme, Scope::All).unwrap();
|
eve.handle.seed(acme, Scope::All).unwrap();
|
||||||
|
|
||||||
alice.connect(&bob);
|
alice.connect(&bob);
|
||||||
eve.connect(&alice);
|
eve.connect(&alice);
|
||||||
|
|
@ -1359,7 +1359,7 @@ fn rad_remote() {
|
||||||
let mut bob = bob.spawn();
|
let mut bob = bob.spawn();
|
||||||
alice
|
alice
|
||||||
.handle
|
.handle
|
||||||
.track_node(bob.id, Some(Alias::new("bob")))
|
.follow(bob.id, Some(Alias::new("bob")))
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
bob.connect(&alice);
|
bob.connect(&alice);
|
||||||
|
|
|
||||||
|
|
@ -120,7 +120,7 @@ where
|
||||||
|
|
||||||
CommandResult::Okay(sessions).to_writer(writer)?;
|
CommandResult::Okay(sessions).to_writer(writer)?;
|
||||||
}
|
}
|
||||||
Command::TrackRepo { rid, scope } => match handle.track_repo(rid, scope) {
|
Command::Seed { rid, scope } => match handle.seed(rid, scope) {
|
||||||
Ok(result) => {
|
Ok(result) => {
|
||||||
CommandResult::updated(result).to_writer(writer)?;
|
CommandResult::updated(result).to_writer(writer)?;
|
||||||
}
|
}
|
||||||
|
|
@ -128,7 +128,7 @@ where
|
||||||
return Err(CommandError::Runtime(e));
|
return Err(CommandError::Runtime(e));
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
Command::UntrackRepo { rid } => match handle.untrack_repo(rid) {
|
Command::Unseed { rid } => match handle.unseed(rid) {
|
||||||
Ok(result) => {
|
Ok(result) => {
|
||||||
CommandResult::updated(result).to_writer(writer)?;
|
CommandResult::updated(result).to_writer(writer)?;
|
||||||
}
|
}
|
||||||
|
|
@ -136,7 +136,7 @@ where
|
||||||
return Err(CommandError::Runtime(e));
|
return Err(CommandError::Runtime(e));
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
Command::TrackNode { nid, alias } => match handle.track_node(nid, alias) {
|
Command::Follow { nid, alias } => match handle.follow(nid, alias) {
|
||||||
Ok(result) => {
|
Ok(result) => {
|
||||||
CommandResult::updated(result).to_writer(writer)?;
|
CommandResult::updated(result).to_writer(writer)?;
|
||||||
}
|
}
|
||||||
|
|
@ -144,7 +144,7 @@ where
|
||||||
return Err(CommandError::Runtime(e));
|
return Err(CommandError::Runtime(e));
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
Command::UntrackNode { nid } => match handle.untrack_node(nid) {
|
Command::Unfollow { nid } => match handle.unfollow(nid) {
|
||||||
Ok(result) => {
|
Ok(result) => {
|
||||||
CommandResult::updated(result).to_writer(writer)?;
|
CommandResult::updated(result).to_writer(writer)?;
|
||||||
}
|
}
|
||||||
|
|
@ -297,14 +297,14 @@ mod tests {
|
||||||
// Wait for node to be online.
|
// Wait for node to be online.
|
||||||
while !handle.is_running() {}
|
while !handle.is_running() {}
|
||||||
|
|
||||||
assert!(handle.track_repo(proj, Scope::default()).unwrap());
|
assert!(handle.seed(proj, Scope::default()).unwrap());
|
||||||
assert!(!handle.track_repo(proj, Scope::default()).unwrap());
|
assert!(!handle.seed(proj, Scope::default()).unwrap());
|
||||||
assert!(handle.untrack_repo(proj).unwrap());
|
assert!(handle.unseed(proj).unwrap());
|
||||||
assert!(!handle.untrack_repo(proj).unwrap());
|
assert!(!handle.unseed(proj).unwrap());
|
||||||
|
|
||||||
assert!(handle.track_node(peer, Some(Alias::new("alice"))).unwrap());
|
assert!(handle.follow(peer, Some(Alias::new("alice"))).unwrap());
|
||||||
assert!(!handle.track_node(peer, Some(Alias::new("alice"))).unwrap());
|
assert!(!handle.follow(peer, Some(Alias::new("alice"))).unwrap());
|
||||||
assert!(handle.untrack_node(peer).unwrap());
|
assert!(handle.unfollow(peer).unwrap());
|
||||||
assert!(!handle.untrack_node(peer).unwrap());
|
assert!(!handle.unfollow(peer).unwrap());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -201,25 +201,25 @@ impl radicle::node::Handle for Handle {
|
||||||
receiver.recv().map_err(Error::from)
|
receiver.recv().map_err(Error::from)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn track_node(&mut self, id: NodeId, alias: Option<Alias>) -> Result<bool, Error> {
|
fn follow(&mut self, id: NodeId, alias: Option<Alias>) -> Result<bool, Error> {
|
||||||
let (sender, receiver) = chan::bounded(1);
|
let (sender, receiver) = chan::bounded(1);
|
||||||
self.command(service::Command::TrackNode(id, alias, sender))?;
|
self.command(service::Command::TrackNode(id, alias, sender))?;
|
||||||
receiver.recv().map_err(Error::from)
|
receiver.recv().map_err(Error::from)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn untrack_node(&mut self, id: NodeId) -> Result<bool, Error> {
|
fn unfollow(&mut self, id: NodeId) -> Result<bool, Error> {
|
||||||
let (sender, receiver) = chan::bounded(1);
|
let (sender, receiver) = chan::bounded(1);
|
||||||
self.command(service::Command::UntrackNode(id, sender))?;
|
self.command(service::Command::UntrackNode(id, sender))?;
|
||||||
receiver.recv().map_err(Error::from)
|
receiver.recv().map_err(Error::from)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn track_repo(&mut self, id: Id, scope: tracking::Scope) -> Result<bool, Error> {
|
fn seed(&mut self, id: Id, scope: tracking::Scope) -> Result<bool, Error> {
|
||||||
let (sender, receiver) = chan::bounded(1);
|
let (sender, receiver) = chan::bounded(1);
|
||||||
self.command(service::Command::TrackRepo(id, scope, sender))?;
|
self.command(service::Command::TrackRepo(id, scope, sender))?;
|
||||||
receiver.recv().map_err(Error::from)
|
receiver.recv().map_err(Error::from)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn untrack_repo(&mut self, id: Id) -> Result<bool, Error> {
|
fn unseed(&mut self, id: Id) -> Result<bool, Error> {
|
||||||
let (sender, receiver) = chan::bounded(1);
|
let (sender, receiver) = chan::bounded(1);
|
||||||
self.command(service::Command::UntrackRepo(id, sender))?;
|
self.command(service::Command::UntrackRepo(id, sender))?;
|
||||||
receiver.recv().map_err(Error::from)
|
receiver.recv().map_err(Error::from)
|
||||||
|
|
|
||||||
|
|
@ -60,15 +60,15 @@ impl radicle::node::Handle for Handle {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
fn track_repo(&mut self, id: Id, _scope: tracking::Scope) -> Result<bool, Self::Error> {
|
fn seed(&mut self, id: Id, _scope: tracking::Scope) -> Result<bool, Self::Error> {
|
||||||
Ok(self.tracking_repos.lock().unwrap().insert(id))
|
Ok(self.tracking_repos.lock().unwrap().insert(id))
|
||||||
}
|
}
|
||||||
|
|
||||||
fn untrack_repo(&mut self, id: Id) -> Result<bool, Self::Error> {
|
fn unseed(&mut self, id: Id) -> Result<bool, Self::Error> {
|
||||||
Ok(self.tracking_repos.lock().unwrap().remove(&id))
|
Ok(self.tracking_repos.lock().unwrap().remove(&id))
|
||||||
}
|
}
|
||||||
|
|
||||||
fn track_node(&mut self, id: NodeId, _alias: Option<Alias>) -> Result<bool, Self::Error> {
|
fn follow(&mut self, id: NodeId, _alias: Option<Alias>) -> Result<bool, Self::Error> {
|
||||||
Ok(self.tracking_nodes.lock().unwrap().insert(id))
|
Ok(self.tracking_nodes.lock().unwrap().insert(id))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -79,7 +79,7 @@ impl radicle::node::Handle for Handle {
|
||||||
Ok(Box::new(std::iter::empty()))
|
Ok(Box::new(std::iter::empty()))
|
||||||
}
|
}
|
||||||
|
|
||||||
fn untrack_node(&mut self, id: NodeId) -> Result<bool, Self::Error> {
|
fn unfollow(&mut self, id: NodeId) -> Result<bool, Self::Error> {
|
||||||
Ok(self.tracking_nodes.lock().unwrap().remove(&id))
|
Ok(self.tracking_nodes.lock().unwrap().remove(&id))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -163,7 +163,7 @@ fn test_replication() {
|
||||||
let inventory = alice.storage.inventory().unwrap();
|
let inventory = alice.storage.inventory().unwrap();
|
||||||
assert!(inventory.is_empty());
|
assert!(inventory.is_empty());
|
||||||
|
|
||||||
let tracked = alice.handle.track_repo(acme, Scope::All).unwrap();
|
let tracked = alice.handle.seed(acme, Scope::All).unwrap();
|
||||||
assert!(tracked);
|
assert!(tracked);
|
||||||
|
|
||||||
let seeds = alice.handle.seeds(acme).unwrap();
|
let seeds = alice.handle.seeds(acme).unwrap();
|
||||||
|
|
@ -229,7 +229,7 @@ fn test_replication_ref_in_sigrefs() {
|
||||||
alice.connect(&bob);
|
alice.connect(&bob);
|
||||||
converge([&alice, &bob]);
|
converge([&alice, &bob]);
|
||||||
|
|
||||||
alice.handle.track_repo(acme, Scope::All).unwrap();
|
alice.handle.seed(acme, Scope::All).unwrap();
|
||||||
let result = alice.handle.fetch(acme, bob.id, DEFAULT_TIMEOUT).unwrap();
|
let result = alice.handle.fetch(acme, bob.id, DEFAULT_TIMEOUT).unwrap();
|
||||||
|
|
||||||
assert_matches!(result, FetchResult::Success { .. });
|
assert_matches!(result, FetchResult::Success { .. });
|
||||||
|
|
@ -283,8 +283,8 @@ fn test_replication_invalid() {
|
||||||
alice.connect(&bob);
|
alice.connect(&bob);
|
||||||
converge([&alice, &bob]);
|
converge([&alice, &bob]);
|
||||||
|
|
||||||
alice.handle.track_node(*carol.public_key(), None).unwrap();
|
alice.handle.follow(*carol.public_key(), None).unwrap();
|
||||||
alice.handle.track_repo(acme, Scope::Followed).unwrap();
|
alice.handle.seed(acme, Scope::Followed).unwrap();
|
||||||
let result = alice.handle.fetch(acme, bob.id, DEFAULT_TIMEOUT).unwrap();
|
let result = alice.handle.fetch(acme, bob.id, DEFAULT_TIMEOUT).unwrap();
|
||||||
|
|
||||||
// Fetch is successful despite not fetching Carol's refs, since she isn't a delegate.
|
// Fetch is successful despite not fetching Carol's refs, since she isn't a delegate.
|
||||||
|
|
@ -314,7 +314,7 @@ fn test_migrated_clone() {
|
||||||
alice.connect(&bob);
|
alice.connect(&bob);
|
||||||
converge([&alice, &bob]);
|
converge([&alice, &bob]);
|
||||||
|
|
||||||
let tracked = bob.handle.track_repo(acme, Scope::All).unwrap();
|
let tracked = bob.handle.seed(acme, Scope::All).unwrap();
|
||||||
assert!(tracked);
|
assert!(tracked);
|
||||||
|
|
||||||
let result = bob.handle.fetch(acme, alice.id, DEFAULT_TIMEOUT).unwrap();
|
let result = bob.handle.fetch(acme, alice.id, DEFAULT_TIMEOUT).unwrap();
|
||||||
|
|
@ -367,7 +367,7 @@ fn test_dont_fetch_owned_refs() {
|
||||||
alice.connect(&bob);
|
alice.connect(&bob);
|
||||||
converge([&alice, &bob]);
|
converge([&alice, &bob]);
|
||||||
|
|
||||||
assert!(bob.handle.track_repo(acme, Scope::Followed).unwrap());
|
assert!(bob.handle.seed(acme, Scope::Followed).unwrap());
|
||||||
|
|
||||||
let result = bob.handle.fetch(acme, alice.id, DEFAULT_TIMEOUT).unwrap();
|
let result = bob.handle.fetch(acme, alice.id, DEFAULT_TIMEOUT).unwrap();
|
||||||
assert!(result.is_success());
|
assert!(result.is_success());
|
||||||
|
|
@ -412,9 +412,9 @@ fn test_fetch_followed_remotes() {
|
||||||
followed.len() < signers.len(),
|
followed.len() < signers.len(),
|
||||||
"Bob is only trusting a subset of peers"
|
"Bob is only trusting a subset of peers"
|
||||||
);
|
);
|
||||||
assert!(bob.handle.track_repo(acme, Scope::Followed).unwrap());
|
assert!(bob.handle.seed(acme, Scope::Followed).unwrap());
|
||||||
for nid in &followed {
|
for nid in &followed {
|
||||||
assert!(bob.handle.track_node(*nid, None).unwrap());
|
assert!(bob.handle.follow(*nid, None).unwrap());
|
||||||
}
|
}
|
||||||
|
|
||||||
let result = bob.handle.fetch(acme, alice.id, DEFAULT_TIMEOUT).unwrap();
|
let result = bob.handle.fetch(acme, alice.id, DEFAULT_TIMEOUT).unwrap();
|
||||||
|
|
@ -450,8 +450,8 @@ fn test_missing_remote() {
|
||||||
alice.connect(&bob);
|
alice.connect(&bob);
|
||||||
converge([&alice, &bob]);
|
converge([&alice, &bob]);
|
||||||
|
|
||||||
assert!(bob.handle.track_repo(acme, Scope::Followed).unwrap());
|
assert!(bob.handle.seed(acme, Scope::Followed).unwrap());
|
||||||
assert!(bob.handle.track_node(*carol.public_key(), None).unwrap());
|
assert!(bob.handle.follow(*carol.public_key(), None).unwrap());
|
||||||
let result = bob.handle.fetch(acme, alice.id, DEFAULT_TIMEOUT).unwrap();
|
let result = bob.handle.fetch(acme, alice.id, DEFAULT_TIMEOUT).unwrap();
|
||||||
assert!(result.is_success());
|
assert!(result.is_success());
|
||||||
log::debug!(target: "test", "Fetch complete with {}", bob.id);
|
log::debug!(target: "test", "Fetch complete with {}", bob.id);
|
||||||
|
|
@ -477,8 +477,8 @@ fn test_fetch_preserve_owned_refs() {
|
||||||
alice.connect(&bob);
|
alice.connect(&bob);
|
||||||
converge([&alice, &bob]);
|
converge([&alice, &bob]);
|
||||||
|
|
||||||
assert!(bob.handle.track_repo(acme, Scope::Followed).unwrap());
|
assert!(bob.handle.seed(acme, Scope::Followed).unwrap());
|
||||||
assert!(bob.handle.track_node(alice.id, None).unwrap());
|
assert!(bob.handle.follow(alice.id, None).unwrap());
|
||||||
|
|
||||||
let result = bob.handle.fetch(acme, alice.id, DEFAULT_TIMEOUT).unwrap();
|
let result = bob.handle.fetch(acme, alice.id, DEFAULT_TIMEOUT).unwrap();
|
||||||
assert!(result.is_success());
|
assert!(result.is_success());
|
||||||
|
|
@ -526,7 +526,7 @@ fn test_clone() {
|
||||||
|
|
||||||
transport::local::register(alice.storage.clone());
|
transport::local::register(alice.storage.clone());
|
||||||
|
|
||||||
let _ = alice.handle.track_repo(acme, Scope::All).unwrap();
|
let _ = alice.handle.seed(acme, Scope::All).unwrap();
|
||||||
let seeds = alice.handle.seeds(acme).unwrap();
|
let seeds = alice.handle.seeds(acme).unwrap();
|
||||||
assert!(seeds.is_connected(&bob.id));
|
assert!(seeds.is_connected(&bob.id));
|
||||||
|
|
||||||
|
|
@ -584,7 +584,7 @@ fn test_fetch_up_to_date() {
|
||||||
|
|
||||||
transport::local::register(alice.storage.clone());
|
transport::local::register(alice.storage.clone());
|
||||||
|
|
||||||
let _ = alice.handle.track_repo(acme, Scope::All).unwrap();
|
let _ = alice.handle.seed(acme, Scope::All).unwrap();
|
||||||
let result = alice.handle.fetch(acme, bob.id, DEFAULT_TIMEOUT).unwrap();
|
let result = alice.handle.fetch(acme, bob.id, DEFAULT_TIMEOUT).unwrap();
|
||||||
assert!(result.is_success());
|
assert!(result.is_success());
|
||||||
|
|
||||||
|
|
@ -615,7 +615,7 @@ fn test_large_fetch() {
|
||||||
let mut bob = bob.spawn();
|
let mut bob = bob.spawn();
|
||||||
let bob_events = bob.handle.events();
|
let bob_events = bob.handle.events();
|
||||||
|
|
||||||
bob.handle.track_repo(rid, Scope::All).unwrap();
|
bob.handle.seed(rid, Scope::All).unwrap();
|
||||||
alice.connect(&bob);
|
alice.connect(&bob);
|
||||||
|
|
||||||
bob_events
|
bob_events
|
||||||
|
|
@ -688,10 +688,10 @@ fn test_concurrent_fetches() {
|
||||||
let bob_events = bob.handle.events();
|
let bob_events = bob.handle.events();
|
||||||
|
|
||||||
for rid in &bob_repos {
|
for rid in &bob_repos {
|
||||||
alice.handle.track_repo(*rid, Scope::All).unwrap();
|
alice.handle.seed(*rid, Scope::All).unwrap();
|
||||||
}
|
}
|
||||||
for rid in &alice_repos {
|
for rid in &alice_repos {
|
||||||
bob.handle.track_repo(*rid, Scope::All).unwrap();
|
bob.handle.seed(*rid, Scope::All).unwrap();
|
||||||
}
|
}
|
||||||
alice.connect(&bob);
|
alice.connect(&bob);
|
||||||
|
|
||||||
|
|
@ -801,8 +801,8 @@ fn test_non_fastforward_sigrefs() {
|
||||||
let bob = bob.spawn();
|
let bob = bob.spawn();
|
||||||
let mut eve = eve.spawn();
|
let mut eve = eve.spawn();
|
||||||
|
|
||||||
alice.handle.track_repo(rid, Scope::All).unwrap();
|
alice.handle.seed(rid, Scope::All).unwrap();
|
||||||
eve.handle.track_repo(rid, Scope::All).unwrap();
|
eve.handle.seed(rid, Scope::All).unwrap();
|
||||||
|
|
||||||
alice.connect(&bob);
|
alice.connect(&bob);
|
||||||
alice.connect(&eve);
|
alice.connect(&eve);
|
||||||
|
|
@ -875,8 +875,8 @@ fn test_outdated_sigrefs() {
|
||||||
let mut bob = bob.spawn();
|
let mut bob = bob.spawn();
|
||||||
let mut eve = eve.spawn();
|
let mut eve = eve.spawn();
|
||||||
|
|
||||||
bob.handle.track_repo(rid, Scope::All).unwrap();
|
bob.handle.seed(rid, Scope::All).unwrap();
|
||||||
eve.handle.track_repo(rid, Scope::All).unwrap();
|
eve.handle.seed(rid, Scope::All).unwrap();
|
||||||
alice.connect(&bob);
|
alice.connect(&bob);
|
||||||
bob.connect(&eve);
|
bob.connect(&eve);
|
||||||
eve.connect(&alice);
|
eve.connect(&alice);
|
||||||
|
|
@ -892,7 +892,7 @@ fn test_outdated_sigrefs() {
|
||||||
|
|
||||||
alice
|
alice
|
||||||
.handle
|
.handle
|
||||||
.track_node(eve.id, Some(Alias::new("eve")))
|
.follow(eve.id, Some(Alias::new("eve")))
|
||||||
.unwrap();
|
.unwrap();
|
||||||
alice.handle.fetch(rid, eve.id, DEFAULT_TIMEOUT).unwrap();
|
alice.handle.fetch(rid, eve.id, DEFAULT_TIMEOUT).unwrap();
|
||||||
let repo = alice.storage.repository(rid).unwrap();
|
let repo = alice.storage.repository(rid).unwrap();
|
||||||
|
|
@ -934,7 +934,7 @@ fn test_outdated_sigrefs() {
|
||||||
|
|
||||||
alice
|
alice
|
||||||
.handle
|
.handle
|
||||||
.track_node(bob.id, Some(Alias::new("bob")))
|
.follow(bob.id, Some(Alias::new("bob")))
|
||||||
.unwrap();
|
.unwrap();
|
||||||
assert_matches!(
|
assert_matches!(
|
||||||
alice.handle.fetch(rid, bob.id, DEFAULT_TIMEOUT).unwrap(),
|
alice.handle.fetch(rid, bob.id, DEFAULT_TIMEOUT).unwrap(),
|
||||||
|
|
@ -966,8 +966,8 @@ fn test_outdated_delegate_sigrefs() {
|
||||||
let mut bob = bob.spawn();
|
let mut bob = bob.spawn();
|
||||||
let mut eve = eve.spawn();
|
let mut eve = eve.spawn();
|
||||||
|
|
||||||
bob.handle.track_repo(rid, Scope::All).unwrap();
|
bob.handle.seed(rid, Scope::All).unwrap();
|
||||||
eve.handle.track_repo(rid, Scope::All).unwrap();
|
eve.handle.seed(rid, Scope::All).unwrap();
|
||||||
alice.connect(&bob);
|
alice.connect(&bob);
|
||||||
bob.connect(&eve);
|
bob.connect(&eve);
|
||||||
eve.connect(&alice);
|
eve.connect(&alice);
|
||||||
|
|
@ -983,7 +983,7 @@ fn test_outdated_delegate_sigrefs() {
|
||||||
|
|
||||||
alice
|
alice
|
||||||
.handle
|
.handle
|
||||||
.track_node(eve.id, Some(Alias::new("eve")))
|
.follow(eve.id, Some(Alias::new("eve")))
|
||||||
.unwrap();
|
.unwrap();
|
||||||
alice.handle.fetch(rid, eve.id, DEFAULT_TIMEOUT).unwrap();
|
alice.handle.fetch(rid, eve.id, DEFAULT_TIMEOUT).unwrap();
|
||||||
let repo = alice.storage.repository(rid).unwrap();
|
let repo = alice.storage.repository(rid).unwrap();
|
||||||
|
|
@ -1023,9 +1023,7 @@ fn test_outdated_delegate_sigrefs() {
|
||||||
|
|
||||||
log::debug!(target: "test", "Alice fetches from Bob..");
|
log::debug!(target: "test", "Alice fetches from Bob..");
|
||||||
|
|
||||||
eve.handle
|
eve.handle.follow(bob.id, Some(Alias::new("bob"))).unwrap();
|
||||||
.track_node(bob.id, Some(Alias::new("bob")))
|
|
||||||
.unwrap();
|
|
||||||
assert_matches!(
|
assert_matches!(
|
||||||
eve.handle.fetch(rid, bob.id, DEFAULT_TIMEOUT).unwrap(),
|
eve.handle.fetch(rid, bob.id, DEFAULT_TIMEOUT).unwrap(),
|
||||||
FetchResult::Success { .. }
|
FetchResult::Success { .. }
|
||||||
|
|
@ -1054,8 +1052,8 @@ fn missing_default_branch() {
|
||||||
let mut alice = alice.spawn();
|
let mut alice = alice.spawn();
|
||||||
let mut bob = bob.spawn();
|
let mut bob = bob.spawn();
|
||||||
|
|
||||||
alice.handle.track_repo(rid, Scope::All).unwrap();
|
alice.handle.seed(rid, Scope::All).unwrap();
|
||||||
bob.handle.track_repo(rid, Scope::All).unwrap();
|
bob.handle.seed(rid, Scope::All).unwrap();
|
||||||
alice.connect(&bob);
|
alice.connect(&bob);
|
||||||
converge([&alice, &bob]);
|
converge([&alice, &bob]);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -412,21 +412,21 @@ pub enum Command {
|
||||||
timeout: time::Duration,
|
timeout: time::Duration,
|
||||||
},
|
},
|
||||||
|
|
||||||
/// Track the given repository.
|
/// Seed the given repository.
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
TrackRepo { rid: Id, scope: tracking::Scope },
|
Seed { rid: Id, scope: tracking::Scope },
|
||||||
|
|
||||||
/// Untrack the given repository.
|
/// Unseed the given repository.
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
UntrackRepo { rid: Id },
|
Unseed { rid: Id },
|
||||||
|
|
||||||
/// Track the given node.
|
/// Follow the given node.
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
TrackNode { nid: NodeId, alias: Option<Alias> },
|
Follow { nid: NodeId, alias: Option<Alias> },
|
||||||
|
|
||||||
/// Untrack the given node.
|
/// Unfollow the given node.
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
UntrackNode { nid: NodeId },
|
Unfollow { nid: NodeId },
|
||||||
|
|
||||||
/// Get the node's status.
|
/// Get the node's status.
|
||||||
Status,
|
Status,
|
||||||
|
|
@ -775,15 +775,15 @@ pub trait Handle: Clone + Sync + Send {
|
||||||
from: NodeId,
|
from: NodeId,
|
||||||
timeout: time::Duration,
|
timeout: time::Duration,
|
||||||
) -> Result<FetchResult, Self::Error>;
|
) -> Result<FetchResult, Self::Error>;
|
||||||
/// Start tracking the given project. Doesn't do anything if the project is already
|
/// Start seeding the given repo. May update the scope. Does nothing if the
|
||||||
/// tracked.
|
/// repo is already seeded.
|
||||||
fn track_repo(&mut self, id: Id, scope: tracking::Scope) -> Result<bool, Self::Error>;
|
fn seed(&mut self, id: Id, scope: tracking::Scope) -> Result<bool, Self::Error>;
|
||||||
/// Start tracking the given node.
|
/// Start following the given peer.
|
||||||
fn track_node(&mut self, id: NodeId, alias: Option<Alias>) -> Result<bool, Self::Error>;
|
fn follow(&mut self, id: NodeId, alias: Option<Alias>) -> Result<bool, Self::Error>;
|
||||||
/// Untrack the given project and delete it from storage.
|
/// Un-seed the given repo and delete it from storage.
|
||||||
fn untrack_repo(&mut self, id: Id) -> Result<bool, Self::Error>;
|
fn unseed(&mut self, id: Id) -> Result<bool, Self::Error>;
|
||||||
/// Untrack the given node.
|
/// Unfollow the given peer.
|
||||||
fn untrack_node(&mut self, id: NodeId) -> Result<bool, Self::Error>;
|
fn unfollow(&mut self, id: NodeId) -> Result<bool, Self::Error>;
|
||||||
/// Notify the service that a project has been updated, and announce local refs.
|
/// Notify the service that a project has been updated, and announce local refs.
|
||||||
fn announce_refs(&mut self, id: Id) -> Result<RefsAt, Self::Error>;
|
fn announce_refs(&mut self, id: Id) -> Result<RefsAt, Self::Error>;
|
||||||
/// Announce local inventory.
|
/// Announce local inventory.
|
||||||
|
|
@ -981,29 +981,29 @@ impl Handle for Node {
|
||||||
Ok(result)
|
Ok(result)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn track_node(&mut self, nid: NodeId, alias: Option<Alias>) -> Result<bool, Error> {
|
fn follow(&mut self, nid: NodeId, alias: Option<Alias>) -> Result<bool, Error> {
|
||||||
let mut line = self.call::<Success>(Command::TrackNode { nid, alias }, DEFAULT_TIMEOUT)?;
|
let mut line = self.call::<Success>(Command::Follow { nid, alias }, DEFAULT_TIMEOUT)?;
|
||||||
let response = line.next().ok_or(Error::EmptyResponse)??;
|
let response = line.next().ok_or(Error::EmptyResponse)??;
|
||||||
|
|
||||||
Ok(response.updated)
|
Ok(response.updated)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn track_repo(&mut self, rid: Id, scope: tracking::Scope) -> Result<bool, Error> {
|
fn seed(&mut self, rid: Id, scope: tracking::Scope) -> Result<bool, Error> {
|
||||||
let mut line = self.call::<Success>(Command::TrackRepo { rid, scope }, DEFAULT_TIMEOUT)?;
|
let mut line = self.call::<Success>(Command::Seed { rid, scope }, DEFAULT_TIMEOUT)?;
|
||||||
let response = line.next().ok_or(Error::EmptyResponse)??;
|
let response = line.next().ok_or(Error::EmptyResponse)??;
|
||||||
|
|
||||||
Ok(response.updated)
|
Ok(response.updated)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn untrack_node(&mut self, nid: NodeId) -> Result<bool, Error> {
|
fn unfollow(&mut self, nid: NodeId) -> Result<bool, Error> {
|
||||||
let mut line = self.call::<Success>(Command::UntrackNode { nid }, DEFAULT_TIMEOUT)?;
|
let mut line = self.call::<Success>(Command::Unfollow { nid }, DEFAULT_TIMEOUT)?;
|
||||||
let response = line.next().ok_or(Error::EmptyResponse)??;
|
let response = line.next().ok_or(Error::EmptyResponse)??;
|
||||||
|
|
||||||
Ok(response.updated)
|
Ok(response.updated)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn untrack_repo(&mut self, rid: Id) -> Result<bool, Error> {
|
fn unseed(&mut self, rid: Id) -> Result<bool, Error> {
|
||||||
let mut line = self.call::<Success>(Command::UntrackRepo { rid }, DEFAULT_TIMEOUT)?;
|
let mut line = self.call::<Success>(Command::Unseed { rid }, DEFAULT_TIMEOUT)?;
|
||||||
let response = line.next().ok_or(Error::EmptyResponse {})??;
|
let response = line.next().ok_or(Error::EmptyResponse {})??;
|
||||||
|
|
||||||
Ok(response.updated)
|
Ok(response.updated)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue