test(provider): instantiate provider with util function (#5534)

This commit is contained in:
Roman Krasiuk
2023-11-22 07:29:19 -08:00
committed by GitHub
parent 3c7f32d839
commit 5e378b13ca
3 changed files with 36 additions and 61 deletions

View File

@@ -381,7 +381,7 @@ impl BundleStateWithReceipts {
#[cfg(test)]
mod tests {
use super::*;
use crate::{AccountReader, BundleStateWithReceipts, ProviderFactory};
use crate::{test_utils::create_test_provider_factory, AccountReader, BundleStateWithReceipts};
use reth_db::{
cursor::{DbCursorRO, DbDupCursorRO},
database::Database,
@@ -391,7 +391,7 @@ mod tests {
transaction::DbTx,
};
use reth_primitives::{
revm::compat::into_reth_acc, Address, Receipt, Receipts, StorageEntry, B256, MAINNET, U256,
revm::compat::into_reth_acc, Address, Receipt, Receipts, StorageEntry, B256, U256,
};
use reth_trie::test_utils::state_root;
use revm::{
@@ -413,8 +413,7 @@ mod tests {
#[test]
fn write_to_db_account_info() {
let db = create_test_rw_db();
let factory = ProviderFactory::new(db, MAINNET.clone());
let factory = create_test_provider_factory();
let provider = factory.provider_rw().unwrap();
let address_a = Address::ZERO;
@@ -552,8 +551,7 @@ mod tests {
#[test]
fn write_to_db_storage() {
let db = create_test_rw_db();
let factory = ProviderFactory::new(db, MAINNET.clone());
let factory = create_test_provider_factory();
let provider = factory.provider_rw().unwrap();
let address_a = Address::ZERO;
@@ -741,8 +739,7 @@ mod tests {
#[test]
fn write_to_db_multiple_selfdestructs() {
let db = create_test_rw_db();
let factory = ProviderFactory::new(db, MAINNET.clone());
let factory = create_test_provider_factory();
let provider = factory.provider_rw().unwrap();
let address1 = Address::random();
@@ -1050,8 +1047,7 @@ mod tests {
#[test]
fn storage_change_after_selfdestruct_within_block() {
let db = create_test_rw_db();
let factory = ProviderFactory::new(db, MAINNET.clone());
let factory = create_test_provider_factory();
let provider = factory.provider_rw().unwrap();
let address1 = Address::random();

View File

@@ -490,18 +490,13 @@ impl<DB: Database> PruneCheckpointReader for ProviderFactory<DB> {
mod tests {
use super::ProviderFactory;
use crate::{
BlockHashReader, BlockNumReader, BlockWriter, HeaderSyncGapProvider, HeaderSyncMode,
TransactionsProvider,
test_utils::create_test_provider_factory, BlockHashReader, BlockNumReader, BlockWriter,
HeaderSyncGapProvider, HeaderSyncMode, TransactionsProvider,
};
use alloy_rlp::Decodable;
use assert_matches::assert_matches;
use rand::Rng;
use reth_db::{
tables,
test_utils::{create_test_rw_db, ERROR_TEMPDIR},
transaction::DbTxMut,
DatabaseEnv,
};
use reth_db::{tables, test_utils::ERROR_TEMPDIR, transaction::DbTxMut, DatabaseEnv};
use reth_interfaces::{
provider::ProviderError,
test_utils::{
@@ -518,17 +513,13 @@ mod tests {
#[test]
fn common_history_provider() {
let chain_spec = ChainSpecBuilder::mainnet().build();
let db = create_test_rw_db();
let provider = ProviderFactory::new(db, Arc::new(chain_spec));
let _ = provider.latest();
let factory = create_test_provider_factory();
let _ = factory.latest();
}
#[test]
fn default_chain_info() {
let chain_spec = ChainSpecBuilder::mainnet().build();
let db = create_test_rw_db();
let factory = ProviderFactory::new(db, Arc::new(chain_spec));
let factory = create_test_provider_factory();
let provider = factory.provider().unwrap();
let chain_info = provider.chain_info().expect("should be ok");
@@ -538,9 +529,7 @@ mod tests {
#[test]
fn provider_flow() {
let chain_spec = ChainSpecBuilder::mainnet().build();
let db = create_test_rw_db();
let factory = ProviderFactory::new(db, Arc::new(chain_spec));
let factory = create_test_provider_factory();
let provider = factory.provider().unwrap();
provider.block_hash(0).unwrap();
let provider_rw = factory.provider_rw().unwrap();
@@ -567,9 +556,7 @@ mod tests {
#[test]
fn insert_block_with_prune_modes() {
let chain_spec = ChainSpecBuilder::mainnet().build();
let db = create_test_rw_db();
let factory = ProviderFactory::new(db, Arc::new(chain_spec));
let factory = create_test_provider_factory();
let mut block_rlp = hex!("f9025ff901f7a0c86e8cc0310ae7c531c758678ddbfd16fc51c8cef8cec650b032de9869e8b94fa01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa050554882fbbda2c2fd93fdc466db9946ea262a67f7a76cc169e714f105ab583da00967f09ef1dfed20c0eacfaa94d5cd4002eda3242ac47eae68972d07b106d192a0e3c8b47fbfc94667ef4cceb17e5cc21e3b1eebd442cebb27f07562b33836290db90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008302000001830f42408238108203e800a00000000000000000000000000000000000000000000000000000000000000000880000000000000000f862f860800a83061a8094095e7baea6a6c7c4c2dfeb977efac326af552d8780801ba072ed817487b84ba367d15d2f039b5fc5f087d0a8882fbdf73e8cb49357e1ce30a0403d800545b8fc544f92ce8124e2255f8c3c6af93f28243a120585d4c4c6a2a3c0").as_slice();
let block = SealedBlock::decode(&mut block_rlp).unwrap();
@@ -605,9 +592,7 @@ mod tests {
#[test]
fn get_take_block_transaction_range_recover_senders() {
let chain_spec = ChainSpecBuilder::mainnet().build();
let db = create_test_rw_db();
let factory = ProviderFactory::new(db, Arc::new(chain_spec));
let factory = create_test_provider_factory();
let mut rng = generators::rng();
let block = random_block(&mut rng, 0, None, Some(3), None);
@@ -646,12 +631,10 @@ mod tests {
#[test]
fn header_sync_gap_lookup() {
let mut rng = generators::rng();
let chain_spec = ChainSpecBuilder::mainnet().build();
let db = create_test_rw_db();
let factory = ProviderFactory::new(db, Arc::new(chain_spec));
let factory = create_test_provider_factory();
let provider = factory.provider_rw().unwrap();
let mut rng = generators::rng();
let consensus_tip = rng.gen();
let (_tip_tx, tip_rx) = watch::channel(consensus_tip);
let mode = HeaderSyncMode::Tip(tip_rx);

View File

@@ -41,19 +41,17 @@ impl Deref for LoadedJar {
#[cfg(test)]
mod test {
use super::*;
use crate::{HeaderProvider, ProviderFactory};
use crate::{test_utils::create_test_provider_factory, HeaderProvider};
use rand::{self, seq::SliceRandom};
use reth_db::{
cursor::DbCursorRO,
database::Database,
snapshot::create_snapshot_T1_T2_T3,
test_utils::create_test_rw_db,
transaction::{DbTx, DbTxMut},
CanonicalHeaders, DatabaseError, HeaderNumbers, HeaderTD, Headers, RawTable,
CanonicalHeaders, HeaderNumbers, HeaderTD, Headers, RawTable,
};
use reth_interfaces::test_utils::generators::{self, random_header_range};
use reth_nippy_jar::NippyJar;
use reth_primitives::{BlockNumber, B256, MAINNET, U256};
use reth_primitives::{BlockNumber, B256, U256};
#[test]
fn test_snap() {
@@ -64,8 +62,7 @@ mod test {
SegmentHeader::new(range.clone(), range.clone(), SnapshotSegment::Headers);
// Data sources
let db = create_test_rw_db();
let factory = ProviderFactory::new(&db, MAINNET.clone());
let factory = create_test_provider_factory();
let snap_path = tempfile::tempdir().unwrap();
let snap_file = snap_path.path().join(SnapshotSegment::Headers.filename(&range, &range));
@@ -76,21 +73,19 @@ mod test {
B256::random(),
);
db.update(|tx| -> Result<(), DatabaseError> {
let mut td = U256::ZERO;
for header in headers.clone() {
td += header.header.difficulty;
let hash = header.hash();
let mut provider_rw = factory.provider_rw().unwrap();
let tx = provider_rw.tx_mut();
let mut td = U256::ZERO;
for header in headers.clone() {
td += header.header.difficulty;
let hash = header.hash();
tx.put::<CanonicalHeaders>(header.number, hash)?;
tx.put::<Headers>(header.number, header.clone().unseal())?;
tx.put::<HeaderTD>(header.number, td.into())?;
tx.put::<HeaderNumbers>(hash, header.number)?;
}
Ok(())
})
.unwrap()
.unwrap();
tx.put::<CanonicalHeaders>(header.number, hash).unwrap();
tx.put::<Headers>(header.number, header.clone().unseal()).unwrap();
tx.put::<HeaderTD>(header.number, td.into()).unwrap();
tx.put::<HeaderNumbers>(hash, header.number).unwrap();
}
provider_rw.commit().unwrap();
// Create Snapshot
{
@@ -107,7 +102,8 @@ mod test {
nippy_jar = nippy_jar.with_cuckoo_filter(row_count as usize + 10).with_fmph();
}
let tx = db.tx().unwrap();
let provider = factory.provider().unwrap();
let tx = provider.tx_ref();
// Hacky type inference. TODO fix
let mut none_vec = Some(vec![vec![vec![0u8]].into_iter()]);
@@ -127,7 +123,7 @@ mod test {
BlockNumber,
SegmentHeader,
>(
&tx, range, None, none_vec, Some(hashes), row_count as usize, &mut nippy_jar
tx, range, None, none_vec, Some(hashes), row_count as usize, &mut nippy_jar
)
.unwrap();
}