mirror of
https://github.com/paradigmxyz/reth.git
synced 2026-01-26 23:58:46 -05:00
fix: ensure receipts are written to storage during test setups (#10660)
This commit is contained in:
@@ -1444,7 +1444,8 @@ mod tests {
|
||||
use crate::{
|
||||
providers::BlockchainProvider2,
|
||||
test_utils::{create_test_provider_factory, create_test_provider_factory_with_chain_spec},
|
||||
BlockWriter, CanonChainTracker, StaticFileWriter,
|
||||
writer::UnifiedStorageWriter,
|
||||
BlockWriter, CanonChainTracker, StaticFileProviderFactory, StaticFileWriter,
|
||||
};
|
||||
use itertools::Itertools;
|
||||
use rand::Rng;
|
||||
@@ -1547,21 +1548,26 @@ mod tests {
|
||||
let factory = create_test_provider_factory_with_chain_spec(chain_spec);
|
||||
let provider_rw = factory.provider_rw()?;
|
||||
|
||||
// Insert blocks and receipts into the database
|
||||
// Insert blocks into the database
|
||||
for block in &database_blocks {
|
||||
provider_rw.insert_historical_block(
|
||||
block.clone().seal_with_senders().expect("failed to seal block with senders"),
|
||||
)?;
|
||||
|
||||
// Insert the receipts into the database using the writer from the provider_rw
|
||||
let mut writer =
|
||||
provider_rw.static_file_provider().latest_writer(StaticFileSegment::Receipts)?;
|
||||
let block_number = block.number as usize;
|
||||
for receipt in receipts.get(block_number).unwrap() {
|
||||
writer.append_receipt(block.number, receipt)?;
|
||||
}
|
||||
}
|
||||
provider_rw.commit()?;
|
||||
|
||||
// Insert receipts into the static files
|
||||
UnifiedStorageWriter::new(
|
||||
&provider_rw,
|
||||
Some(factory.static_file_provider().latest_writer(StaticFileSegment::Receipts)?),
|
||||
)
|
||||
.append_receipts_from_blocks(
|
||||
// The initial block number is required
|
||||
database_blocks.first().map(|b| b.number).unwrap_or_default(),
|
||||
receipts.iter().map(|vec| vec.clone().into_iter().map(Some).collect::<Vec<_>>()),
|
||||
)?;
|
||||
|
||||
// Commit to both storages: database and static files
|
||||
UnifiedStorageWriter::commit(provider_rw, factory.static_file_provider())?;
|
||||
|
||||
let provider = BlockchainProvider2::new(factory)?;
|
||||
|
||||
@@ -3049,7 +3055,7 @@ mod tests {
|
||||
&mut rng,
|
||||
TEST_BLOCKS_COUNT,
|
||||
TEST_BLOCKS_COUNT,
|
||||
BlockRangeParams::default(),
|
||||
BlockRangeParams { tx_count: 1..3, ..Default::default() },
|
||||
)?;
|
||||
|
||||
let database_block = database_blocks.first().unwrap().clone();
|
||||
@@ -3058,12 +3064,18 @@ mod tests {
|
||||
let block_number = database_block.number;
|
||||
let block_hash = database_block.header.hash();
|
||||
|
||||
assert!(!receipts.get(database_block.number as usize).unwrap().is_empty());
|
||||
assert!(!provider
|
||||
.receipts_by_number_or_tag(database_block.number.into())?
|
||||
.unwrap()
|
||||
.is_empty());
|
||||
|
||||
assert_eq!(
|
||||
provider.receipts_by_block_id(block_number.into())?.unwrap_or_default(),
|
||||
provider.receipts_by_block_id(block_number.into())?.unwrap(),
|
||||
receipts.get(block_number as usize).unwrap().clone()
|
||||
);
|
||||
assert_eq!(
|
||||
provider.receipts_by_block_id(block_hash.into())?.unwrap_or_default(),
|
||||
provider.receipts_by_block_id(block_hash.into())?.unwrap(),
|
||||
receipts.get(block_number as usize).unwrap().clone()
|
||||
);
|
||||
|
||||
@@ -3071,11 +3083,11 @@ mod tests {
|
||||
let block_hash = in_memory_block.header.hash();
|
||||
|
||||
assert_eq!(
|
||||
provider.receipts_by_block_id(block_number.into())?.unwrap_or_default(),
|
||||
provider.receipts_by_block_id(block_number.into())?.unwrap(),
|
||||
receipts.get(block_number as usize).unwrap().clone()
|
||||
);
|
||||
assert_eq!(
|
||||
provider.receipts_by_block_id(block_hash.into())?.unwrap_or_default(),
|
||||
provider.receipts_by_block_id(block_hash.into())?.unwrap(),
|
||||
receipts.get(block_number as usize).unwrap().clone()
|
||||
);
|
||||
|
||||
@@ -3089,7 +3101,7 @@ mod tests {
|
||||
&mut rng,
|
||||
TEST_BLOCKS_COUNT,
|
||||
TEST_BLOCKS_COUNT,
|
||||
BlockRangeParams::default(),
|
||||
BlockRangeParams { tx_count: 1..3, ..Default::default() },
|
||||
)?;
|
||||
|
||||
let database_block = database_blocks.first().unwrap().clone();
|
||||
@@ -3099,20 +3111,26 @@ mod tests {
|
||||
let safe_block = in_memory_blocks.get(in_memory_block_count - 2).unwrap().clone();
|
||||
let finalized_block = in_memory_blocks.get(in_memory_block_count - 3).unwrap().clone();
|
||||
|
||||
assert!(!receipts.get(database_block.number as usize).unwrap().is_empty());
|
||||
assert!(!provider
|
||||
.receipts_by_number_or_tag(database_block.number.into())?
|
||||
.unwrap()
|
||||
.is_empty());
|
||||
|
||||
assert_eq!(
|
||||
provider.receipts_by_number_or_tag(database_block.number.into())?.unwrap_or_default(),
|
||||
provider.receipts_by_number_or_tag(database_block.number.into())?.unwrap(),
|
||||
receipts.get(database_block.number as usize).unwrap().clone()
|
||||
);
|
||||
assert_eq!(
|
||||
provider.receipts_by_number_or_tag(BlockNumberOrTag::Latest)?.unwrap_or_default(),
|
||||
provider.receipts_by_number_or_tag(BlockNumberOrTag::Latest)?.unwrap(),
|
||||
receipts.get(canonical_block.number as usize).unwrap().clone()
|
||||
);
|
||||
assert_eq!(
|
||||
provider.receipts_by_number_or_tag(BlockNumberOrTag::Safe)?.unwrap_or_default(),
|
||||
provider.receipts_by_number_or_tag(BlockNumberOrTag::Safe)?.unwrap(),
|
||||
receipts.get(safe_block.number as usize).unwrap().clone()
|
||||
);
|
||||
assert_eq!(
|
||||
provider.receipts_by_number_or_tag(BlockNumberOrTag::Finalized)?.unwrap_or_default(),
|
||||
provider.receipts_by_number_or_tag(BlockNumberOrTag::Finalized)?.unwrap(),
|
||||
receipts.get(finalized_block.number as usize).unwrap().clone()
|
||||
);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user