state transitions tests: check more fields
This commit is contained in:
parent
b21cc64949
commit
19fad1012f
@ -1,14 +1,9 @@
|
|||||||
use serde_derive::Deserialize;
|
use serde_derive::Deserialize;
|
||||||
use serde_yaml;
|
use serde_yaml;
|
||||||
#[cfg(not(debug_assertions))]
|
#[cfg(not(debug_assertions))]
|
||||||
use state_processing::{
|
use state_processing::{per_block_processing, per_slot_processing};
|
||||||
per_block_processing, per_block_processing_without_verifying_block_signature,
|
|
||||||
per_slot_processing,
|
|
||||||
};
|
|
||||||
use std::{fs::File, io::prelude::*, path::PathBuf};
|
use std::{fs::File, io::prelude::*, path::PathBuf};
|
||||||
use types::*;
|
use types::*;
|
||||||
#[allow(unused_imports)]
|
|
||||||
use yaml_utils;
|
|
||||||
|
|
||||||
#[derive(Debug, Deserialize)]
|
#[derive(Debug, Deserialize)]
|
||||||
pub struct ExpectedState {
|
pub struct ExpectedState {
|
||||||
@ -17,6 +12,11 @@ pub struct ExpectedState {
|
|||||||
pub fork: Option<Fork>,
|
pub fork: Option<Fork>,
|
||||||
pub validator_registry: Option<Vec<Validator>>,
|
pub validator_registry: Option<Vec<Validator>>,
|
||||||
pub validator_balances: Option<Vec<u64>>,
|
pub validator_balances: Option<Vec<u64>>,
|
||||||
|
pub previous_epoch_attestations: Option<Vec<PendingAttestation>>,
|
||||||
|
pub current_epoch_attestations: Option<Vec<PendingAttestation>>,
|
||||||
|
pub historical_roots: Option<Vec<Hash256>>,
|
||||||
|
pub finalized_epoch: Option<Epoch>,
|
||||||
|
pub latest_block_roots: Option<Vec<Hash256>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl ExpectedState {
|
impl ExpectedState {
|
||||||
@ -42,6 +42,11 @@ impl ExpectedState {
|
|||||||
cfe!(fork),
|
cfe!(fork),
|
||||||
cfe!(validator_registry),
|
cfe!(validator_registry),
|
||||||
cfe!(validator_balances),
|
cfe!(validator_balances),
|
||||||
|
cfe!(previous_epoch_attestations),
|
||||||
|
cfe!(current_epoch_attestations),
|
||||||
|
cfe!(historical_roots),
|
||||||
|
cfe!(finalized_epoch),
|
||||||
|
cfe!(latest_block_roots),
|
||||||
]
|
]
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.flat_map(|x| x)
|
.flat_map(|x| x)
|
||||||
@ -108,7 +113,7 @@ fn run_state_transition_test(test_name: &str) {
|
|||||||
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;
|
||||||
};
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let mismatched_fields = test_case.expected_state.check(&state);
|
let mismatched_fields = test_case.expected_state.check(&state);
|
||||||
|
15
eth2/state_processing/yaml_utils/expected_state_fields.py
Executable file
15
eth2/state_processing/yaml_utils/expected_state_fields.py
Executable file
@ -0,0 +1,15 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
# Script to extract all the fields of the state mentioned in `expected_state` fields of tests
|
||||||
|
# in the `spec` directory. These fields can then be added to the `ExpectedState` struct.
|
||||||
|
# Might take a while to run.
|
||||||
|
|
||||||
|
import os, yaml
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
yaml_files = (filename for filename in os.listdir("specs") if filename.endswith(".yaml"))
|
||||||
|
parsed_yaml = (yaml.load(open("specs/" + filename, "r")) for filename in yaml_files)
|
||||||
|
all_fields = set()
|
||||||
|
for y in parsed_yaml:
|
||||||
|
all_fields.update(*({key for key in case["expected_state"]} for case in y["test_cases"]))
|
||||||
|
print(all_fields)
|
@ -81,7 +81,7 @@ pub struct BeaconState {
|
|||||||
|
|
||||||
// Recent state
|
// Recent state
|
||||||
pub latest_crosslinks: TreeHashVector<Crosslink>,
|
pub latest_crosslinks: TreeHashVector<Crosslink>,
|
||||||
latest_block_roots: TreeHashVector<Hash256>,
|
pub latest_block_roots: TreeHashVector<Hash256>,
|
||||||
latest_state_roots: TreeHashVector<Hash256>,
|
latest_state_roots: TreeHashVector<Hash256>,
|
||||||
latest_active_index_roots: TreeHashVector<Hash256>,
|
latest_active_index_roots: TreeHashVector<Hash256>,
|
||||||
latest_slashed_balances: TreeHashVector<u64>,
|
latest_slashed_balances: TreeHashVector<u64>,
|
||||||
|
Loading…
Reference in New Issue
Block a user