From 73e04ed7aafc2c1983a4e78f325a59c1d7454a6d Mon Sep 17 00:00:00 2001 From: nk_ysg Date: Thu, 26 Sep 2024 12:35:36 +0800 Subject: [PATCH] move op storage tests into new crate reth-optimism-storage --- Cargo.lock | 10 ++++ Cargo.toml | 2 + crates/optimism/storage/Cargo.toml | 22 +++++++ crates/optimism/storage/src/lib.rs | 80 +++++++++++++++++++++++++ crates/storage/db-api/src/models/mod.rs | 56 ----------------- 5 files changed, 114 insertions(+), 56 deletions(-) create mode 100644 crates/optimism/storage/Cargo.toml create mode 100644 crates/optimism/storage/src/lib.rs diff --git a/Cargo.lock b/Cargo.lock index a02679addc75..08176ba65674 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8181,6 +8181,16 @@ dependencies = [ "tracing", ] +[[package]] +name = "reth-optimism-storage" +version = "1.0.7" +dependencies = [ + "reth-db-api", + "reth-primitives", + "reth-prune-types", + "reth-stages-types", +] + [[package]] name = "reth-payload-builder" version = "1.0.7" diff --git a/Cargo.toml b/Cargo.toml index c386abc6f679..9d3ea405e4e1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -79,6 +79,7 @@ members = [ "crates/optimism/payload/", "crates/optimism/primitives/", "crates/optimism/rpc/", + "crates/optimism/storage", "crates/payload/basic/", "crates/payload/builder/", "crates/payload/primitives/", @@ -368,6 +369,7 @@ reth-optimism-forks = { path = "crates/optimism/hardforks" } reth-optimism-payload-builder = { path = "crates/optimism/payload" } reth-optimism-primitives = { path = "crates/optimism/primitives" } reth-optimism-rpc = { path = "crates/optimism/rpc" } +reth-optimism-storage = { path = "crates/optimism/storage" } reth-payload-builder = { path = "crates/payload/builder" } reth-payload-primitives = { path = "crates/payload/primitives" } reth-payload-validator = { path = "crates/payload/validator" } diff --git a/crates/optimism/storage/Cargo.toml b/crates/optimism/storage/Cargo.toml new file mode 100644 index 000000000000..77485dd173a9 --- /dev/null +++ b/crates/optimism/storage/Cargo.toml @@ -0,0 +1,22 @@ +[package] +name = "reth-optimism-storage" +version.workspace = true +edition.workspace = true +rust-version.workspace = true +license.workspace = true +homepage.workspace = true +repository.workspace = true + +[lints] +workspace = true + +[dependencies] +reth-primitives.workspace = true + +[dev-dependencies] +reth-db-api.workspace = true +reth-prune-types.workspace = true +reth-stages-types.workspace = true + +[features] +optimism = ["reth-primitives/optimism"] \ No newline at end of file diff --git a/crates/optimism/storage/src/lib.rs b/crates/optimism/storage/src/lib.rs new file mode 100644 index 000000000000..cb80c6dd87d4 --- /dev/null +++ b/crates/optimism/storage/src/lib.rs @@ -0,0 +1,80 @@ +//! Standalone crate for Optimism-Storage Reth. + +#![doc( + html_logo_url = "https://raw.githubusercontent.com/paradigmxyz/reth/main/assets/reth-docs.png", + html_favicon_url = "https://avatars0.githubusercontent.com/u/97369466?s=256", + issue_tracker_base_url = "https://github.com/paradigmxyz/reth/issues/" +)] +#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))] +// The `optimism` feature must be enabled to use this crate. +#![cfg(feature = "optimism")] + +#[cfg(test)] +mod tests { + use reth_db_api::models::{ + CompactClientVersion, CompactU256, CompactU64, StoredBlockBodyIndices, StoredBlockOmmers, + StoredBlockWithdrawals, + }; + use reth_primitives::{Account, Receipt, ReceiptWithBloom, SealedHeader, Withdrawals}; + use reth_prune_types::{PruneCheckpoint, PruneMode, PruneSegment}; + use reth_stages_types::{ + AccountHashingCheckpoint, CheckpointBlockRange, EntitiesCheckpoint, ExecutionCheckpoint, + HeadersCheckpoint, IndexHistoryCheckpoint, StageCheckpoint, StageUnitCheckpoint, + StorageHashingCheckpoint, + }; + + #[test] + fn test_ensure_backwards_compatibility() { + assert_eq!(Account::bitflag_encoded_bytes(), 2); + assert_eq!(AccountHashingCheckpoint::bitflag_encoded_bytes(), 1); + assert_eq!(CheckpointBlockRange::bitflag_encoded_bytes(), 1); + assert_eq!(CompactClientVersion::bitflag_encoded_bytes(), 0); + assert_eq!(CompactU256::bitflag_encoded_bytes(), 1); + assert_eq!(CompactU64::bitflag_encoded_bytes(), 1); + assert_eq!(EntitiesCheckpoint::bitflag_encoded_bytes(), 1); + assert_eq!(ExecutionCheckpoint::bitflag_encoded_bytes(), 0); + assert_eq!(HeadersCheckpoint::bitflag_encoded_bytes(), 0); + assert_eq!(IndexHistoryCheckpoint::bitflag_encoded_bytes(), 0); + assert_eq!(PruneCheckpoint::bitflag_encoded_bytes(), 1); + assert_eq!(PruneMode::bitflag_encoded_bytes(), 1); + assert_eq!(PruneSegment::bitflag_encoded_bytes(), 1); + assert_eq!(Receipt::bitflag_encoded_bytes(), 2); + assert_eq!(ReceiptWithBloom::bitflag_encoded_bytes(), 0); + assert_eq!(SealedHeader::bitflag_encoded_bytes(), 0); + assert_eq!(StageCheckpoint::bitflag_encoded_bytes(), 1); + assert_eq!(StageUnitCheckpoint::bitflag_encoded_bytes(), 1); + assert_eq!(StoredBlockBodyIndices::bitflag_encoded_bytes(), 1); + assert_eq!(StoredBlockOmmers::bitflag_encoded_bytes(), 0); + assert_eq!(StoredBlockWithdrawals::bitflag_encoded_bytes(), 0); + assert_eq!(StorageHashingCheckpoint::bitflag_encoded_bytes(), 1); + assert_eq!(Withdrawals::bitflag_encoded_bytes(), 0); + + // In case of failure, refer to the documentation of the + // [`validate_bitflag_backwards_compat`] macro for detailed instructions on handling + // it. + validate_bitflag_backwards_compat!(Account, UnusedBits::NotZero); + validate_bitflag_backwards_compat!(AccountHashingCheckpoint, UnusedBits::NotZero); + validate_bitflag_backwards_compat!(CheckpointBlockRange, UnusedBits::Zero); + validate_bitflag_backwards_compat!(CompactClientVersion, UnusedBits::Zero); + validate_bitflag_backwards_compat!(CompactU256, UnusedBits::NotZero); + validate_bitflag_backwards_compat!(CompactU64, UnusedBits::NotZero); + validate_bitflag_backwards_compat!(EntitiesCheckpoint, UnusedBits::Zero); + validate_bitflag_backwards_compat!(ExecutionCheckpoint, UnusedBits::Zero); + validate_bitflag_backwards_compat!(HeadersCheckpoint, UnusedBits::Zero); + validate_bitflag_backwards_compat!(IndexHistoryCheckpoint, UnusedBits::Zero); + validate_bitflag_backwards_compat!(PruneCheckpoint, UnusedBits::NotZero); + validate_bitflag_backwards_compat!(PruneMode, UnusedBits::Zero); + validate_bitflag_backwards_compat!(PruneSegment, UnusedBits::Zero); + validate_bitflag_backwards_compat!(Receipt, UnusedBits::NotZero); + validate_bitflag_backwards_compat!(ReceiptWithBloom, UnusedBits::Zero); + validate_bitflag_backwards_compat!(SealedHeader, UnusedBits::Zero); + validate_bitflag_backwards_compat!(StageCheckpoint, UnusedBits::NotZero); + validate_bitflag_backwards_compat!(StageUnitCheckpoint, UnusedBits::Zero); + validate_bitflag_backwards_compat!(StoredBlockBodyIndices, UnusedBits::Zero); + validate_bitflag_backwards_compat!(StoredBlockOmmers, UnusedBits::Zero); + validate_bitflag_backwards_compat!(StoredBlockWithdrawals, UnusedBits::Zero); + validate_bitflag_backwards_compat!(StorageHashingCheckpoint, UnusedBits::NotZero); + validate_bitflag_backwards_compat!(Withdrawals, UnusedBits::Zero); + validate_bitflag_backwards_compat!(Requests, UnusedBits::Zero); + } +} diff --git a/crates/storage/db-api/src/models/mod.rs b/crates/storage/db-api/src/models/mod.rs index 942b9b27af6d..7cc224f62009 100644 --- a/crates/storage/db-api/src/models/mod.rs +++ b/crates/storage/db-api/src/models/mod.rs @@ -372,60 +372,4 @@ mod tests { validate_bitflag_backwards_compat!(Withdrawals, UnusedBits::Zero); validate_bitflag_backwards_compat!(Requests, UnusedBits::Zero); } - - #[cfg(feature = "optimism")] - #[test] - fn test_ensure_backwards_compatibility() { - assert_eq!(Account::bitflag_encoded_bytes(), 2); - assert_eq!(AccountHashingCheckpoint::bitflag_encoded_bytes(), 1); - assert_eq!(CheckpointBlockRange::bitflag_encoded_bytes(), 1); - assert_eq!(CompactClientVersion::bitflag_encoded_bytes(), 0); - assert_eq!(CompactU256::bitflag_encoded_bytes(), 1); - assert_eq!(CompactU64::bitflag_encoded_bytes(), 1); - assert_eq!(EntitiesCheckpoint::bitflag_encoded_bytes(), 1); - assert_eq!(ExecutionCheckpoint::bitflag_encoded_bytes(), 0); - assert_eq!(HeadersCheckpoint::bitflag_encoded_bytes(), 0); - assert_eq!(IndexHistoryCheckpoint::bitflag_encoded_bytes(), 0); - assert_eq!(PruneCheckpoint::bitflag_encoded_bytes(), 1); - assert_eq!(PruneMode::bitflag_encoded_bytes(), 1); - assert_eq!(PruneSegment::bitflag_encoded_bytes(), 1); - assert_eq!(Receipt::bitflag_encoded_bytes(), 2); - assert_eq!(ReceiptWithBloom::bitflag_encoded_bytes(), 0); - assert_eq!(SealedHeader::bitflag_encoded_bytes(), 0); - assert_eq!(StageCheckpoint::bitflag_encoded_bytes(), 1); - assert_eq!(StageUnitCheckpoint::bitflag_encoded_bytes(), 1); - assert_eq!(StoredBlockBodyIndices::bitflag_encoded_bytes(), 1); - assert_eq!(StoredBlockOmmers::bitflag_encoded_bytes(), 0); - assert_eq!(StoredBlockWithdrawals::bitflag_encoded_bytes(), 0); - assert_eq!(StorageHashingCheckpoint::bitflag_encoded_bytes(), 1); - assert_eq!(Withdrawals::bitflag_encoded_bytes(), 0); - - // In case of failure, refer to the documentation of the - // [`validate_bitflag_backwards_compat`] macro for detailed instructions on handling - // it. - validate_bitflag_backwards_compat!(Account, UnusedBits::NotZero); - validate_bitflag_backwards_compat!(AccountHashingCheckpoint, UnusedBits::NotZero); - validate_bitflag_backwards_compat!(CheckpointBlockRange, UnusedBits::Zero); - validate_bitflag_backwards_compat!(CompactClientVersion, UnusedBits::Zero); - validate_bitflag_backwards_compat!(CompactU256, UnusedBits::NotZero); - validate_bitflag_backwards_compat!(CompactU64, UnusedBits::NotZero); - validate_bitflag_backwards_compat!(EntitiesCheckpoint, UnusedBits::Zero); - validate_bitflag_backwards_compat!(ExecutionCheckpoint, UnusedBits::Zero); - validate_bitflag_backwards_compat!(HeadersCheckpoint, UnusedBits::Zero); - validate_bitflag_backwards_compat!(IndexHistoryCheckpoint, UnusedBits::Zero); - validate_bitflag_backwards_compat!(PruneCheckpoint, UnusedBits::NotZero); - validate_bitflag_backwards_compat!(PruneMode, UnusedBits::Zero); - validate_bitflag_backwards_compat!(PruneSegment, UnusedBits::Zero); - validate_bitflag_backwards_compat!(Receipt, UnusedBits::NotZero); - validate_bitflag_backwards_compat!(ReceiptWithBloom, UnusedBits::Zero); - validate_bitflag_backwards_compat!(SealedHeader, UnusedBits::Zero); - validate_bitflag_backwards_compat!(StageCheckpoint, UnusedBits::NotZero); - validate_bitflag_backwards_compat!(StageUnitCheckpoint, UnusedBits::Zero); - validate_bitflag_backwards_compat!(StoredBlockBodyIndices, UnusedBits::Zero); - validate_bitflag_backwards_compat!(StoredBlockOmmers, UnusedBits::Zero); - validate_bitflag_backwards_compat!(StoredBlockWithdrawals, UnusedBits::Zero); - validate_bitflag_backwards_compat!(StorageHashingCheckpoint, UnusedBits::NotZero); - validate_bitflag_backwards_compat!(Withdrawals, UnusedBits::Zero); - validate_bitflag_backwards_compat!(Requests, UnusedBits::Zero); - } }