mirror of
https://github.com/sigp/lighthouse.git
synced 2026-05-30 12:47:05 +00:00
Remove TestRandom (#9006)
We have a legacy `TestRandom` trait which generates random types for testing and fuzzing. This function overlaps with `arbitrary` which is used very commonly in the ecosystem. Remove `TestRandom` and generate random type instances using `Arbitrary`. Co-Authored-By: Mac L <mjladson@pm.me> Co-Authored-By: Michael Sproul <michael@sigmaprime.io>
This commit is contained in:
@@ -501,10 +501,9 @@ mod tests {
|
||||
DataColumnsByRangeRequestId, DataColumnsByRangeRequester, Id, RangeRequestId,
|
||||
},
|
||||
};
|
||||
use rand::SeedableRng;
|
||||
use std::{collections::HashMap, sync::Arc};
|
||||
use tracing::Span;
|
||||
use types::{Epoch, ForkName, MinimalEthSpec as E, SignedBeaconBlock, test_utils::XorShiftRng};
|
||||
use types::{Epoch, ForkName, MinimalEthSpec as E, SignedBeaconBlock};
|
||||
|
||||
fn components_id() -> ComponentsByRangeRequestId {
|
||||
ComponentsByRangeRequestId {
|
||||
@@ -549,10 +548,11 @@ mod tests {
|
||||
|
||||
#[test]
|
||||
fn no_blobs_into_responses() {
|
||||
let mut rng = XorShiftRng::from_seed([42; 16]);
|
||||
let mut u = types::test_utils::test_unstructured();
|
||||
let blocks = (0..4)
|
||||
.map(|_| {
|
||||
generate_rand_block_and_blobs::<E>(ForkName::Base, NumBlobs::None, &mut rng)
|
||||
generate_rand_block_and_blobs::<E>(ForkName::Base, NumBlobs::None, &mut u)
|
||||
.unwrap()
|
||||
.0
|
||||
.into()
|
||||
})
|
||||
@@ -574,11 +574,12 @@ mod tests {
|
||||
|
||||
#[test]
|
||||
fn empty_blobs_into_responses() {
|
||||
let mut rng = XorShiftRng::from_seed([42; 16]);
|
||||
let mut u = types::test_utils::test_unstructured();
|
||||
let blocks = (0..4)
|
||||
.map(|_| {
|
||||
// Always generate some blobs.
|
||||
generate_rand_block_and_blobs::<E>(ForkName::Deneb, NumBlobs::Number(3), &mut rng)
|
||||
generate_rand_block_and_blobs::<E>(ForkName::Deneb, NumBlobs::Number(3), &mut u)
|
||||
.unwrap()
|
||||
.0
|
||||
.into()
|
||||
})
|
||||
@@ -619,15 +620,16 @@ mod tests {
|
||||
.custody_context()
|
||||
.sampling_columns_for_epoch(Epoch::new(0), &spec)
|
||||
.to_vec();
|
||||
let mut rng = XorShiftRng::from_seed([42; 16]);
|
||||
let mut u = types::test_utils::test_unstructured();
|
||||
let blocks = (0..4)
|
||||
.map(|_| {
|
||||
generate_rand_block_and_data_columns::<E>(
|
||||
ForkName::Fulu,
|
||||
NumBlobs::Number(1),
|
||||
&mut rng,
|
||||
&mut u,
|
||||
&spec,
|
||||
)
|
||||
.unwrap()
|
||||
})
|
||||
.collect::<Vec<_>>();
|
||||
|
||||
@@ -729,15 +731,16 @@ mod tests {
|
||||
Span::none(),
|
||||
);
|
||||
|
||||
let mut rng = XorShiftRng::from_seed([42; 16]);
|
||||
let mut u = types::test_utils::test_unstructured();
|
||||
let blocks = (0..4)
|
||||
.map(|_| {
|
||||
generate_rand_block_and_data_columns::<E>(
|
||||
ForkName::Fulu,
|
||||
NumBlobs::Number(1),
|
||||
&mut rng,
|
||||
&mut u,
|
||||
&spec,
|
||||
)
|
||||
.unwrap()
|
||||
})
|
||||
.collect::<Vec<_>>();
|
||||
|
||||
@@ -787,15 +790,16 @@ mod tests {
|
||||
.custody_context()
|
||||
.sampling_columns_for_epoch(Epoch::new(0), &spec)
|
||||
.to_vec();
|
||||
let mut rng = XorShiftRng::from_seed([42; 16]);
|
||||
let mut u = types::test_utils::test_unstructured();
|
||||
let blocks = (0..2)
|
||||
.map(|_| {
|
||||
generate_rand_block_and_data_columns::<E>(
|
||||
ForkName::Fulu,
|
||||
NumBlobs::Number(1),
|
||||
&mut rng,
|
||||
&mut u,
|
||||
&spec,
|
||||
)
|
||||
.unwrap()
|
||||
})
|
||||
.collect::<Vec<_>>();
|
||||
|
||||
@@ -884,15 +888,16 @@ mod tests {
|
||||
.custody_context()
|
||||
.sampling_columns_for_epoch(Epoch::new(0), &spec)
|
||||
.to_vec();
|
||||
let mut rng = XorShiftRng::from_seed([42; 16]);
|
||||
let mut u = types::test_utils::test_unstructured();
|
||||
let blocks = (0..2)
|
||||
.map(|_| {
|
||||
generate_rand_block_and_data_columns::<E>(
|
||||
ForkName::Fulu,
|
||||
NumBlobs::Number(1),
|
||||
&mut rng,
|
||||
&mut u,
|
||||
&spec,
|
||||
)
|
||||
.unwrap()
|
||||
})
|
||||
.collect::<Vec<_>>();
|
||||
|
||||
@@ -999,15 +1004,16 @@ mod tests {
|
||||
.custody_context()
|
||||
.sampling_columns_for_epoch(Epoch::new(0), &spec)
|
||||
.to_vec();
|
||||
let mut rng = XorShiftRng::from_seed([42; 16]);
|
||||
let mut u = types::test_utils::test_unstructured();
|
||||
let blocks = (0..1)
|
||||
.map(|_| {
|
||||
generate_rand_block_and_data_columns::<E>(
|
||||
ForkName::Fulu,
|
||||
NumBlobs::Number(1),
|
||||
&mut rng,
|
||||
&mut u,
|
||||
&spec,
|
||||
)
|
||||
.unwrap()
|
||||
})
|
||||
.collect::<Vec<_>>();
|
||||
|
||||
|
||||
@@ -38,7 +38,6 @@ use tracing::info;
|
||||
use types::{
|
||||
BlobSidecar, BlockImportSource, ColumnIndex, DataColumnSidecar, EthSpec, ForkContext, ForkName,
|
||||
Hash256, MinimalEthSpec as E, SignedBeaconBlock, Slot,
|
||||
test_utils::{SeedableRng, XorShiftRng},
|
||||
};
|
||||
|
||||
const D: Duration = Duration::new(0, 0);
|
||||
@@ -279,7 +278,6 @@ impl TestRig {
|
||||
|
||||
// deterministic seed
|
||||
let rng_08 = <rand_chacha_03::ChaCha20Rng as rand_08::SeedableRng>::from_seed([0u8; 32]);
|
||||
let rng = ChaCha20Rng::from_seed([0u8; 32]);
|
||||
|
||||
init_tracing();
|
||||
|
||||
@@ -291,7 +289,7 @@ impl TestRig {
|
||||
sync_rx,
|
||||
sync_rx_queue: vec![],
|
||||
rng_08,
|
||||
rng,
|
||||
unstructured: types::test_utils::test_unstructured(),
|
||||
network_globals: beacon_processor.network_globals.clone(),
|
||||
sync_manager: SyncManager::new(
|
||||
chain,
|
||||
@@ -1492,8 +1490,7 @@ impl TestRig {
|
||||
num_blobs: NumBlobs,
|
||||
) -> (SignedBeaconBlock<E>, Vec<BlobSidecar<E>>) {
|
||||
let fork_name = self.fork_name;
|
||||
let rng = &mut self.rng;
|
||||
generate_rand_block_and_blobs::<E>(fork_name, num_blobs, rng)
|
||||
generate_rand_block_and_blobs::<E>(fork_name, num_blobs, &mut self.unstructured).unwrap()
|
||||
}
|
||||
|
||||
pub fn send_sync_message(&mut self, sync_message: SyncMessage<E>) {
|
||||
@@ -1829,16 +1826,17 @@ impl TestRig {
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn stable_rng() {
|
||||
let mut rng = XorShiftRng::from_seed([42; 16]);
|
||||
let (block, _) = generate_rand_block_and_blobs::<E>(ForkName::Base, NumBlobs::None, &mut rng);
|
||||
fn stable_arbitrary() {
|
||||
let mut u = types::test_utils::test_unstructured();
|
||||
let (block, _) =
|
||||
generate_rand_block_and_blobs::<E>(ForkName::Base, NumBlobs::None, &mut u).unwrap();
|
||||
assert_eq!(
|
||||
block.canonical_root(),
|
||||
Hash256::from_slice(
|
||||
&hex::decode("adfd2e9e7a7976e8ccaed6eaf0257ed36a5b476732fee63ff44966602fd099ec")
|
||||
&hex::decode("7348573d99ca404b502e2be790593203a1d899f9cf04f42ec9c5b4975803e3c5")
|
||||
.unwrap()
|
||||
),
|
||||
"rng produces a consistent value"
|
||||
"arbitrary produces a consistent value"
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -11,7 +11,6 @@ use beacon_processor::WorkEvent;
|
||||
use lighthouse_network::rpc::RequestType;
|
||||
use lighthouse_network::service::api_types::{AppRequestId, Id};
|
||||
use lighthouse_network::{NetworkGlobals, PeerId};
|
||||
use rand_chacha::ChaCha20Rng;
|
||||
use slot_clock::ManualSlotClock;
|
||||
use std::collections::{HashMap, HashSet};
|
||||
use std::fs::OpenOptions;
|
||||
@@ -72,9 +71,8 @@ struct TestRig {
|
||||
network_globals: Arc<NetworkGlobals<E>>,
|
||||
/// Beacon chain harness
|
||||
harness: BeaconChainHarness<EphemeralHarnessType<E>>,
|
||||
/// `rng` for generating test blocks and blobs.
|
||||
rng_08: rand_chacha_03::ChaCha20Rng,
|
||||
rng: ChaCha20Rng,
|
||||
unstructured: arbitrary::Unstructured<'static>,
|
||||
fork_name: ForkName,
|
||||
/// Blocks that will be used in the test but may not be known to `harness` yet.
|
||||
network_blocks_by_root: HashMap<Hash256, RangeSyncBlock<E>>,
|
||||
|
||||
Reference in New Issue
Block a user