testing: add a fake_crypto
feature
This commit is contained in:
parent
300fcd6ec3
commit
71a0fed8eb
@ -30,3 +30,6 @@ tree_hash = { path = "../utils/tree_hash" }
|
|||||||
tree_hash_derive = { path = "../utils/tree_hash_derive" }
|
tree_hash_derive = { path = "../utils/tree_hash_derive" }
|
||||||
types = { path = "../types" }
|
types = { path = "../types" }
|
||||||
rayon = "1.0"
|
rayon = "1.0"
|
||||||
|
|
||||||
|
[features]
|
||||||
|
fake_crypto = ["bls/fake_crypto"]
|
||||||
|
1
eth2/state_processing/build.rs
Symbolic link
1
eth2/state_processing/build.rs
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../utils/bls/build.rs
|
@ -47,31 +47,28 @@ fn run_state_transition_test(test_name: &str) {
|
|||||||
// Run Tests
|
// Run Tests
|
||||||
let mut ok = true;
|
let mut ok = true;
|
||||||
for (i, test_case) in doc.test_cases.iter().enumerate() {
|
for (i, test_case) in doc.test_cases.iter().enumerate() {
|
||||||
|
let fake_crypto = cfg!(feature = "fake_crypto");
|
||||||
|
if !test_case.verify_signatures == fake_crypto {
|
||||||
|
println!("Running {}", test_case.name);
|
||||||
|
} else {
|
||||||
|
println!(
|
||||||
|
"Skipping {} (fake_crypto: {}, need fake: {})",
|
||||||
|
test_case.name, fake_crypto, !test_case.verify_signatures
|
||||||
|
);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
let mut state = test_case.initial_state.clone();
|
let mut state = test_case.initial_state.clone();
|
||||||
for (j, block) in test_case.blocks.iter().enumerate() {
|
for (j, block) in test_case.blocks.iter().enumerate() {
|
||||||
while block.slot > state.slot {
|
while block.slot > state.slot {
|
||||||
let latest_block_header = state.latest_block_header.clone();
|
let latest_block_header = state.latest_block_header.clone();
|
||||||
per_slot_processing(&mut state, &latest_block_header, &test_case.config).unwrap();
|
per_slot_processing(&mut state, &latest_block_header, &test_case.config).unwrap();
|
||||||
}
|
}
|
||||||
if test_case.verify_signatures {
|
let res = per_block_processing(&mut state, &block, &test_case.config);
|
||||||
let res = per_block_processing(&mut state, &block, &test_case.config);
|
if res.is_err() {
|
||||||
if res.is_err() {
|
println!("Error in {} (#{}), on block {}", test_case.name, i, j);
|
||||||
println!("Error in {} (#{}), on block {}", test_case.name, i, j);
|
println!("{:?}", res);
|
||||||
println!("{:?}", res);
|
ok = false;
|
||||||
ok = false;
|
};
|
||||||
};
|
|
||||||
} else {
|
|
||||||
let res = per_block_processing_without_verifying_block_signature(
|
|
||||||
&mut state,
|
|
||||||
&block,
|
|
||||||
&test_case.config,
|
|
||||||
);
|
|
||||||
if res.is_err() {
|
|
||||||
println!("Error in {} (#{}), on block {}", test_case.name, i, j);
|
|
||||||
println!("{:?}", res);
|
|
||||||
ok = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -13,3 +13,6 @@ serde_derive = "1.0"
|
|||||||
serde_hex = { path = "../serde_hex" }
|
serde_hex = { path = "../serde_hex" }
|
||||||
ssz = { path = "../ssz" }
|
ssz = { path = "../ssz" }
|
||||||
tree_hash = { path = "../tree_hash" }
|
tree_hash = { path = "../tree_hash" }
|
||||||
|
|
||||||
|
[features]
|
||||||
|
fake_crypto = []
|
||||||
|
19
eth2/utils/bls/build.rs
Normal file
19
eth2/utils/bls/build.rs
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
// This build script is symlinked from each project that requires BLS's "fake crypto",
|
||||||
|
// so that the `fake_crypto` feature of every sub-crate can be turned on by running
|
||||||
|
// with FAKE_CRYPTO=1 from the top-level workspace.
|
||||||
|
// At some point in the future it might be possible to do:
|
||||||
|
// $ cargo test --all --release --features fake_crypto
|
||||||
|
// but at the present time this doesn't work.
|
||||||
|
// Related: https://github.com/rust-lang/cargo/issues/5364
|
||||||
|
fn main() {
|
||||||
|
if let Ok(fake_crypto) = std::env::var("FAKE_CRYPTO") {
|
||||||
|
if fake_crypto == "1" {
|
||||||
|
println!("cargo:rustc-cfg=feature=\"fake_crypto\"");
|
||||||
|
println!("cargo:rerun-if-env-changed=FAKE_CRYPTO");
|
||||||
|
println!(
|
||||||
|
"cargo:warning=[{}]: Compiled with fake BLS cryptography. DO NOT USE, TESTING ONLY",
|
||||||
|
std::env::var("CARGO_PKG_NAME").unwrap()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -6,22 +6,22 @@ mod keypair;
|
|||||||
mod public_key;
|
mod public_key;
|
||||||
mod secret_key;
|
mod secret_key;
|
||||||
|
|
||||||
#[cfg(not(debug_assertions))]
|
#[cfg(not(feature = "fake_crypto"))]
|
||||||
mod aggregate_signature;
|
mod aggregate_signature;
|
||||||
#[cfg(not(debug_assertions))]
|
#[cfg(not(feature = "fake_crypto"))]
|
||||||
mod signature;
|
mod signature;
|
||||||
#[cfg(not(debug_assertions))]
|
#[cfg(not(feature = "fake_crypto"))]
|
||||||
pub use crate::aggregate_signature::AggregateSignature;
|
pub use crate::aggregate_signature::AggregateSignature;
|
||||||
#[cfg(not(debug_assertions))]
|
#[cfg(not(feature = "fake_crypto"))]
|
||||||
pub use crate::signature::Signature;
|
pub use crate::signature::Signature;
|
||||||
|
|
||||||
#[cfg(debug_assertions)]
|
#[cfg(feature = "fake_crypto")]
|
||||||
mod fake_aggregate_signature;
|
mod fake_aggregate_signature;
|
||||||
#[cfg(debug_assertions)]
|
#[cfg(feature = "fake_crypto")]
|
||||||
mod fake_signature;
|
mod fake_signature;
|
||||||
#[cfg(debug_assertions)]
|
#[cfg(feature = "fake_crypto")]
|
||||||
pub use crate::fake_aggregate_signature::FakeAggregateSignature as AggregateSignature;
|
pub use crate::fake_aggregate_signature::FakeAggregateSignature as AggregateSignature;
|
||||||
#[cfg(debug_assertions)]
|
#[cfg(feature = "fake_crypto")]
|
||||||
pub use crate::fake_signature::FakeSignature as Signature;
|
pub use crate::fake_signature::FakeSignature as Signature;
|
||||||
|
|
||||||
pub use crate::aggregate_public_key::AggregatePublicKey;
|
pub use crate::aggregate_public_key::AggregatePublicKey;
|
||||||
|
Loading…
Reference in New Issue
Block a user