Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Switch tests to release-profile from dev-profile #3180

Draft
wants to merge 3 commits into
base: staging
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ commands:
cache_key: << parameters.cache_key >>
- run:
no_output_timeout: 30m
command: cd << parameters.workspace_member >> && RUST_MIN_STACK=67108864 cargo test << parameters.flags >>
command: cd << parameters.workspace_member >> && RUST_MIN_STACK=67108864 cargo test --release << parameters.flags >>
- clear_environment:
cache_key: << parameters.cache_key >>

Expand All @@ -121,7 +121,7 @@ commands:
cache_key: << parameters.cache_key >>
- run:
no_output_timeout: 300m
command: cd << parameters.workspace_member >> && RUST_MIN_STACK=67108864 cargo test << parameters.flags >>
command: cd << parameters.workspace_member >> && RUST_MIN_STACK=67108864 cargo test --release << parameters.flags >>
- clear_environment:
cache_key: << parameters.cache_key >>

Expand Down
4 changes: 4 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions node/bft/events/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -72,3 +72,9 @@ version = "0.3"
[dev-dependencies.snarkos-node-sync-locators]
path = "../../sync/locators"
features = [ "test" ]

[dev-dependencies.tempfile]
version = "3.10.1"

[dev-dependencies.once_cell]
version = "1.18"
40 changes: 35 additions & 5 deletions node/bft/events/src/block_response.rs
Original file line number Diff line number Diff line change
Expand Up @@ -136,22 +136,52 @@ impl<N: Network> FromBytes for DataBlocks<N> {
#[cfg(test)]
pub mod prop_tests {
use crate::{block_request::prop_tests::any_block_request, BlockResponse, DataBlocks};
use snarkvm::{
ledger::ledger_test_helpers::sample_genesis_block,
prelude::{block::Block, narwhal::Data, FromBytes, TestRng, ToBytes},
};
use anyhow::Context;
use snarkvm::prelude::{block::Block, narwhal::Data, FromBytes, TestRng, ToBytes};
use std::{env, fs::DirBuilder};

use bytes::{Buf, BufMut, BytesMut};
use once_cell::sync::OnceCell;
use proptest::{
collection::vec,
prelude::{any, BoxedStrategy, Strategy},
};
use snarkvm::{
ledger::store::{helpers::memory::ConsensusMemory, ConsensusStore},
prelude::{PrivateKey, VM},
};
use tempfile::tempdir_in;
use test_strategy::proptest;

type CurrentNetwork = snarkvm::prelude::MainnetV0;

fn sample_genesis_block(rng: &mut TestRng) -> Block<CurrentNetwork> {
// TODO refactor me to a single location in codebase
static INSTANCE: OnceCell<Block<CurrentNetwork>> = OnceCell::new();
INSTANCE
.get_or_init(|| {
// Sample the genesis private key.
let private_key = PrivateKey::<CurrentNetwork>::new(rng).unwrap();

// Initialize the store in temp dir inside aleo-test specific tmp dir.
let aleo_tmp_dir = env::temp_dir().join("aleo_tmp_SAFE_TO_DELETE/");
if aleo_tmp_dir.exists() {
std::fs::remove_dir_all(aleo_tmp_dir.clone())
.with_context(|| format!("Cannot remove {aleo_tmp_dir:?}"))
.unwrap();
};
DirBuilder::new().recursive(true).create(aleo_tmp_dir.clone()).unwrap();
let temp_dir = tempdir_in(aleo_tmp_dir).unwrap();
let store = ConsensusStore::<_, ConsensusMemory<_>>::open(temp_dir.into_path()).unwrap();

// Create a genesis block.
VM::from(store).unwrap().genesis_beacon(&private_key, rng).unwrap()
})
.clone()
}

pub fn any_block() -> BoxedStrategy<Block<CurrentNetwork>> {
any::<u64>().prop_map(|seed| sample_genesis_block(&mut TestRng::fixed(seed))).boxed()
any::<u64>().prop_map(|seed| sample_genesis_block(&mut TestRng::from_seed(seed))).boxed()
}

pub fn any_data_blocks() -> BoxedStrategy<DataBlocks<CurrentNetwork>> {
Expand Down
6 changes: 6 additions & 0 deletions node/router/messages/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -79,3 +79,9 @@ version = "1.4.0"

[dev-dependencies.test-strategy]
version = "0.3.1"

[dev-dependencies.tempfile]
version = "3.10.1"

[dev-dependencies.once_cell]
version = "1.18"
36 changes: 34 additions & 2 deletions node/router/messages/src/block_response.rs
Original file line number Diff line number Diff line change
Expand Up @@ -61,23 +61,55 @@ impl<N: Network> FromBytes for BlockResponse<N> {
#[cfg(test)]
pub mod prop_tests {
use crate::{block_request::prop_tests::any_block_request, BlockResponse, DataBlocks};
use anyhow::Context;
use snarkvm::{
ledger::ledger_test_helpers::sample_genesis_block,
prelude::{block::Block, narwhal::Data},
utilities::{FromBytes, TestRng, ToBytes},
};
use std::{env, fs::DirBuilder};

use bytes::{Buf, BufMut, BytesMut};
use once_cell::sync::OnceCell;
use proptest::{
collection::vec,
prelude::{any, BoxedStrategy, Strategy},
};
use snarkvm::{
ledger::store::{helpers::memory::ConsensusMemory, ConsensusStore},
prelude::{PrivateKey, VM},
};
use tempfile::tempdir_in;
use test_strategy::proptest;

type CurrentNetwork = snarkvm::prelude::MainnetV0;

pub fn sample_genesis_block(rng: &mut TestRng) -> Block<CurrentNetwork> {
// TODO refactor me to a single location in codebase
static INSTANCE: OnceCell<Block<CurrentNetwork>> = OnceCell::new();
INSTANCE
.get_or_init(|| {
// Sample the genesis private key.
let private_key = PrivateKey::<CurrentNetwork>::new(rng).unwrap();

// Initialize the store in temp dir inside aleo-test specific tmp dir.
let aleo_tmp_dir = env::temp_dir().join("aleo_tmp_SAFE_TO_DELETE/");
if aleo_tmp_dir.exists() {
std::fs::remove_dir_all(aleo_tmp_dir.clone())
.with_context(|| format!("Cannot remove {aleo_tmp_dir:?}"))
.unwrap();
};
DirBuilder::new().recursive(true).create(aleo_tmp_dir.clone()).unwrap();
let temp_dir = tempdir_in(aleo_tmp_dir).unwrap();
let store = ConsensusStore::<_, ConsensusMemory<_>>::open(temp_dir.into_path()).unwrap();

// Create a genesis block.
VM::from(store).unwrap().genesis_beacon(&private_key, rng).unwrap()
})
.clone()
}

pub fn any_block() -> BoxedStrategy<Block<CurrentNetwork>> {
any::<u64>().prop_map(|seed| sample_genesis_block(&mut TestRng::fixed(seed))).boxed()
any::<u64>().prop_map(|seed| sample_genesis_block(&mut TestRng::from_seed(seed))).boxed()
}

pub fn any_data_blocks() -> BoxedStrategy<DataBlocks<CurrentNetwork>> {
Expand Down
11 changes: 6 additions & 5 deletions node/router/messages/src/challenge_response.rs
Original file line number Diff line number Diff line change
Expand Up @@ -59,21 +59,22 @@ pub mod prop_tests {
use crate::ChallengeResponse;
use snarkvm::{
console::prelude::{FromBytes, ToBytes},
ledger::{ledger_test_helpers::sample_genesis_block, narwhal::Data},
ledger::narwhal::Data,
prelude::{block::Header, PrivateKey, Signature},
utilities::rand::{TestRng, Uniform},
};

use crate::block_response::prop_tests;
use bytes::{Buf, BufMut, BytesMut};
use proptest::prelude::{any, BoxedStrategy, Strategy};
use test_strategy::proptest;

type CurrentNetwork = snarkvm::prelude::MainnetV0;

pub fn any_signature() -> BoxedStrategy<Signature<CurrentNetwork>> {
(0..64)
.prop_map(|message_size| {
let rng = &mut TestRng::default();
(any::<u64>(), 0..64)
.prop_map(|(seed, message_size)| {
let rng = &mut TestRng::from_seed(seed);
let message: Vec<_> = (0..message_size).map(|_| Uniform::rand(rng)).collect();
let private_key = PrivateKey::new(rng).unwrap();
Signature::sign(&private_key, &message, rng).unwrap()
Expand All @@ -82,7 +83,7 @@ pub mod prop_tests {
}

pub fn any_genesis_header() -> BoxedStrategy<Header<CurrentNetwork>> {
any::<u64>().prop_map(|seed| *sample_genesis_block(&mut TestRng::fixed(seed)).header()).boxed()
any::<u64>().prop_map(|seed| *prop_tests::sample_genesis_block(&mut TestRng::from_seed(seed)).header()).boxed()
}

pub fn any_challenge_response() -> BoxedStrategy<ChallengeResponse<CurrentNetwork>> {
Expand Down
20 changes: 13 additions & 7 deletions node/router/messages/src/unconfirmed_transaction.rs
Original file line number Diff line number Diff line change
Expand Up @@ -60,21 +60,27 @@ impl<N: Network> FromBytes for UnconfirmedTransaction<N> {
pub mod prop_tests {
use crate::{Transaction, UnconfirmedTransaction};
use snarkvm::{
ledger::{ledger_test_helpers::sample_fee_public_transaction, narwhal::Data},
prelude::{FromBytes, TestRng, ToBytes},
ledger::narwhal::Data,
prelude::{FromBytes, ToBytes},
};

use crate::block_response::prop_tests::any_block;
use bytes::{Buf, BufMut, BytesMut};
use proptest::prelude::{any, BoxedStrategy, Strategy};
use proptest::{
prelude::{any, BoxedStrategy, Strategy},
sample::Selector,
};

use test_strategy::proptest;

type CurrentNetwork = snarkvm::prelude::MainnetV0;

pub fn any_transaction() -> BoxedStrategy<Transaction<CurrentNetwork>> {
any::<u64>()
.prop_map(|seed| {
let mut rng = TestRng::fixed(seed);
sample_fee_public_transaction(&mut rng)
(any_block(), any::<Selector>())
.prop_map(|(block, selector)| {
let tx: Transaction<CurrentNetwork> =
selector.select(block.transactions().clone().into_iter().map(|tx| tx.into_transaction()));
tx
})
.boxed()
}
Expand Down