From 300fcd6ec3587ab6377acc210693c2f31bc94395 Mon Sep 17 00:00:00 2001 From: Michael Sproul Date: Tue, 2 Apr 2019 14:17:41 +1100 Subject: [PATCH] state transition test progress --- eth2/state_processing/tests/tests.rs | 74 +++++++++------------ eth2/state_processing/yaml_utils/Cargo.toml | 1 - eth2/state_processing/yaml_utils/build.rs | 1 - 3 files changed, 32 insertions(+), 44 deletions(-) diff --git a/eth2/state_processing/tests/tests.rs b/eth2/state_processing/tests/tests.rs index 1359508dcd..03401b2c72 100644 --- a/eth2/state_processing/tests/tests.rs +++ b/eth2/state_processing/tests/tests.rs @@ -27,61 +27,28 @@ pub struct TestDoc { pub test_cases: Vec, } -#[test] -fn test_read_yaml() { - // Test sanity-check_small-config_32-vals.yaml +fn load_test_case(test_name: &str) -> TestDoc { let mut file = { let mut file_path_buf = PathBuf::from(env!("CARGO_MANIFEST_DIR")); - file_path_buf.push("yaml_utils/specs/sanity-check_small-config_32-vals.yaml"); + file_path_buf.push(format!("yaml_utils/specs/{}", test_name)); File::open(file_path_buf).unwrap() }; - let mut yaml_str = String::new(); - file.read_to_string(&mut yaml_str).unwrap(); - yaml_str = yaml_str.to_lowercase(); - let _doc: TestDoc = serde_yaml::from_str(&yaml_str.as_str()).unwrap(); - - // Test sanity-check_default-config_100-vals.yaml - file = { - let mut file_path_buf = PathBuf::from(env!("CARGO_MANIFEST_DIR")); - file_path_buf.push("yaml_utils/specs/sanity-check_default-config_100-vals.yaml"); - - File::open(file_path_buf).unwrap() - }; - - yaml_str = String::new(); - - file.read_to_string(&mut yaml_str).unwrap(); - - yaml_str = yaml_str.to_lowercase(); - - let _doc: TestDoc = serde_yaml::from_str(&yaml_str.as_str()).unwrap(); + serde_yaml::from_str(&yaml_str.as_str()).unwrap() } -#[test] -#[cfg(not(debug_assertions))] -fn run_state_transition_tests_small() { - // Test sanity-check_small-config_32-vals.yaml - let mut file = { - let mut file_path_buf = PathBuf::from(env!("CARGO_MANIFEST_DIR")); - file_path_buf.push("yaml_utils/specs/sanity-check_small-config_32-vals.yaml"); - - File::open(file_path_buf).unwrap() - }; - let mut yaml_str = String::new(); - file.read_to_string(&mut yaml_str).unwrap(); - yaml_str = yaml_str.to_lowercase(); - - let doc: TestDoc = serde_yaml::from_str(&yaml_str.as_str()).unwrap(); +fn run_state_transition_test(test_name: &str) { + let doc = load_test_case(test_name); // Run Tests + let mut ok = true; for (i, test_case) in doc.test_cases.iter().enumerate() { let mut state = test_case.initial_state.clone(); - for block in test_case.blocks.iter() { + for (j, block) in test_case.blocks.iter().enumerate() { while block.slot > state.slot { let latest_block_header = state.latest_block_header.clone(); per_slot_processing(&mut state, &latest_block_header, &test_case.config).unwrap(); @@ -89,8 +56,9 @@ fn run_state_transition_tests_small() { if test_case.verify_signatures { let res = per_block_processing(&mut state, &block, &test_case.config); if res.is_err() { - println!("{:?}", i); + println!("Error in {} (#{}), on block {}", test_case.name, i, j); println!("{:?}", res); + ok = false; }; } else { let res = per_block_processing_without_verifying_block_signature( @@ -99,10 +67,32 @@ fn run_state_transition_tests_small() { &test_case.config, ); if res.is_err() { - println!("{:?}", i); + println!("Error in {} (#{}), on block {}", test_case.name, i, j); println!("{:?}", res); + ok = false; } } } } + + assert!(ok, "one or more tests failed, see above"); +} + +#[test] +#[cfg(not(debug_assertions))] +fn test_read_yaml() { + load_test_case("sanity-check_small-config_32-vals.yaml"); + load_test_case("sanity-check_default-config_100-vals.yaml"); +} + +#[test] +#[cfg(not(debug_assertions))] +fn run_state_transition_tests_small() { + run_state_transition_test("sanity-check_small-config_32-vals.yaml"); +} + +#[test] +#[cfg(not(debug_assertions))] +fn run_state_transition_tests_large() { + run_state_transition_test("sanity-check_default-config_100-vals.yaml"); } diff --git a/eth2/state_processing/yaml_utils/Cargo.toml b/eth2/state_processing/yaml_utils/Cargo.toml index 4a7ae5b89c..5f216fe1ad 100644 --- a/eth2/state_processing/yaml_utils/Cargo.toml +++ b/eth2/state_processing/yaml_utils/Cargo.toml @@ -6,7 +6,6 @@ edition = "2018" [build-dependencies] reqwest = "0.9" -tempdir = "0.3" [dependencies] diff --git a/eth2/state_processing/yaml_utils/build.rs b/eth2/state_processing/yaml_utils/build.rs index 3b7f314717..7fb652cc15 100644 --- a/eth2/state_processing/yaml_utils/build.rs +++ b/eth2/state_processing/yaml_utils/build.rs @@ -1,5 +1,4 @@ extern crate reqwest; -extern crate tempdir; use std::fs::File; use std::io::copy;