Skip to content

Commit 559d20f

Browse files
committed
tests: add a simple DB test
1 parent a8ad5f0 commit 559d20f

File tree

4 files changed

+77
-12
lines changed

4 files changed

+77
-12
lines changed

crates/db/Cargo.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,4 +33,5 @@ auto_impl = "1.3.0"
3333
[dev-dependencies]
3434
serde_json.workspace = true
3535
reth-db = { workspace = true, features = ["test-utils"] }
36-
reth-exex-test-utils.workspace = true
36+
reth-exex-test-utils.workspace = true
37+
signet-constants = { workspace = true, features = ["test-utils"] }

crates/db/src/provider.rs

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,14 @@ use alloy::{
88
primitives::{Address, B256, BlockNumber, U256, map::HashSet},
99
};
1010
use reth::{
11-
primitives::{Account, StaticFileSegment},
11+
primitives::StaticFileSegment,
1212
providers::{
13-
AccountReader, BlockBodyIndicesProvider, BlockNumReader, BlockReader, BlockWriter, Chain,
14-
DBProvider, HistoryWriter, OriginalValuesKnown, ProviderError, ProviderResult,
15-
StageCheckpointWriter, StateWriter, StaticFileProviderFactory, StaticFileWriter,
16-
StorageLocation,
13+
BlockBodyIndicesProvider, BlockNumReader, BlockReader, BlockWriter, Chain, DBProvider,
14+
HistoryWriter, OriginalValuesKnown, ProviderError, ProviderResult, StageCheckpointWriter,
15+
StateWriter, StaticFileProviderFactory, StaticFileWriter, StorageLocation,
1716
},
1817
};
1918
use reth_db::{
20-
PlainAccountState,
2119
cursor::{DbCursorRO, DbCursorRW},
2220
models::{BlockNumberAddress, StoredBlockBodyIndices},
2321
tables,

crates/db/src/traits.rs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
11
use crate::{DbExtractionResults, DbSignetEvent, RuChain, SignetDbRw};
2-
use alloy::primitives::{Address, B256, BlockNumber, U256};
2+
use alloy::primitives::{B256, BlockNumber};
33
use itertools::Itertools;
4-
use reth::{
5-
primitives::Account,
6-
providers::{OriginalValuesKnown, ProviderResult, StorageLocation},
7-
};
4+
use reth::providers::{OriginalValuesKnown, ProviderResult, StorageLocation};
85
use reth_db::models::StoredBlockBodyIndices;
96
use signet_evm::BlockResult;
107
use signet_node_types::NodeTypesDbTrait;

crates/db/tests/db.rs

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,16 @@
11
#[path = "./common/mod.rs"]
22
mod test_common;
33

4+
use alloy::{
5+
consensus::{BlockBody, BlockHeader, Signed, TxEip1559, TxEnvelope},
6+
primitives::{Address, B256, U256},
7+
signers::Signature,
8+
};
9+
use reth::providers::{BlockNumReader, BlockReader};
10+
use signet_constants::test_utils::{DEPLOY_HEIGHT, RU_CHAIN_ID};
411
use signet_db::RuWriter;
12+
use signet_types::primitives::{RecoveredBlock, SealedBlock, SealedHeader};
13+
use signet_zenith::Zenith;
514

615
#[test]
716
fn test_ru_writer() {
@@ -11,3 +20,63 @@ fn test_ru_writer() {
1120

1221
dbg!(writer.last_block_number().unwrap());
1322
}
23+
24+
#[test]
25+
fn test_insert_signet_block() {
26+
let factory = test_common::create_test_provider_factory();
27+
let writer = factory.provider_rw().unwrap();
28+
29+
let journal_hash = B256::repeat_byte(0x55);
30+
let header = Some(Zenith::BlockHeader {
31+
rollupChainId: U256::from(RU_CHAIN_ID),
32+
hostBlockNumber: U256::from(DEPLOY_HEIGHT),
33+
gasLimit: U256::from(30_000_000),
34+
rewardAddress: Address::repeat_byte(0x11),
35+
blockDataHash: B256::repeat_byte(0x22),
36+
});
37+
38+
let block = RecoveredBlock {
39+
block: SealedBlock {
40+
header: SealedHeader::new(alloy::consensus::Header::default()),
41+
body: BlockBody {
42+
transactions: std::iter::repeat(
43+
TxEnvelope::Eip1559(Signed::new_unhashed(
44+
TxEip1559::default(),
45+
Signature::test_signature(),
46+
))
47+
.into(),
48+
)
49+
.take(10)
50+
.collect(),
51+
ommers: vec![],
52+
withdrawals: None,
53+
},
54+
},
55+
senders: std::iter::repeat(Address::repeat_byte(0x33)).take(10).collect(),
56+
};
57+
58+
writer
59+
.insert_signet_block(header, &block, journal_hash, reth::providers::StorageLocation::Both)
60+
.unwrap();
61+
62+
// Check basic updates
63+
assert_eq!(writer.last_block_number().unwrap(), block.number());
64+
assert_eq!(writer.latest_journal_hash().unwrap(), journal_hash);
65+
assert_eq!(writer.get_journal_hash(block.number()).unwrap(), Some(journal_hash));
66+
// This tests resolving `BlockId::Latest`
67+
assert_eq!(writer.best_block_number().unwrap(), block.number());
68+
69+
// Check that the block can be loaded back
70+
let loaded_block = writer
71+
.recovered_block_range(block.number()..=block.number())
72+
.unwrap()
73+
.first()
74+
.cloned()
75+
.unwrap();
76+
assert_eq!(loaded_block.header(), block.block.header.header());
77+
assert_eq!(loaded_block.body().transactions.len(), block.block.body.transactions.len());
78+
79+
// Check that the ZenithHeader can be loaded back
80+
let loaded_header = writer.get_signet_header(block.number()).unwrap();
81+
assert_eq!(loaded_header, header);
82+
}

0 commit comments

Comments
 (0)