mirror of
https://github.com/hl-archive-node/nanoreth.git
synced 2025-12-06 19:09:54 +00:00
refactor(stages): input target reached & output done checks (#3106)
This commit is contained in:
@ -1370,6 +1370,7 @@ mod tests {
|
||||
chain_spec: Arc<ChainSpec>,
|
||||
pipeline_exec_outputs: VecDeque<Result<ExecOutput, StageError>>,
|
||||
executor_results: Vec<PostState>,
|
||||
max_block: Option<BlockNumber>,
|
||||
) -> (TestBeaconConsensusEngine, TestEnv<Arc<Env<WriteMap>>>) {
|
||||
reth_tracing::init_test_tracing();
|
||||
let db = create_test_rw_db();
|
||||
@ -1381,10 +1382,13 @@ mod tests {
|
||||
|
||||
// Setup pipeline
|
||||
let (tip_tx, tip_rx) = watch::channel(H256::default());
|
||||
let pipeline = Pipeline::builder()
|
||||
let mut pipeline_builder = Pipeline::builder()
|
||||
.add_stages(TestStages::new(pipeline_exec_outputs, Default::default()))
|
||||
.with_tip_sender(tip_tx)
|
||||
.build(db.clone());
|
||||
.with_tip_sender(tip_tx);
|
||||
if let Some(max_block) = max_block {
|
||||
pipeline_builder = pipeline_builder.with_max_block(max_block);
|
||||
}
|
||||
let pipeline = pipeline_builder.build(db.clone());
|
||||
|
||||
// Setup blockchain tree
|
||||
let externals =
|
||||
@ -1404,7 +1408,7 @@ mod tests {
|
||||
blockchain_provider,
|
||||
Box::<TokioTaskExecutor>::default(),
|
||||
Box::<NoopSyncStateUpdater>::default(),
|
||||
None,
|
||||
max_block,
|
||||
false,
|
||||
payload_builder,
|
||||
None,
|
||||
@ -1439,6 +1443,7 @@ mod tests {
|
||||
chain_spec,
|
||||
VecDeque::from([Err(StageError::ChannelClosed)]),
|
||||
Vec::default(),
|
||||
Some(1),
|
||||
);
|
||||
let res = spawn_consensus_engine(consensus_engine);
|
||||
|
||||
@ -1468,6 +1473,7 @@ mod tests {
|
||||
chain_spec,
|
||||
VecDeque::from([Err(StageError::ChannelClosed)]),
|
||||
Vec::default(),
|
||||
Some(1),
|
||||
);
|
||||
let mut rx = spawn_consensus_engine(consensus_engine);
|
||||
|
||||
@ -1507,10 +1513,11 @@ mod tests {
|
||||
let (consensus_engine, env) = setup_consensus_engine(
|
||||
chain_spec,
|
||||
VecDeque::from([
|
||||
Ok(ExecOutput { checkpoint: StageCheckpoint::new(1), done: true }),
|
||||
Ok(ExecOutput { checkpoint: StageCheckpoint::new(1) }),
|
||||
Err(StageError::ChannelClosed),
|
||||
]),
|
||||
Vec::default(),
|
||||
Some(2),
|
||||
);
|
||||
let rx = spawn_consensus_engine(consensus_engine);
|
||||
|
||||
@ -1523,7 +1530,9 @@ mod tests {
|
||||
|
||||
assert_matches!(
|
||||
rx.await,
|
||||
Ok(Err(BeaconConsensusEngineError::Pipeline(n))) if matches!(*n.as_ref(),PipelineError::Stage(StageError::ChannelClosed))
|
||||
Ok(
|
||||
Err(BeaconConsensusEngineError::Pipeline(n))
|
||||
) if matches!(*n.as_ref(),PipelineError::Stage(StageError::ChannelClosed))
|
||||
);
|
||||
}
|
||||
|
||||
@ -1537,15 +1546,12 @@ mod tests {
|
||||
.paris_activated()
|
||||
.build(),
|
||||
);
|
||||
let (mut consensus_engine, env) = setup_consensus_engine(
|
||||
let (consensus_engine, env) = setup_consensus_engine(
|
||||
chain_spec,
|
||||
VecDeque::from([Ok(ExecOutput {
|
||||
checkpoint: StageCheckpoint::new(max_block),
|
||||
done: true,
|
||||
})]),
|
||||
VecDeque::from([Ok(ExecOutput { checkpoint: StageCheckpoint::new(max_block) })]),
|
||||
Vec::default(),
|
||||
Some(max_block),
|
||||
);
|
||||
consensus_engine.sync.set_max_block(max_block);
|
||||
let rx = spawn_consensus_engine(consensus_engine);
|
||||
|
||||
let _ = env
|
||||
@ -1582,11 +1588,9 @@ mod tests {
|
||||
);
|
||||
let (consensus_engine, env) = setup_consensus_engine(
|
||||
chain_spec,
|
||||
VecDeque::from([Ok(ExecOutput {
|
||||
done: true,
|
||||
checkpoint: StageCheckpoint::new(0),
|
||||
})]),
|
||||
VecDeque::from([Ok(ExecOutput { checkpoint: StageCheckpoint::new(0) })]),
|
||||
Vec::default(),
|
||||
None,
|
||||
);
|
||||
|
||||
let mut engine_rx = spawn_consensus_engine(consensus_engine);
|
||||
@ -1613,11 +1617,9 @@ mod tests {
|
||||
);
|
||||
let (consensus_engine, env) = setup_consensus_engine(
|
||||
chain_spec,
|
||||
VecDeque::from([Ok(ExecOutput {
|
||||
done: true,
|
||||
checkpoint: StageCheckpoint::new(0),
|
||||
})]),
|
||||
VecDeque::from([Ok(ExecOutput { checkpoint: StageCheckpoint::new(0) })]),
|
||||
Vec::default(),
|
||||
None,
|
||||
);
|
||||
|
||||
let genesis = random_block(0, None, None, Some(0));
|
||||
@ -1662,10 +1664,11 @@ mod tests {
|
||||
let (consensus_engine, env) = setup_consensus_engine(
|
||||
chain_spec,
|
||||
VecDeque::from([
|
||||
Ok(ExecOutput { done: true, checkpoint: StageCheckpoint::new(0) }),
|
||||
Ok(ExecOutput { done: true, checkpoint: StageCheckpoint::new(0) }),
|
||||
Ok(ExecOutput { checkpoint: StageCheckpoint::new(0) }),
|
||||
Ok(ExecOutput { checkpoint: StageCheckpoint::new(0) }),
|
||||
]),
|
||||
Vec::default(),
|
||||
None,
|
||||
);
|
||||
|
||||
let genesis = random_block(0, None, None, Some(0));
|
||||
@ -1710,11 +1713,9 @@ mod tests {
|
||||
);
|
||||
let (consensus_engine, env) = setup_consensus_engine(
|
||||
chain_spec,
|
||||
VecDeque::from([Ok(ExecOutput {
|
||||
done: true,
|
||||
checkpoint: StageCheckpoint::new(0),
|
||||
})]),
|
||||
VecDeque::from([Ok(ExecOutput { checkpoint: StageCheckpoint::new(0) })]),
|
||||
Vec::default(),
|
||||
None,
|
||||
);
|
||||
|
||||
let genesis = random_block(0, None, None, Some(0));
|
||||
@ -1748,10 +1749,11 @@ mod tests {
|
||||
let (consensus_engine, env) = setup_consensus_engine(
|
||||
chain_spec,
|
||||
VecDeque::from([
|
||||
Ok(ExecOutput { done: true, checkpoint: StageCheckpoint::new(0) }),
|
||||
Ok(ExecOutput { done: true, checkpoint: StageCheckpoint::new(0) }),
|
||||
Ok(ExecOutput { checkpoint: StageCheckpoint::new(0) }),
|
||||
Ok(ExecOutput { checkpoint: StageCheckpoint::new(0) }),
|
||||
]),
|
||||
Vec::default(),
|
||||
None,
|
||||
);
|
||||
|
||||
let genesis = random_block(0, None, None, Some(0));
|
||||
@ -1797,10 +1799,11 @@ mod tests {
|
||||
let (consensus_engine, env) = setup_consensus_engine(
|
||||
chain_spec,
|
||||
VecDeque::from([
|
||||
Ok(ExecOutput { done: true, checkpoint: StageCheckpoint::new(0) }),
|
||||
Ok(ExecOutput { done: true, checkpoint: StageCheckpoint::new(0) }),
|
||||
Ok(ExecOutput { checkpoint: StageCheckpoint::new(0) }),
|
||||
Ok(ExecOutput { checkpoint: StageCheckpoint::new(0) }),
|
||||
]),
|
||||
Vec::default(),
|
||||
None,
|
||||
);
|
||||
|
||||
let genesis = random_block(0, None, None, Some(0));
|
||||
@ -1843,11 +1846,9 @@ mod tests {
|
||||
);
|
||||
let (consensus_engine, env) = setup_consensus_engine(
|
||||
chain_spec,
|
||||
VecDeque::from([Ok(ExecOutput {
|
||||
done: true,
|
||||
checkpoint: StageCheckpoint::new(0),
|
||||
})]),
|
||||
VecDeque::from([Ok(ExecOutput { checkpoint: StageCheckpoint::new(0) })]),
|
||||
Vec::default(),
|
||||
None,
|
||||
);
|
||||
|
||||
let mut engine_rx = spawn_consensus_engine(consensus_engine);
|
||||
@ -1876,11 +1877,9 @@ mod tests {
|
||||
);
|
||||
let (consensus_engine, env) = setup_consensus_engine(
|
||||
chain_spec,
|
||||
VecDeque::from([Ok(ExecOutput {
|
||||
done: true,
|
||||
checkpoint: StageCheckpoint::new(0),
|
||||
})]),
|
||||
VecDeque::from([Ok(ExecOutput { checkpoint: StageCheckpoint::new(0) })]),
|
||||
Vec::default(),
|
||||
None,
|
||||
);
|
||||
|
||||
let genesis = random_block(0, None, None, Some(0));
|
||||
@ -1922,11 +1921,9 @@ mod tests {
|
||||
);
|
||||
let (consensus_engine, env) = setup_consensus_engine(
|
||||
chain_spec,
|
||||
VecDeque::from([Ok(ExecOutput {
|
||||
done: true,
|
||||
checkpoint: StageCheckpoint::new(0),
|
||||
})]),
|
||||
VecDeque::from([Ok(ExecOutput { checkpoint: StageCheckpoint::new(0) })]),
|
||||
Vec::default(),
|
||||
None,
|
||||
);
|
||||
|
||||
let genesis = random_block(0, None, None, Some(0));
|
||||
@ -1979,11 +1976,9 @@ mod tests {
|
||||
);
|
||||
let (consensus_engine, env) = setup_consensus_engine(
|
||||
chain_spec,
|
||||
VecDeque::from([Ok(ExecOutput {
|
||||
done: true,
|
||||
checkpoint: StageCheckpoint::new(0),
|
||||
})]),
|
||||
VecDeque::from([Ok(ExecOutput { checkpoint: StageCheckpoint::new(0) })]),
|
||||
Vec::from([exec_result2]),
|
||||
None,
|
||||
);
|
||||
|
||||
insert_blocks(env.db.as_ref(), [&data.genesis, &block1].into_iter());
|
||||
|
||||
@ -83,12 +83,6 @@ where
|
||||
self.metrics.active_block_downloads.set(self.inflight_full_block_requests.len() as f64);
|
||||
}
|
||||
|
||||
/// Sets the max block value for testing
|
||||
#[cfg(test)]
|
||||
pub(crate) fn set_max_block(&mut self, block: BlockNumber) {
|
||||
self.max_block = Some(block);
|
||||
}
|
||||
|
||||
/// Cancels all full block requests that are in progress.
|
||||
pub(crate) fn clear_full_block_requests(&mut self) {
|
||||
self.inflight_full_block_requests.clear();
|
||||
|
||||
Reference in New Issue
Block a user