radicle-heartwood-lfs/radicle-node/src/test/gossip.rs

37 lines
972 B
Rust

use radicle::crypto::test::signer::MockSigner;
use crate::test::arbitrary;
use crate::{
prelude::{LocalDuration, LocalTime, Message},
service::message::InventoryAnnouncement,
};
pub fn messages(count: usize, now: LocalTime, delta: LocalDuration) -> Vec<Message> {
let mut rng = fastrand::Rng::new();
let mut msgs = Vec::new();
for _ in 0..count {
let signer = MockSigner::new(&mut rng);
let time = if delta == LocalDuration::from_secs(0) {
now
} else {
let delta = LocalDuration::from_secs(rng.u64(0..delta.as_secs()));
if rng.bool() {
now + delta
} else {
now - delta
}
};
msgs.push(Message::inventory(
InventoryAnnouncement {
inventory: arbitrary::vec(3).try_into().unwrap(),
timestamp: time.as_millis(),
},
&signer,
))
}
msgs
}