Move benching_utils structs into types
				
					
				
			This commit is contained in:
		
							parent
							
								
									6ae99a1462
								
							
						
					
					
						commit
						0b7082e2b9
					
				| @ -4,7 +4,6 @@ members = [ | ||||
| 	"eth2/block_proposer", | ||||
| 	"eth2/fork_choice", | ||||
| 	"eth2/state_processing", | ||||
| 	"eth2/state_processing/benching_utils", | ||||
| 	"eth2/types", | ||||
| 	"eth2/utils/bls", | ||||
| 	"eth2/utils/boolean-bitfield", | ||||
|  | ||||
| @ -11,7 +11,6 @@ harness = false | ||||
| [dev-dependencies] | ||||
| criterion = "0.2" | ||||
| env_logger = "0.6.0" | ||||
| benching_utils = { path = "./benching_utils" } | ||||
| 
 | ||||
| [dependencies] | ||||
| bls = { path = "../utils/bls" } | ||||
|  | ||||
| @ -1,4 +1,3 @@ | ||||
| use benching_utils::{BeaconBlockBencher, BeaconStateBencher}; | ||||
| use criterion::Criterion; | ||||
| use criterion::{black_box, Benchmark}; | ||||
| use ssz::TreeHash; | ||||
| @ -10,6 +9,7 @@ use state_processing::{ | ||||
|         verify_block_signature, | ||||
|     }, | ||||
| }; | ||||
| use types::test_utils::{TestingBeaconBlockBuilder, TestingBeaconStateBuilder}; | ||||
| use types::*; | ||||
| 
 | ||||
| /// Run the benchmarking suite on a foundation spec with 16,384 validators.
 | ||||
| @ -82,7 +82,7 @@ pub fn block_processing_16k_validators(c: &mut Criterion) { | ||||
| } | ||||
| 
 | ||||
| fn build_state(validator_count: usize, spec: &ChainSpec) -> (BeaconState, Vec<Keypair>) { | ||||
|     let mut builder = BeaconStateBencher::new(validator_count, &spec); | ||||
|     let mut builder = TestingBeaconStateBuilder::new(validator_count, &spec); | ||||
| 
 | ||||
|     // Set the state to be just before an epoch transition.
 | ||||
|     let target_slot = (spec.genesis_epoch + 4).end_slot(spec.slots_per_epoch); | ||||
| @ -95,7 +95,7 @@ fn build_state(validator_count: usize, spec: &ChainSpec) -> (BeaconState, Vec<Ke | ||||
| } | ||||
| 
 | ||||
| fn build_block(state: &mut BeaconState, keypairs: &[Keypair], spec: &ChainSpec) -> BeaconBlock { | ||||
|     let mut builder = BeaconBlockBencher::new(spec); | ||||
|     let mut builder = TestingBeaconBlockBuilder::new(spec); | ||||
| 
 | ||||
|     builder.set_slot(state.slot); | ||||
| 
 | ||||
|  | ||||
| @ -1,4 +1,3 @@ | ||||
| use benching_utils::BeaconStateBencher; | ||||
| use criterion::Criterion; | ||||
| use criterion::{black_box, Benchmark}; | ||||
| use ssz::TreeHash; | ||||
| @ -11,6 +10,7 @@ use state_processing::{ | ||||
|         update_latest_slashed_balances, | ||||
|     }, | ||||
| }; | ||||
| use types::test_utils::TestingBeaconStateBuilder; | ||||
| use types::{validator_registry::get_active_validator_indices, *}; | ||||
| 
 | ||||
| pub const BENCHING_SAMPLE_SIZE: usize = 10; | ||||
| @ -22,7 +22,7 @@ pub fn epoch_processing_16k_validators(c: &mut Criterion) { | ||||
| 
 | ||||
|     let validator_count = 300_032; | ||||
| 
 | ||||
|     let mut builder = BeaconStateBencher::new(validator_count, &spec); | ||||
|     let mut builder = TestingBeaconStateBuilder::new(validator_count, &spec); | ||||
| 
 | ||||
|     // Set the state to be just before an epoch transition.
 | ||||
|     let target_slot = (spec.genesis_epoch + 4).end_slot(spec.slots_per_epoch); | ||||
|  | ||||
| @ -1,17 +0,0 @@ | ||||
| [package] | ||||
| name = "benching_utils" | ||||
| version = "0.1.0" | ||||
| authors = ["Paul Hauner <paul@paulhauner.com>"] | ||||
| edition = "2018" | ||||
| 
 | ||||
| [dependencies] | ||||
| bls = { path = "../../utils/bls" } | ||||
| hashing = { path = "../../utils/hashing" } | ||||
| int_to_bytes = { path = "../../utils/int_to_bytes" } | ||||
| integer-sqrt = "0.1" | ||||
| log = "0.4" | ||||
| merkle_proof = { path = "../../utils/merkle_proof" } | ||||
| ssz = { path = "../../utils/ssz" } | ||||
| ssz_derive = { path = "../../utils/ssz_derive" } | ||||
| types = { path = "../../types" } | ||||
| rayon = "1.0" | ||||
| @ -1,5 +0,0 @@ | ||||
| mod beacon_block_bencher; | ||||
| mod beacon_state_bencher; | ||||
| 
 | ||||
| pub use beacon_block_bencher::BeaconBlockBencher; | ||||
| pub use beacon_state_bencher::BeaconStateBencher; | ||||
| @ -1,7 +1,7 @@ | ||||
| #![cfg(test)] | ||||
| use crate::per_epoch_processing; | ||||
| use benching_utils::BeaconStateBencher; | ||||
| use env_logger::{Builder, Env}; | ||||
| use types::test_utils::TestingBeaconStateBuilder; | ||||
| use types::*; | ||||
| 
 | ||||
| #[test] | ||||
| @ -10,7 +10,7 @@ fn runs_without_error() { | ||||
| 
 | ||||
|     let spec = ChainSpec::few_validators(); | ||||
| 
 | ||||
|     let mut builder = BeaconStateBencher::new(8, &spec); | ||||
|     let mut builder = TestingBeaconStateBuilder::new(8, &spec); | ||||
| 
 | ||||
|     let target_slot = (spec.genesis_epoch + 4).end_slot(spec.slots_per_epoch); | ||||
|     builder.teleport_to_slot(target_slot, &spec); | ||||
|  | ||||
| @ -6,7 +6,7 @@ use ssz::TreeHash; | ||||
| 
 | ||||
| /// Builds a `BeaconState` for use in production.
 | ||||
| ///
 | ||||
| /// This struct should not be modified for use in testing scenarios. Use `TestingBeaconStateBuilder` for that purpose.
 | ||||
| /// This struct should _not_ be modified for use in testing scenarios. Use `TestingBeaconStateBuilder` for that purpose.
 | ||||
| ///
 | ||||
| /// This struct should remain safe and sensible for production usage.
 | ||||
| pub struct BeaconStateBuilder { | ||||
|  | ||||
| @ -1,29 +1,20 @@ | ||||
| #![cfg(test)] | ||||
| 
 | ||||
| use super::*; | ||||
| use crate::test_utils::TestingBeaconStateBuilder; | ||||
| use crate::test_utils::{SeedableRng, TestRandom, XorShiftRng}; | ||||
| use crate::{BeaconState, ChainSpec}; | ||||
| use ssz::{ssz_encode, Decodable}; | ||||
| 
 | ||||
| #[test] | ||||
| pub fn can_produce_genesis_block() { | ||||
|     let mut builder = BeaconStateBuilder::new(2); | ||||
|     builder.build().unwrap(); | ||||
| } | ||||
| 
 | ||||
| /// Tests that `get_attestation_participants` is consistent with the result of
 | ||||
| /// get_crosslink_committees_at_slot` with a full bitfield.
 | ||||
| #[test] | ||||
| pub fn get_attestation_participants_consistency() { | ||||
|     let mut rng = XorShiftRng::from_seed([42; 16]); | ||||
| 
 | ||||
|     let mut builder = BeaconStateBuilder::new(8); | ||||
|     builder.spec = ChainSpec::few_validators(); | ||||
| 
 | ||||
|     builder.build().unwrap(); | ||||
| 
 | ||||
|     let mut state = builder.cloned_state(); | ||||
|     let spec = builder.spec.clone(); | ||||
|     let spec = ChainSpec::few_validators(); | ||||
|     let builder = TestingBeaconStateBuilder::new(8, &spec); | ||||
|     let (mut state, _keypairs) = builder.build(); | ||||
| 
 | ||||
|     state | ||||
|         .build_epoch_cache(RelativeEpoch::Previous, &spec) | ||||
|  | ||||
| @ -1,5 +1,7 @@ | ||||
| mod test_random; | ||||
| mod testing_attestation_builder; | ||||
| mod testing_beacon_block_builder; | ||||
| mod testing_beacon_state_builder; | ||||
| mod testing_deposit_builder; | ||||
| mod testing_transfer_builder; | ||||
| mod testing_voluntary_exit_builder; | ||||
| @ -7,6 +9,8 @@ mod testing_voluntary_exit_builder; | ||||
| pub use rand::{prng::XorShiftRng, SeedableRng}; | ||||
| pub use test_random::TestRandom; | ||||
| pub use testing_attestation_builder::TestingAttestationBuilder; | ||||
| pub use testing_beacon_block_builder::TestingBeaconBlockBuilder; | ||||
| pub use testing_beacon_state_builder::TestingBeaconStateBuilder; | ||||
| pub use testing_deposit_builder::TestingDepositBuilder; | ||||
| pub use testing_transfer_builder::TestingTransferBuilder; | ||||
| pub use testing_voluntary_exit_builder::TestingVoluntaryExitBuilder; | ||||
|  | ||||
| @ -1,6 +1,4 @@ | ||||
| use rayon::prelude::*; | ||||
| use ssz::{SignedRoot, TreeHash}; | ||||
| use types::{ | ||||
| use crate::{ | ||||
|     attester_slashing::AttesterSlashingBuilder, | ||||
|     proposer_slashing::ProposerSlashingBuilder, | ||||
|     test_utils::{ | ||||
| @ -9,12 +7,14 @@ use types::{ | ||||
|     }, | ||||
|     *, | ||||
| }; | ||||
| use rayon::prelude::*; | ||||
| use ssz::{SignedRoot, TreeHash}; | ||||
| 
 | ||||
| pub struct BeaconBlockBencher { | ||||
| pub struct TestingBeaconBlockBuilder { | ||||
|     block: BeaconBlock, | ||||
| } | ||||
| 
 | ||||
| impl BeaconBlockBencher { | ||||
| impl TestingBeaconBlockBuilder { | ||||
|     pub fn new(spec: &ChainSpec) -> Self { | ||||
|         Self { | ||||
|             block: BeaconBlock::genesis(spec.zero_hash, spec), | ||||
| @ -1,15 +1,15 @@ | ||||
| use crate::beacon_state::BeaconStateBuilder; | ||||
| use crate::*; | ||||
| use bls::get_withdrawal_credentials; | ||||
| use int_to_bytes::int_to_bytes48; | ||||
| use rayon::prelude::*; | ||||
| use types::beacon_state::BeaconStateBuilder; | ||||
| use types::*; | ||||
| 
 | ||||
| pub struct BeaconStateBencher { | ||||
| pub struct TestingBeaconStateBuilder { | ||||
|     state: BeaconState, | ||||
|     keypairs: Vec<Keypair>, | ||||
| } | ||||
| 
 | ||||
| impl BeaconStateBencher { | ||||
| impl TestingBeaconStateBuilder { | ||||
|     pub fn new(validator_count: usize, spec: &ChainSpec) -> Self { | ||||
|         let keypairs: Vec<Keypair> = (0..validator_count) | ||||
|             .collect::<Vec<usize>>() | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user