Finish fork test for beacon chain

This commit is contained in:
Paul Hauner 2019-06-23 10:33:35 +10:00
parent 8ed03e391d
commit f8fb011d6c
No known key found for this signature in database
GPG Key ID: 303E4494BB28068C

View File

@ -121,7 +121,8 @@ where
self.chain.catchup_state().expect("should catchup state"); self.chain.catchup_state().expect("should catchup state");
} }
/// Extend the `BeaconChain` with some blocks and attestations. /// Extend the `BeaconChain` with some blocks and attestations. Returns the root of the
/// last-produced block (the head of the chain).
/// ///
/// Chain will be extended by `num_blocks` blocks. /// Chain will be extended by `num_blocks` blocks.
/// ///
@ -134,7 +135,7 @@ where
num_blocks: usize, num_blocks: usize,
block_strategy: BlockStrategy, block_strategy: BlockStrategy,
attestation_strategy: AttestationStrategy, attestation_strategy: AttestationStrategy,
) { ) -> Hash256 {
let mut state = { let mut state = {
// Determine the slot for the first block (or skipped block). // Determine the slot for the first block (or skipped block).
let state_slot = match block_strategy { let state_slot = match block_strategy {
@ -151,6 +152,8 @@ where
BlockStrategy::ForkCanonicalChainAt { first_slot, .. } => first_slot, BlockStrategy::ForkCanonicalChainAt { first_slot, .. } => first_slot,
}; };
let mut head_block_root = None;
for _ in 0..num_blocks { for _ in 0..num_blocks {
while self.chain.read_slot_clock().expect("should have a slot") < slot { while self.chain.read_slot_clock().expect("should have a slot") < slot {
self.advance_slot(); self.advance_slot();
@ -164,6 +167,8 @@ where
.expect("should not error during block processing"); .expect("should not error during block processing");
if let BlockProcessingOutcome::Processed { block_root } = outcome { if let BlockProcessingOutcome::Processed { block_root } = outcome {
head_block_root = Some(block_root);
self.add_attestations_to_op_pool( self.add_attestations_to_op_pool(
&attestation_strategy, &attestation_strategy,
&new_state, &new_state,
@ -177,6 +182,8 @@ where
state = new_state; state = new_state;
slot += 1; slot += 1;
} }
head_block_root.expect("did not produce any blocks")
} }
fn get_state_at_slot(&self, state_slot: Slot) -> BeaconState<E> { fn get_state_at_slot(&self, state_slot: Slot) -> BeaconState<E> {