Radish alpha
h
Radicle Heartwood Protocol & Stack
Radicle
Git (anonymous pull)
Log in to clone via SSH
radicle: Announcer test AlreadySynced for preferred seeds
Fintan Halpenny committed 8 months ago
commit 4307eb35b5f8ddac2a704de0c3475e2df072b359
parent 376a5566c2918f75a75a8b4a20c18b05ba73f63d
1 file changed +26 -1
modified crates/radicle/src/node/sync/announce.rs
@@ -183,7 +183,6 @@ impl Announcer {

    fn is_target_reached(&self) -> Option<SuccessfulOutcome> {
        let SuccessCounts { preferred, synced } = self.success_counts();
-

        if !self.target.preferred_seeds.is_empty() && preferred >= self.target.preferred_seeds.len()
        {
            Some(SuccessfulOutcome::PreferredNodes {
@@ -608,6 +607,32 @@ mod test {
    }

    #[test]
+
    fn preferred_seeds_already_synced() {
+
        let local = arbitrary::gen::<NodeId>(0);
+
        let seeds = arbitrary::set::<NodeId>(6..=6);
+

+
        let preferred_seeds = seeds.iter().take(2).copied().collect::<BTreeSet<_>>();
+
        let already_synced = preferred_seeds.clone(); // Preferred seeds already synced
+
        let regular_unsynced = seeds.iter().skip(2).copied().collect::<BTreeSet<_>>();
+

+
        let config = AnnouncerConfig::public(
+
            local,
+
            ReplicationFactor::must_reach(4),
+
            preferred_seeds.clone(),
+
            already_synced.clone(),
+
            regular_unsynced.clone(),
+
        );
+

+
        assert_eq!(
+
            Announcer::new(config).err(),
+
            Some(AnnouncerError::AlreadySynced(AlreadySynced {
+
                preferred: 2,
+
                synced: 2
+
            }))
+
        );
+
    }
+

+
    #[test]
    fn announcer_reached_min_replication_target() {
        let local = arbitrary::gen::<NodeId>(0);
        let seeds = arbitrary::set::<NodeId>(10..=10);