Skip to content

Commit 2021abc

Browse files
committed
Make tests deterministic
1 parent 7c39d17 commit 2021abc

File tree

6 files changed

+23
-9
lines changed

6 files changed

+23
-9
lines changed

Cargo.lock

Lines changed: 3 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

beacon_node/lighthouse_network/src/peer_manager/peerdb.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -689,8 +689,8 @@ impl<E: EthSpec> PeerDB<E> {
689689
&mut self,
690690
supernode: bool,
691691
spec: &ChainSpec,
692+
enr_key: CombinedKey,
692693
) -> PeerId {
693-
let enr_key = CombinedKey::generate_secp256k1();
694694
let mut enr = Enr::builder().build(&enr_key).unwrap();
695695
let peer_id = enr.peer_id();
696696

beacon_node/network/Cargo.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,10 @@ eth2 = { workspace = true }
1010
eth2_network_config = { workspace = true }
1111
genesis = { workspace = true }
1212
gossipsub = { workspace = true }
13+
k256 = "0.13.4"
1314
kzg = { workspace = true }
1415
matches = "0.1.8"
16+
rand_chacha = "0.3.1"
1517
serde_json = { workspace = true }
1618
slog-async = { workspace = true }
1719
slog-term = { workspace = true }

beacon_node/network/src/sync/tests/lookups.rs

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ use beacon_chain::{
2727
PayloadVerificationOutcome, PayloadVerificationStatus,
2828
};
2929
use beacon_processor::WorkEvent;
30+
use lighthouse_network::discovery::CombinedKey;
3031
use lighthouse_network::{
3132
rpc::{RPCError, RequestType, RpcErrorResponse},
3233
service::api_types::{
@@ -115,7 +116,9 @@ impl TestRig {
115116

116117
let spec = chain.spec.clone();
117118

118-
let rng = XorShiftRng::from_seed([42; 16]);
119+
// deterministic seed
120+
let rng = ChaCha20Rng::from_seed([0u8; 32]);
121+
119122
TestRig {
120123
beacon_processor_rx,
121124
beacon_processor_rx_queue: vec![],
@@ -367,17 +370,23 @@ impl TestRig {
367370
}
368371

369372
pub fn new_connected_peer(&mut self) -> PeerId {
373+
let key = self.determinstic_key();
370374
self.network_globals
371375
.peers
372376
.write()
373-
.__add_connected_peer_testing_only(false, &self.harness.spec)
377+
.__add_connected_peer_testing_only(false, &self.harness.spec, key)
374378
}
375379

376380
pub fn new_connected_supernode_peer(&mut self) -> PeerId {
381+
let key = self.determinstic_key();
377382
self.network_globals
378383
.peers
379384
.write()
380-
.__add_connected_peer_testing_only(true, &self.harness.spec)
385+
.__add_connected_peer_testing_only(true, &self.harness.spec, key)
386+
}
387+
388+
fn determinstic_key(&mut self) -> CombinedKey {
389+
k256::ecdsa::SigningKey::random(&mut self.rng).into()
381390
}
382391

383392
pub fn new_connected_peers_for_peerdas(&mut self) {

beacon_node/network/src/sync/tests/mod.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,13 @@ use beacon_chain::eth1_chain::CachingEth1Backend;
77
use beacon_chain::test_utils::{BeaconChainHarness, EphemeralHarnessType};
88
use beacon_processor::WorkEvent;
99
use lighthouse_network::NetworkGlobals;
10+
use rand_chacha::ChaCha20Rng;
1011
use slog::Logger;
1112
use slot_clock::ManualSlotClock;
1213
use std::sync::Arc;
1314
use store::MemoryStore;
1415
use tokio::sync::mpsc;
15-
use types::{test_utils::XorShiftRng, ChainSpec, ForkName, MinimalEthSpec as E};
16+
use types::{ChainSpec, ForkName, MinimalEthSpec as E};
1617

1718
mod lookups;
1819
mod range;
@@ -61,7 +62,7 @@ struct TestRig {
6162
/// Beacon chain harness
6263
harness: BeaconChainHarness<EphemeralHarnessType<E>>,
6364
/// `rng` for generating test blocks and blobs.
64-
rng: XorShiftRng,
65+
rng: ChaCha20Rng,
6566
fork_name: ForkName,
6667
log: Logger,
6768
spec: Arc<ChainSpec>,

beacon_node/network/src/sync/tests/range.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -590,8 +590,8 @@ fn finalized_sync_not_enough_custody_peers_on_start() {
590590
let advanced_epochs: u64 = 2;
591591
let remote_info = r.finalized_remote_info_advanced_by(advanced_epochs.into());
592592

593-
// Unikely that the single peer we added has enough columns for us. Find a way to make this test
594-
// deterministic.
593+
// Unikely that the single peer we added has enough columns for us. Tests are determinstic and
594+
// this error should never be hit
595595
r.add_random_peer_not_supernode(remote_info.clone());
596596
r.assert_state(RangeSyncType::Finalized);
597597

0 commit comments

Comments
 (0)