mirror of
https://github.com/hl-archive-node/nanoreth.git
synced 2025-12-06 10:59:55 +00:00
feat: allow generic values in tables! macro (#12400)
This commit is contained in:
@ -10,6 +10,7 @@ use proptest_arbitrary_interop::arb;
|
||||
use reth_db::tables;
|
||||
use reth_db_api::table::{DupSort, Table, TableRow};
|
||||
use reth_fs_util as fs;
|
||||
use reth_primitives::{Header, TransactionSignedNoHash};
|
||||
use std::collections::HashSet;
|
||||
use tracing::error;
|
||||
|
||||
@ -31,16 +32,16 @@ pub fn generate_vectors(mut tables: Vec<String>) -> Result<()> {
|
||||
fs::create_dir_all(VECTORS_FOLDER)?;
|
||||
|
||||
macro_rules! generate_vector {
|
||||
($table_type:ident, $per_table:expr, TABLE) => {
|
||||
generate_table_vector::<tables::$table_type>(&mut runner, $per_table)?;
|
||||
($table_type:ident$(<$($generic:ident),+>)?, $per_table:expr, TABLE) => {
|
||||
generate_table_vector::<tables::$table_type$(<$($generic),+>)?>(&mut runner, $per_table)?;
|
||||
};
|
||||
($table_type:ident, $per_table:expr, DUPSORT) => {
|
||||
generate_dupsort_vector::<tables::$table_type>(&mut runner, $per_table)?;
|
||||
($table_type:ident$(<$($generic:ident),+>)?, $per_table:expr, DUPSORT) => {
|
||||
generate_dupsort_vector::<tables::$table_type$(<$($generic),+>)?>(&mut runner, $per_table)?;
|
||||
};
|
||||
}
|
||||
|
||||
macro_rules! generate {
|
||||
([$(($table_type:ident, $per_table:expr, $table_or_dup:tt)),*]) => {
|
||||
([$(($table_type:ident$(<$($generic:ident),+>)?, $per_table:expr, $table_or_dup:tt)),*]) => {
|
||||
let all_tables = vec![$(stringify!($table_type).to_string(),)*];
|
||||
|
||||
if tables.is_empty() {
|
||||
@ -50,10 +51,10 @@ pub fn generate_vectors(mut tables: Vec<String>) -> Result<()> {
|
||||
for table in tables {
|
||||
match table.as_str() {
|
||||
$(
|
||||
stringify!($table_type) => {
|
||||
println!("Generating test vectors for {} <{}>.", stringify!($table_or_dup), tables::$table_type::NAME);
|
||||
stringify!($table_type$(<$($generic),+>)?) => {
|
||||
println!("Generating test vectors for {} <{}>.", stringify!($table_or_dup), tables::$table_type$(::<$($generic),+>)?::NAME);
|
||||
|
||||
generate_vector!($table_type, $per_table, $table_or_dup);
|
||||
generate_vector!($table_type$(<$($generic),+>)?, $per_table, $table_or_dup);
|
||||
},
|
||||
)*
|
||||
_ => {
|
||||
@ -68,11 +69,11 @@ pub fn generate_vectors(mut tables: Vec<String>) -> Result<()> {
|
||||
(CanonicalHeaders, PER_TABLE, TABLE),
|
||||
(HeaderTerminalDifficulties, PER_TABLE, TABLE),
|
||||
(HeaderNumbers, PER_TABLE, TABLE),
|
||||
(Headers, PER_TABLE, TABLE),
|
||||
(Headers<Header>, PER_TABLE, TABLE),
|
||||
(BlockBodyIndices, PER_TABLE, TABLE),
|
||||
(BlockOmmers, 100, TABLE),
|
||||
(TransactionHashNumbers, PER_TABLE, TABLE),
|
||||
(Transactions, 100, TABLE),
|
||||
(Transactions<TransactionSignedNoHash>, 100, TABLE),
|
||||
(PlainStorageState, PER_TABLE, DUPSORT),
|
||||
(PlainAccountState, PER_TABLE, TABLE)
|
||||
]);
|
||||
|
||||
Reference in New Issue
Block a user