Sync wrong dbg assertion (#2821)

## Issue Addressed

Running a beacon node I triggered a sync debug panic. And so finally the time to create tests for sync arrived. Fortunately, te bug was not in the sync algorithm itself but a wrong assertion

## Proposed Changes

- Split Range's impl from the BeaconChain via a trait. This is needed for testing. The TestingRig/Harness is way bigger than needed and does not provide the modification functionalities that are needed to test sync. I find this simpler, tho some could disagree.
- Add a regression test for sync that fails before the changes.
- Fix the wrong assertion.
This commit is contained in:
Divma
2021-11-19 02:38:25 +00:00
parent e519af9012
commit 31386277c3
7 changed files with 306 additions and 27 deletions

View File

@@ -6,7 +6,6 @@ use super::range_sync::{BatchId, ChainId};
use super::RequestId as SyncRequestId;
use crate::service::NetworkMessage;
use crate::status::ToStatusMessage;
use beacon_chain::{BeaconChain, BeaconChainTypes};
use fnv::FnvHashMap;
use lighthouse_network::rpc::{
BlocksByRangeRequest, BlocksByRootRequest, GoodbyeReason, RequestId,
@@ -61,9 +60,9 @@ impl<T: EthSpec> SyncNetworkContext<T> {
.unwrap_or_default()
}
pub fn status_peers<U: BeaconChainTypes>(
pub fn status_peers<C: ToStatusMessage>(
&mut self,
chain: Arc<BeaconChain<U>>,
chain: C,
peers: impl Iterator<Item = PeerId>,
) {
if let Ok(status_message) = &chain.status_message() {