Radish alpha
h
Radicle Heartwood Protocol & Stack
Radicle
Git (anonymous pull)
Log in to clone via SSH
radicle: Announcer test adapting the replication target
Fintan Halpenny committed 8 months ago
commit ca7231e652ca7abd42dc48ebbc2a82c82a1b637b
parent 685c84e5989ecdfb8ff87fa70c855d10f5305bf6
1 file changed +22 -1
modified crates/radicle/src/node/sync/announce.rs
@@ -579,7 +579,8 @@ mod test {

        let config = AnnouncerConfig::public(
            local,
-
            ReplicationFactor::must_reach(5), // High target that we won't reach with preferred alone
+
            // High target that we won't reach with preferred alone
+
            ReplicationFactor::must_reach(5),
            preferred_seeds.clone(),
            BTreeSet::new(),
            unsynced,
@@ -930,6 +931,26 @@ mod test {
    }

    #[test]
+
    fn announcer_adapts_target_to_reach() {
+
        let local = arbitrary::gen::<NodeId>(0);
+
        // Only 3 nodes available
+
        let unsynced = arbitrary::set::<NodeId>(3..=3)
+
            .into_iter()
+
            .collect::<BTreeSet<_>>();
+

+
        let config = AnnouncerConfig::public(
+
            local,
+
            ReplicationFactor::must_reach(5), // Want 5 but only have 3
+
            BTreeSet::new(),
+
            BTreeSet::new(),
+
            unsynced.clone(),
+
        );
+

+
        let announcer = Announcer::new(config).unwrap();
+
        assert_eq!(announcer.target().replicas().lower_bound(), 3);
+
    }
+

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