-
Notifications
You must be signed in to change notification settings - Fork 116
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
change(tests): Remove Matches on Network From Tests (#8295)
* added functions for fetching block vectors * inserted new network methods for vector fetching into zebra-chain * changed tag back to test/feature=branch * changed tag back to test/feature=branch * changed tag back to test/feature=branch * changed feature tag to proptest-impl, started implementing in zebra-consensus tests * adding methods to zebra-consensus, lifetime error in src/transaction/tests.rs, needs refactoring * finished adding methods to zebra-consensus * finished adding new methods to zebrad * added new methods to zebra-rpc and zebra-scan * finished removing statements matching on Network from tests * updated new error message * changed get_block_bytes() and get_block_sapling_roots_bytes to return option and removed serialization error types as per requested changes in PR review * removed match statements from zebra_chain::transaction::arbitrary::test_transactions() and new zebra-grpc tests * moved zebra-chain::test_utils to zebra-chain::test * removed get_ prefix from getter methods * renamed zebra-chain::test to zebra-chain::tests * renamed zebra-chain::test to zebra-chain::tests * fixed clippy warnings * changed block_map to return clone
- Loading branch information
Showing
28 changed files
with
268 additions
and
302 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
//!Chain functionality for fetching test vectors. | ||
//! | ||
mod vectors; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,154 @@ | ||
//! Network methods for fetching blockchain vectors. | ||
//! | ||
use std::collections::BTreeMap; | ||
|
||
use crate::{block::Block, parameters::Network, serialization::ZcashDeserializeInto}; | ||
|
||
use zebra_test::vectors::{ | ||
BLOCK_MAINNET_1046400_BYTES, BLOCK_MAINNET_653599_BYTES, BLOCK_MAINNET_982681_BYTES, | ||
BLOCK_TESTNET_1116000_BYTES, BLOCK_TESTNET_583999_BYTES, BLOCK_TESTNET_925483_BYTES, | ||
CONTINUOUS_MAINNET_BLOCKS, CONTINUOUS_TESTNET_BLOCKS, MAINNET_BLOCKS, | ||
MAINNET_FINAL_SAPLING_ROOTS, MAINNET_FINAL_SPROUT_ROOTS, | ||
SAPLING_FINAL_ROOT_MAINNET_1046400_BYTES, SAPLING_FINAL_ROOT_TESTNET_1116000_BYTES, | ||
TESTNET_BLOCKS, TESTNET_FINAL_SAPLING_ROOTS, TESTNET_FINAL_SPROUT_ROOTS, | ||
}; | ||
|
||
/// Network methods for fetching blockchain vectors. | ||
impl Network { | ||
/// Returns true if network is of type Mainnet. | ||
pub fn is_mainnet(&self) -> bool { | ||
matches!(self, Network::Mainnet) | ||
} | ||
|
||
/// Returns iterator over blocks. | ||
pub fn block_iter(&self) -> std::collections::btree_map::Iter<'static, u32, &'static [u8]> { | ||
if self.is_mainnet() { | ||
MAINNET_BLOCKS.iter() | ||
} else { | ||
TESTNET_BLOCKS.iter() | ||
} | ||
} | ||
|
||
/// | ||
pub fn block_map(&self) -> BTreeMap<u32, &'static [u8]> { | ||
if self.is_mainnet() { | ||
zebra_test::vectors::MAINNET_BLOCKS.clone() | ||
} else { | ||
zebra_test::vectors::TESTNET_BLOCKS.clone() | ||
} | ||
} | ||
|
||
/// Returns genesis block for chain. | ||
pub fn gen_block(&self) -> std::option::Option<&&[u8]> { | ||
if self.is_mainnet() { | ||
MAINNET_BLOCKS.get(&0) | ||
} else { | ||
TESTNET_BLOCKS.get(&0) | ||
} | ||
} | ||
|
||
/// Returns block bytes | ||
pub fn test_block(&self, main_height: u32, test_height: u32) -> Option<Block> { | ||
match (self.is_mainnet(), main_height, test_height) { | ||
(true, 653_599, _) => BLOCK_MAINNET_653599_BYTES.zcash_deserialize_into().ok(), | ||
(true, 982_681, _) => BLOCK_MAINNET_982681_BYTES.zcash_deserialize_into().ok(), | ||
(false, _, 583_999) => BLOCK_TESTNET_583999_BYTES.zcash_deserialize_into().ok(), | ||
(false, _, 925_483) => BLOCK_TESTNET_925483_BYTES.zcash_deserialize_into().ok(), | ||
_ => None, | ||
} | ||
} | ||
|
||
/// Returns iterator over blockchain. | ||
pub fn blockchain_iter(&self) -> std::collections::btree_map::Iter<'_, u32, &[u8]> { | ||
if self.is_mainnet() { | ||
CONTINUOUS_MAINNET_BLOCKS.iter() | ||
} else { | ||
CONTINUOUS_TESTNET_BLOCKS.iter() | ||
} | ||
} | ||
|
||
/// Returns BTreemap of blockchain. | ||
pub fn blockchain_map(&self) -> &BTreeMap<u32, &'static [u8]> { | ||
if self.is_mainnet() { | ||
&CONTINUOUS_MAINNET_BLOCKS | ||
} else { | ||
&CONTINUOUS_TESTNET_BLOCKS | ||
} | ||
} | ||
|
||
/// Returns iterator over blocks and sapling roots. | ||
pub fn block_sapling_roots_iter( | ||
&self, | ||
) -> ( | ||
std::collections::btree_map::Iter<'_, u32, &[u8]>, | ||
std::collections::BTreeMap<u32, &[u8; 32]>, | ||
) { | ||
if self.is_mainnet() { | ||
(MAINNET_BLOCKS.iter(), MAINNET_FINAL_SAPLING_ROOTS.clone()) | ||
} else { | ||
(TESTNET_BLOCKS.iter(), TESTNET_FINAL_SAPLING_ROOTS.clone()) | ||
} | ||
} | ||
|
||
/// Returns BTreemap of blocks and sapling roots. | ||
pub fn block_sapling_roots_map( | ||
&self, | ||
) -> ( | ||
&std::collections::BTreeMap<u32, &'static [u8]>, | ||
&std::collections::BTreeMap<u32, &'static [u8; 32]>, | ||
) { | ||
if self.is_mainnet() { | ||
(&*MAINNET_BLOCKS, &*MAINNET_FINAL_SAPLING_ROOTS) | ||
} else { | ||
(&*TESTNET_BLOCKS, &*TESTNET_FINAL_SAPLING_ROOTS) | ||
} | ||
} | ||
|
||
/// Returns block and sapling root bytes | ||
pub fn test_block_sapling_roots( | ||
&self, | ||
main_height: u32, | ||
test_height: u32, | ||
) -> Option<(&[u8], [u8; 32])> { | ||
match (self.is_mainnet(), main_height, test_height) { | ||
(true, 1_046_400, _) => Some(( | ||
&BLOCK_MAINNET_1046400_BYTES[..], | ||
*SAPLING_FINAL_ROOT_MAINNET_1046400_BYTES, | ||
)), | ||
(false, _, 1_116_000) => Some(( | ||
&BLOCK_TESTNET_1116000_BYTES[..], | ||
*SAPLING_FINAL_ROOT_TESTNET_1116000_BYTES, | ||
)), | ||
_ => None, | ||
} | ||
} | ||
|
||
/// Returns BTreemap of blocks and sprout roots, and last split height. | ||
pub fn block_sprout_roots_height( | ||
&self, | ||
) -> ( | ||
&std::collections::BTreeMap<u32, &'static [u8]>, | ||
&std::collections::BTreeMap<u32, &'static [u8; 32]>, | ||
u32, | ||
) { | ||
// The mainnet block height at which the first JoinSplit occurred. | ||
const MAINNET_FIRST_JOINSPLIT_HEIGHT: u32 = 396; | ||
|
||
// The testnet block height at which the first JoinSplit occurred. | ||
const TESTNET_FIRST_JOINSPLIT_HEIGHT: u32 = 2259; | ||
if self.is_mainnet() { | ||
( | ||
&*MAINNET_BLOCKS, | ||
&*MAINNET_FINAL_SPROUT_ROOTS, | ||
MAINNET_FIRST_JOINSPLIT_HEIGHT, | ||
) | ||
} else { | ||
( | ||
&*TESTNET_BLOCKS, | ||
&*TESTNET_FINAL_SPROUT_ROOTS, | ||
TESTNET_FIRST_JOINSPLIT_HEIGHT, | ||
) | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.