use rand::{
distributions::{Distribution, Standard},
Rng,
};
use zksync_consensus_roles::node;
use super::Handshake;
fn gen_semver_identifier<R: Rng + ?Sized>(rng: &mut R) -> String {
(0..10).map(|_| rng.gen_range('a'..='z')).collect()
}
fn gen_semver<R: Rng + ?Sized>(rng: &mut R) -> semver::Version {
semver::Version {
major: rng.gen(),
minor: rng.gen(),
patch: rng.gen(),
pre: semver::Prerelease::new(&gen_semver_identifier(rng)).unwrap(),
build: semver::BuildMetadata::new(&gen_semver_identifier(rng)).unwrap(),
}
}
impl Distribution<Handshake> for Standard {
fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> Handshake {
let key: node::SecretKey = rng.gen();
let session_id: node::SessionId = rng.gen();
Handshake {
session_id: key.sign_msg(session_id),
genesis: rng.gen(),
is_static: rng.gen(),
build_version: Some(gen_semver(rng)),
}
}
}