mirror of
https://github.com/sigp/lighthouse.git
synced 2026-07-04 21:34:36 +00:00
Fix test compilations
This commit is contained in:
@@ -837,7 +837,8 @@ mod test {
|
|||||||
info!(log, "done printing kzg commitments");
|
info!(log, "done printing kzg commitments");
|
||||||
|
|
||||||
let gossip_verified_blobs = if let Some((kzg_proofs, blobs)) = maybe_blobs {
|
let gossip_verified_blobs = if let Some((kzg_proofs, blobs)) = maybe_blobs {
|
||||||
let sidecars = BlobSidecar::build_sidecars(blobs, &block, kzg_proofs).unwrap();
|
let sidecars =
|
||||||
|
BlobSidecar::build_sidecars(blobs, &block, kzg_proofs, &chain.spec).unwrap();
|
||||||
Vec::from(sidecars)
|
Vec::from(sidecars)
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.map(|sidecar| {
|
.map(|sidecar| {
|
||||||
@@ -1152,7 +1153,7 @@ mod pending_components_tests {
|
|||||||
use super::*;
|
use super::*;
|
||||||
use crate::block_verification_types::BlockImportData;
|
use crate::block_verification_types::BlockImportData;
|
||||||
use crate::eth1_finalization_cache::Eth1FinalizationData;
|
use crate::eth1_finalization_cache::Eth1FinalizationData;
|
||||||
use crate::test_utils::{generate_rand_block_and_blobs, NumBlobs};
|
use crate::test_utils::{generate_rand_block_and_blobs, test_spec, NumBlobs};
|
||||||
use crate::PayloadVerificationOutcome;
|
use crate::PayloadVerificationOutcome;
|
||||||
use fork_choice::PayloadVerificationStatus;
|
use fork_choice::PayloadVerificationStatus;
|
||||||
use kzg::KzgCommitment;
|
use kzg::KzgCommitment;
|
||||||
@@ -1168,15 +1169,19 @@ mod pending_components_tests {
|
|||||||
|
|
||||||
type Setup<E> = (
|
type Setup<E> = (
|
||||||
SignedBeaconBlock<E>,
|
SignedBeaconBlock<E>,
|
||||||
FixedVector<Option<Arc<BlobSidecar<E>>>, <E as EthSpec>::MaxBlobsPerBlock>,
|
RuntimeFixedList<Option<Arc<BlobSidecar<E>>>>,
|
||||||
FixedVector<Option<Arc<BlobSidecar<E>>>, <E as EthSpec>::MaxBlobsPerBlock>,
|
RuntimeFixedList<Option<Arc<BlobSidecar<E>>>>,
|
||||||
|
usize,
|
||||||
);
|
);
|
||||||
|
|
||||||
pub fn pre_setup() -> Setup<E> {
|
pub fn pre_setup() -> Setup<E> {
|
||||||
let mut rng = StdRng::seed_from_u64(0xDEADBEEF0BAD5EEDu64);
|
let mut rng = StdRng::seed_from_u64(0xDEADBEEF0BAD5EEDu64);
|
||||||
|
let spec = test_spec::<E>();
|
||||||
let (block, blobs_vec) =
|
let (block, blobs_vec) =
|
||||||
generate_rand_block_and_blobs::<E>(ForkName::Deneb, NumBlobs::Random, &mut rng);
|
generate_rand_block_and_blobs::<E>(ForkName::Deneb, NumBlobs::Random, &mut rng);
|
||||||
let mut blobs: FixedVector<_, <E as EthSpec>::MaxBlobsPerBlock> = FixedVector::default();
|
let max_len = spec.max_blobs_per_block(block.epoch()) as usize;
|
||||||
|
let mut blobs: RuntimeFixedList<Option<Arc<BlobSidecar<E>>>> =
|
||||||
|
RuntimeFixedList::default(max_len);
|
||||||
|
|
||||||
for blob in blobs_vec {
|
for blob in blobs_vec {
|
||||||
if let Some(b) = blobs.get_mut(blob.index as usize) {
|
if let Some(b) = blobs.get_mut(blob.index as usize) {
|
||||||
@@ -1184,10 +1189,8 @@ mod pending_components_tests {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut invalid_blobs: FixedVector<
|
let mut invalid_blobs: RuntimeFixedList<Option<Arc<BlobSidecar<E>>>> =
|
||||||
Option<Arc<BlobSidecar<E>>>,
|
RuntimeFixedList::default(max_len);
|
||||||
<E as EthSpec>::MaxBlobsPerBlock,
|
|
||||||
> = FixedVector::default();
|
|
||||||
for (index, blob) in blobs.iter().enumerate() {
|
for (index, blob) in blobs.iter().enumerate() {
|
||||||
if let Some(invalid_blob) = blob {
|
if let Some(invalid_blob) = blob {
|
||||||
let mut blob_copy = invalid_blob.as_ref().clone();
|
let mut blob_copy = invalid_blob.as_ref().clone();
|
||||||
@@ -1196,21 +1199,21 @@ mod pending_components_tests {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
(block, blobs, invalid_blobs)
|
(block, blobs, invalid_blobs, max_len)
|
||||||
}
|
}
|
||||||
|
|
||||||
type PendingComponentsSetup<E> = (
|
type PendingComponentsSetup<E> = (
|
||||||
DietAvailabilityPendingExecutedBlock<E>,
|
DietAvailabilityPendingExecutedBlock<E>,
|
||||||
FixedVector<Option<KzgVerifiedBlob<E>>, <E as EthSpec>::MaxBlobsPerBlock>,
|
RuntimeFixedList<Option<KzgVerifiedBlob<E>>>,
|
||||||
FixedVector<Option<KzgVerifiedBlob<E>>, <E as EthSpec>::MaxBlobsPerBlock>,
|
RuntimeFixedList<Option<KzgVerifiedBlob<E>>>,
|
||||||
);
|
);
|
||||||
|
|
||||||
pub fn setup_pending_components(
|
pub fn setup_pending_components(
|
||||||
block: SignedBeaconBlock<E>,
|
block: SignedBeaconBlock<E>,
|
||||||
valid_blobs: FixedVector<Option<Arc<BlobSidecar<E>>>, <E as EthSpec>::MaxBlobsPerBlock>,
|
valid_blobs: RuntimeFixedList<Option<Arc<BlobSidecar<E>>>>,
|
||||||
invalid_blobs: FixedVector<Option<Arc<BlobSidecar<E>>>, <E as EthSpec>::MaxBlobsPerBlock>,
|
invalid_blobs: RuntimeFixedList<Option<Arc<BlobSidecar<E>>>>,
|
||||||
) -> PendingComponentsSetup<E> {
|
) -> PendingComponentsSetup<E> {
|
||||||
let blobs = FixedVector::from(
|
let blobs = RuntimeFixedList::new(
|
||||||
valid_blobs
|
valid_blobs
|
||||||
.iter()
|
.iter()
|
||||||
.map(|blob_opt| {
|
.map(|blob_opt| {
|
||||||
@@ -1220,7 +1223,7 @@ mod pending_components_tests {
|
|||||||
})
|
})
|
||||||
.collect::<Vec<_>>(),
|
.collect::<Vec<_>>(),
|
||||||
);
|
);
|
||||||
let invalid_blobs = FixedVector::from(
|
let invalid_blobs = RuntimeFixedList::new(
|
||||||
invalid_blobs
|
invalid_blobs
|
||||||
.iter()
|
.iter()
|
||||||
.map(|blob_opt| {
|
.map(|blob_opt| {
|
||||||
@@ -1252,10 +1255,10 @@ mod pending_components_tests {
|
|||||||
(block.into(), blobs, invalid_blobs)
|
(block.into(), blobs, invalid_blobs)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn assert_cache_consistent(cache: PendingComponents<E>) {
|
pub fn assert_cache_consistent(cache: PendingComponents<E>, max_len: usize) {
|
||||||
if let Some(cached_block) = cache.get_cached_block() {
|
if let Some(cached_block) = cache.get_cached_block() {
|
||||||
let cached_block_commitments = cached_block.get_commitments();
|
let cached_block_commitments = cached_block.get_commitments();
|
||||||
for index in 0..E::max_blobs_per_block() {
|
for index in 0..max_len {
|
||||||
let block_commitment = cached_block_commitments.get(index).copied();
|
let block_commitment = cached_block_commitments.get(index).copied();
|
||||||
let blob_commitment_opt = cache.get_cached_blobs().get(index).unwrap();
|
let blob_commitment_opt = cache.get_cached_blobs().get(index).unwrap();
|
||||||
let blob_commitment = blob_commitment_opt.as_ref().map(|b| *b.get_commitment());
|
let blob_commitment = blob_commitment_opt.as_ref().map(|b| *b.get_commitment());
|
||||||
@@ -1274,40 +1277,40 @@ mod pending_components_tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn valid_block_invalid_blobs_valid_blobs() {
|
fn valid_block_invalid_blobs_valid_blobs() {
|
||||||
let (block_commitments, blobs, random_blobs) = pre_setup();
|
let (block_commitments, blobs, random_blobs, max_len) = pre_setup();
|
||||||
let (block_commitments, blobs, random_blobs) =
|
let (block_commitments, blobs, random_blobs) =
|
||||||
setup_pending_components(block_commitments, blobs, random_blobs);
|
setup_pending_components(block_commitments, blobs, random_blobs);
|
||||||
let block_root = Hash256::zero();
|
let block_root = Hash256::zero();
|
||||||
let mut cache = <PendingComponents<E>>::empty(block_root);
|
let mut cache = <PendingComponents<E>>::empty(block_root, max_len);
|
||||||
cache.merge_block(block_commitments);
|
cache.merge_block(block_commitments);
|
||||||
cache.merge_blobs(random_blobs);
|
cache.merge_blobs(random_blobs);
|
||||||
cache.merge_blobs(blobs);
|
cache.merge_blobs(blobs);
|
||||||
|
|
||||||
assert_cache_consistent(cache);
|
assert_cache_consistent(cache, max_len);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn invalid_blobs_block_valid_blobs() {
|
fn invalid_blobs_block_valid_blobs() {
|
||||||
let (block_commitments, blobs, random_blobs) = pre_setup();
|
let (block_commitments, blobs, random_blobs, max_len) = pre_setup();
|
||||||
let (block_commitments, blobs, random_blobs) =
|
let (block_commitments, blobs, random_blobs) =
|
||||||
setup_pending_components(block_commitments, blobs, random_blobs);
|
setup_pending_components(block_commitments, blobs, random_blobs);
|
||||||
let block_root = Hash256::zero();
|
let block_root = Hash256::zero();
|
||||||
let mut cache = <PendingComponents<E>>::empty(block_root);
|
let mut cache = <PendingComponents<E>>::empty(block_root, max_len);
|
||||||
cache.merge_blobs(random_blobs);
|
cache.merge_blobs(random_blobs);
|
||||||
cache.merge_block(block_commitments);
|
cache.merge_block(block_commitments);
|
||||||
cache.merge_blobs(blobs);
|
cache.merge_blobs(blobs);
|
||||||
|
|
||||||
assert_cache_consistent(cache);
|
assert_cache_consistent(cache, max_len);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn invalid_blobs_valid_blobs_block() {
|
fn invalid_blobs_valid_blobs_block() {
|
||||||
let (block_commitments, blobs, random_blobs) = pre_setup();
|
let (block_commitments, blobs, random_blobs, max_len) = pre_setup();
|
||||||
let (block_commitments, blobs, random_blobs) =
|
let (block_commitments, blobs, random_blobs) =
|
||||||
setup_pending_components(block_commitments, blobs, random_blobs);
|
setup_pending_components(block_commitments, blobs, random_blobs);
|
||||||
|
|
||||||
let block_root = Hash256::zero();
|
let block_root = Hash256::zero();
|
||||||
let mut cache = <PendingComponents<E>>::empty(block_root);
|
let mut cache = <PendingComponents<E>>::empty(block_root, max_len);
|
||||||
cache.merge_blobs(random_blobs);
|
cache.merge_blobs(random_blobs);
|
||||||
cache.merge_blobs(blobs);
|
cache.merge_blobs(blobs);
|
||||||
cache.merge_block(block_commitments);
|
cache.merge_block(block_commitments);
|
||||||
@@ -1317,46 +1320,46 @@ mod pending_components_tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn block_valid_blobs_invalid_blobs() {
|
fn block_valid_blobs_invalid_blobs() {
|
||||||
let (block_commitments, blobs, random_blobs) = pre_setup();
|
let (block_commitments, blobs, random_blobs, max_len) = pre_setup();
|
||||||
let (block_commitments, blobs, random_blobs) =
|
let (block_commitments, blobs, random_blobs) =
|
||||||
setup_pending_components(block_commitments, blobs, random_blobs);
|
setup_pending_components(block_commitments, blobs, random_blobs);
|
||||||
|
|
||||||
let block_root = Hash256::zero();
|
let block_root = Hash256::zero();
|
||||||
let mut cache = <PendingComponents<E>>::empty(block_root);
|
let mut cache = <PendingComponents<E>>::empty(block_root, max_len);
|
||||||
cache.merge_block(block_commitments);
|
cache.merge_block(block_commitments);
|
||||||
cache.merge_blobs(blobs);
|
cache.merge_blobs(blobs);
|
||||||
cache.merge_blobs(random_blobs);
|
cache.merge_blobs(random_blobs);
|
||||||
|
|
||||||
assert_cache_consistent(cache);
|
assert_cache_consistent(cache, max_len);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn valid_blobs_block_invalid_blobs() {
|
fn valid_blobs_block_invalid_blobs() {
|
||||||
let (block_commitments, blobs, random_blobs) = pre_setup();
|
let (block_commitments, blobs, random_blobs, max_len) = pre_setup();
|
||||||
let (block_commitments, blobs, random_blobs) =
|
let (block_commitments, blobs, random_blobs) =
|
||||||
setup_pending_components(block_commitments, blobs, random_blobs);
|
setup_pending_components(block_commitments, blobs, random_blobs);
|
||||||
|
|
||||||
let block_root = Hash256::zero();
|
let block_root = Hash256::zero();
|
||||||
let mut cache = <PendingComponents<E>>::empty(block_root);
|
let mut cache = <PendingComponents<E>>::empty(block_root, max_len);
|
||||||
cache.merge_blobs(blobs);
|
cache.merge_blobs(blobs);
|
||||||
cache.merge_block(block_commitments);
|
cache.merge_block(block_commitments);
|
||||||
cache.merge_blobs(random_blobs);
|
cache.merge_blobs(random_blobs);
|
||||||
|
|
||||||
assert_cache_consistent(cache);
|
assert_cache_consistent(cache, max_len);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn valid_blobs_invalid_blobs_block() {
|
fn valid_blobs_invalid_blobs_block() {
|
||||||
let (block_commitments, blobs, random_blobs) = pre_setup();
|
let (block_commitments, blobs, random_blobs, max_len) = pre_setup();
|
||||||
let (block_commitments, blobs, random_blobs) =
|
let (block_commitments, blobs, random_blobs) =
|
||||||
setup_pending_components(block_commitments, blobs, random_blobs);
|
setup_pending_components(block_commitments, blobs, random_blobs);
|
||||||
|
|
||||||
let block_root = Hash256::zero();
|
let block_root = Hash256::zero();
|
||||||
let mut cache = <PendingComponents<E>>::empty(block_root);
|
let mut cache = <PendingComponents<E>>::empty(block_root, max_len);
|
||||||
cache.merge_blobs(blobs);
|
cache.merge_blobs(blobs);
|
||||||
cache.merge_blobs(random_blobs);
|
cache.merge_blobs(random_blobs);
|
||||||
cache.merge_block(block_commitments);
|
cache.merge_block(block_commitments);
|
||||||
|
|
||||||
assert_cache_consistent(cache);
|
assert_cache_consistent(cache, max_len);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -155,7 +155,7 @@ mod tests {
|
|||||||
use crate::test_utils::test_spec;
|
use crate::test_utils::test_spec;
|
||||||
use bls::Hash256;
|
use bls::Hash256;
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
use types::MainnetEthSpec;
|
use types::{Epoch, MainnetEthSpec};
|
||||||
|
|
||||||
type E = MainnetEthSpec;
|
type E = MainnetEthSpec;
|
||||||
|
|
||||||
@@ -309,7 +309,7 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn simple_observations() {
|
fn simple_observations() {
|
||||||
let spec = test_spec::<E>();
|
let spec = test_spec::<E>();
|
||||||
let mut cache = ObservedDataSidecars::<BlobSidecar<E>>::new(spec);
|
let mut cache = ObservedDataSidecars::<BlobSidecar<E>>::new(spec.clone());
|
||||||
|
|
||||||
// Slot 0, index 0
|
// Slot 0, index 0
|
||||||
let proposer_index_a = 420;
|
let proposer_index_a = 420;
|
||||||
@@ -465,7 +465,7 @@ mod tests {
|
|||||||
);
|
);
|
||||||
|
|
||||||
// Try adding an out of bounds index
|
// Try adding an out of bounds index
|
||||||
let invalid_index = E::max_blobs_per_block() as u64;
|
let invalid_index = spec.max_blobs_per_block(Epoch::new(0));
|
||||||
let sidecar_d = get_blob_sidecar(0, proposer_index_a, invalid_index);
|
let sidecar_d = get_blob_sidecar(0, proposer_index_a, invalid_index);
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
cache.observe_sidecar(&sidecar_d),
|
cache.observe_sidecar(&sidecar_d),
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ async fn blob_sidecar_event_on_process_rpc_blobs() {
|
|||||||
index: 1,
|
index: 1,
|
||||||
..BlobSidecar::random_valid(&mut rng, kzg).unwrap()
|
..BlobSidecar::random_valid(&mut rng, kzg).unwrap()
|
||||||
});
|
});
|
||||||
let blobs = FixedBlobSidecarList::from(vec![Some(blob_1.clone()), Some(blob_2.clone())]);
|
let blobs = FixedBlobSidecarList::new(vec![Some(blob_1.clone()), Some(blob_2.clone())]);
|
||||||
let expected_sse_blobs = vec![
|
let expected_sse_blobs = vec![
|
||||||
SseBlobSidecar::from_blob_sidecar(blob_1.as_ref()),
|
SseBlobSidecar::from_blob_sidecar(blob_1.as_ref()),
|
||||||
SseBlobSidecar::from_blob_sidecar(blob_2.as_ref()),
|
SseBlobSidecar::from_blob_sidecar(blob_2.as_ref()),
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ use types::{
|
|||||||
test_utils::{SeedableRng, XorShiftRng},
|
test_utils::{SeedableRng, XorShiftRng},
|
||||||
BlobSidecar, ForkName, MinimalEthSpec as E, SignedBeaconBlock, Slot,
|
BlobSidecar, ForkName, MinimalEthSpec as E, SignedBeaconBlock, Slot,
|
||||||
};
|
};
|
||||||
use types::{BeaconState, BeaconStateBase};
|
use types::{BeaconState, BeaconStateBase, ChainSpec};
|
||||||
use types::{DataColumnSidecar, Epoch};
|
use types::{DataColumnSidecar, Epoch};
|
||||||
|
|
||||||
type T = Witness<ManualSlotClock, CachingEth1Backend<E>, E, MemoryStore<E>, MemoryStore<E>>;
|
type T = Witness<ManualSlotClock, CachingEth1Backend<E>, E, MemoryStore<E>, MemoryStore<E>>;
|
||||||
@@ -86,6 +86,7 @@ struct TestRig {
|
|||||||
/// `rng` for generating test blocks and blobs.
|
/// `rng` for generating test blocks and blobs.
|
||||||
rng: XorShiftRng,
|
rng: XorShiftRng,
|
||||||
fork_name: ForkName,
|
fork_name: ForkName,
|
||||||
|
spec: ChainSpec,
|
||||||
log: Logger,
|
log: Logger,
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -153,6 +154,8 @@ impl TestRig {
|
|||||||
.network_globals
|
.network_globals
|
||||||
.set_sync_state(SyncState::Synced);
|
.set_sync_state(SyncState::Synced);
|
||||||
|
|
||||||
|
let spec = chain.spec.clone();
|
||||||
|
|
||||||
let rng = XorShiftRng::from_seed([42; 16]);
|
let rng = XorShiftRng::from_seed([42; 16]);
|
||||||
TestRig {
|
TestRig {
|
||||||
beacon_processor_rx,
|
beacon_processor_rx,
|
||||||
@@ -174,6 +177,7 @@ impl TestRig {
|
|||||||
harness,
|
harness,
|
||||||
fork_name,
|
fork_name,
|
||||||
log,
|
log,
|
||||||
|
spec,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2048,8 +2052,8 @@ mod deneb_only {
|
|||||||
use beacon_chain::{
|
use beacon_chain::{
|
||||||
block_verification_types::RpcBlock, data_availability_checker::AvailabilityCheckError,
|
block_verification_types::RpcBlock, data_availability_checker::AvailabilityCheckError,
|
||||||
};
|
};
|
||||||
use ssz_types::VariableList;
|
|
||||||
use std::collections::VecDeque;
|
use std::collections::VecDeque;
|
||||||
|
use types::RuntimeVariableList;
|
||||||
|
|
||||||
struct DenebTester {
|
struct DenebTester {
|
||||||
rig: TestRig,
|
rig: TestRig,
|
||||||
@@ -2407,12 +2411,15 @@ mod deneb_only {
|
|||||||
fn parent_block_unknown_parent(mut self) -> Self {
|
fn parent_block_unknown_parent(mut self) -> Self {
|
||||||
self.rig.log("parent_block_unknown_parent");
|
self.rig.log("parent_block_unknown_parent");
|
||||||
let block = self.unknown_parent_block.take().unwrap();
|
let block = self.unknown_parent_block.take().unwrap();
|
||||||
|
let max_len = self.rig.spec.max_blobs_per_block(block.epoch()) as usize;
|
||||||
// Now this block is the one we expect requests from
|
// Now this block is the one we expect requests from
|
||||||
self.block = block.clone();
|
self.block = block.clone();
|
||||||
let block = RpcBlock::new(
|
let block = RpcBlock::new(
|
||||||
Some(block.canonical_root()),
|
Some(block.canonical_root()),
|
||||||
block,
|
block,
|
||||||
self.unknown_parent_blobs.take().map(VariableList::from),
|
self.unknown_parent_blobs
|
||||||
|
.take()
|
||||||
|
.map(|vec| RuntimeVariableList::from_vec(vec, max_len)),
|
||||||
)
|
)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
self.rig.parent_block_processed(
|
self.rig.parent_block_processed(
|
||||||
|
|||||||
@@ -252,12 +252,15 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn no_blobs_into_responses() {
|
fn no_blobs_into_responses() {
|
||||||
|
let spec = test_spec::<E>();
|
||||||
let peer_id = PeerId::random();
|
let peer_id = PeerId::random();
|
||||||
let mut info = RangeBlockComponentsRequest::<E>::new(false, None, None, vec![peer_id]);
|
|
||||||
let mut rng = XorShiftRng::from_seed([42; 16]);
|
let mut rng = XorShiftRng::from_seed([42; 16]);
|
||||||
let blocks = (0..4)
|
let blocks = (0..4)
|
||||||
.map(|_| generate_rand_block_and_blobs::<E>(ForkName::Base, NumBlobs::None, &mut rng).0)
|
.map(|_| generate_rand_block_and_blobs::<E>(ForkName::Base, NumBlobs::None, &mut rng).0)
|
||||||
.collect::<Vec<_>>();
|
.collect::<Vec<_>>();
|
||||||
|
let max_len = spec.max_blobs_per_block(blocks.first().unwrap().epoch()) as usize;
|
||||||
|
let mut info =
|
||||||
|
RangeBlockComponentsRequest::<E>::new(false, None, None, vec![peer_id], max_len);
|
||||||
|
|
||||||
// Send blocks and complete terminate response
|
// Send blocks and complete terminate response
|
||||||
for block in blocks {
|
for block in blocks {
|
||||||
@@ -272,8 +275,8 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn empty_blobs_into_responses() {
|
fn empty_blobs_into_responses() {
|
||||||
|
let spec = test_spec::<E>();
|
||||||
let peer_id = PeerId::random();
|
let peer_id = PeerId::random();
|
||||||
let mut info = RangeBlockComponentsRequest::<E>::new(true, None, None, vec![peer_id]);
|
|
||||||
let mut rng = XorShiftRng::from_seed([42; 16]);
|
let mut rng = XorShiftRng::from_seed([42; 16]);
|
||||||
let blocks = (0..4)
|
let blocks = (0..4)
|
||||||
.map(|_| {
|
.map(|_| {
|
||||||
@@ -281,6 +284,9 @@ mod tests {
|
|||||||
generate_rand_block_and_blobs::<E>(ForkName::Deneb, NumBlobs::Number(3), &mut rng).0
|
generate_rand_block_and_blobs::<E>(ForkName::Deneb, NumBlobs::Number(3), &mut rng).0
|
||||||
})
|
})
|
||||||
.collect::<Vec<_>>();
|
.collect::<Vec<_>>();
|
||||||
|
let max_len = spec.max_blobs_per_block(blocks.first().unwrap().epoch()) as usize;
|
||||||
|
let mut info =
|
||||||
|
RangeBlockComponentsRequest::<E>::new(true, None, None, vec![peer_id], max_len);
|
||||||
|
|
||||||
// Send blocks and complete terminate response
|
// Send blocks and complete terminate response
|
||||||
for block in blocks {
|
for block in blocks {
|
||||||
@@ -301,12 +307,7 @@ mod tests {
|
|||||||
fn rpc_block_with_custody_columns() {
|
fn rpc_block_with_custody_columns() {
|
||||||
let spec = test_spec::<E>();
|
let spec = test_spec::<E>();
|
||||||
let expects_custody_columns = vec![1, 2, 3, 4];
|
let expects_custody_columns = vec![1, 2, 3, 4];
|
||||||
let mut info = RangeBlockComponentsRequest::<E>::new(
|
|
||||||
false,
|
|
||||||
Some(expects_custody_columns.clone()),
|
|
||||||
Some(expects_custody_columns.len()),
|
|
||||||
vec![PeerId::random()],
|
|
||||||
);
|
|
||||||
let mut rng = XorShiftRng::from_seed([42; 16]);
|
let mut rng = XorShiftRng::from_seed([42; 16]);
|
||||||
let blocks = (0..4)
|
let blocks = (0..4)
|
||||||
.map(|_| {
|
.map(|_| {
|
||||||
@@ -318,7 +319,14 @@ mod tests {
|
|||||||
)
|
)
|
||||||
})
|
})
|
||||||
.collect::<Vec<_>>();
|
.collect::<Vec<_>>();
|
||||||
|
let max_len = spec.max_blobs_per_block(blocks.first().unwrap().0.epoch()) as usize;
|
||||||
|
let mut info = RangeBlockComponentsRequest::<E>::new(
|
||||||
|
false,
|
||||||
|
Some(expects_custody_columns.clone()),
|
||||||
|
Some(expects_custody_columns.len()),
|
||||||
|
vec![PeerId::random()],
|
||||||
|
max_len,
|
||||||
|
);
|
||||||
// Send blocks and complete terminate response
|
// Send blocks and complete terminate response
|
||||||
for block in &blocks {
|
for block in &blocks {
|
||||||
info.add_block_response(Some(block.0.clone().into()));
|
info.add_block_response(Some(block.0.clone().into()));
|
||||||
@@ -362,12 +370,7 @@ mod tests {
|
|||||||
let spec = test_spec::<E>();
|
let spec = test_spec::<E>();
|
||||||
let expects_custody_columns = vec![1, 2, 3, 4];
|
let expects_custody_columns = vec![1, 2, 3, 4];
|
||||||
let num_of_data_column_requests = 2;
|
let num_of_data_column_requests = 2;
|
||||||
let mut info = RangeBlockComponentsRequest::<E>::new(
|
|
||||||
false,
|
|
||||||
Some(expects_custody_columns.clone()),
|
|
||||||
Some(num_of_data_column_requests),
|
|
||||||
vec![PeerId::random()],
|
|
||||||
);
|
|
||||||
let mut rng = XorShiftRng::from_seed([42; 16]);
|
let mut rng = XorShiftRng::from_seed([42; 16]);
|
||||||
let blocks = (0..4)
|
let blocks = (0..4)
|
||||||
.map(|_| {
|
.map(|_| {
|
||||||
@@ -379,7 +382,14 @@ mod tests {
|
|||||||
)
|
)
|
||||||
})
|
})
|
||||||
.collect::<Vec<_>>();
|
.collect::<Vec<_>>();
|
||||||
|
let max_len = spec.max_blobs_per_block(blocks.first().unwrap().0.epoch()) as usize;
|
||||||
|
let mut info = RangeBlockComponentsRequest::<E>::new(
|
||||||
|
false,
|
||||||
|
Some(expects_custody_columns.clone()),
|
||||||
|
Some(num_of_data_column_requests),
|
||||||
|
vec![PeerId::random()],
|
||||||
|
max_len,
|
||||||
|
);
|
||||||
// Send blocks and complete terminate response
|
// Send blocks and complete terminate response
|
||||||
for block in &blocks {
|
for block in &blocks {
|
||||||
info.add_block_response(Some(block.0.clone().into()));
|
info.add_block_response(Some(block.0.clone().into()));
|
||||||
|
|||||||
@@ -292,6 +292,13 @@ impl<T: Clone + Default> RuntimeFixedList<T> {
|
|||||||
self.vec
|
self.vec
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn default(max_len: usize) -> Self {
|
||||||
|
Self {
|
||||||
|
vec: vec![T::default(); max_len],
|
||||||
|
len: max_len,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pub fn take(&mut self) -> Self {
|
pub fn take(&mut self) -> Self {
|
||||||
let new = std::mem::take(&mut self.vec);
|
let new = std::mem::take(&mut self.vec);
|
||||||
*self = Self::new(vec![T::default(); self.len]);
|
*self = Self::new(vec![T::default(); self.len]);
|
||||||
@@ -339,7 +346,6 @@ mod test {
|
|||||||
use super::*;
|
use super::*;
|
||||||
use ssz::*;
|
use ssz::*;
|
||||||
use std::fmt::Debug;
|
use std::fmt::Debug;
|
||||||
use tree_hash::TreeHash;
|
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn new() {
|
fn new() {
|
||||||
@@ -404,7 +410,7 @@ mod test {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn round_trip<T: Encode + Decode + PartialEq + Debug>(item: RuntimeVariableList<T>) {
|
fn round_trip<T: Encode + Decode + PartialEq + Debug>(item: RuntimeVariableList<T>) {
|
||||||
let max_len = item.max_len();
|
let max_len = item.max_len().unwrap();
|
||||||
let encoded = &item.as_ssz_bytes();
|
let encoded = &item.as_ssz_bytes();
|
||||||
assert_eq!(item.ssz_bytes_len(), encoded.len());
|
assert_eq!(item.ssz_bytes_len(), encoded.len());
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
@@ -418,12 +424,4 @@ mod test {
|
|||||||
round_trip::<u16>(RuntimeVariableList::from_vec(vec![42; 8], 8));
|
round_trip::<u16>(RuntimeVariableList::from_vec(vec![42; 8], 8));
|
||||||
round_trip::<u16>(RuntimeVariableList::from_vec(vec![0; 8], 8));
|
round_trip::<u16>(RuntimeVariableList::from_vec(vec![0; 8], 8));
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn test_empty_list_encoding() {
|
|
||||||
use ssz_types::{typenum::U16, VariableList};
|
|
||||||
|
|
||||||
let a: RuntimeVariableList<u64> = RuntimeVariableList::from_vec(vec![], 16);
|
|
||||||
dbg!(a.tree_hash_root());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user