radicle: Announcer test AlreadySynced for preferred seeds

This commit is contained in:
Fintan Halpenny 2025-08-06 10:42:41 +01:00 committed by Lorenz Leutgeb
parent 376a5566c2
commit 4307eb35b5
1 changed files with 26 additions and 1 deletions

View File

@ -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 {
@ -607,6 +606,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);