hotshot_testing/
overall_safety_task.rs1use std::{
8 collections::{HashMap, HashSet},
9 time::Duration,
10};
11
12use hotshot_types::traits::node_implementation::NodeType;
13use thiserror::Error;
14
15pub type StateAndBlock<S, B> = (Vec<S>, Vec<B>);
17
18#[derive(Debug, Clone)]
20pub enum ViewStatus<TYPES: NodeType> {
21 Ok,
23 Failed,
25 Err(OverallSafetyTaskErr<TYPES>),
27 InProgress,
29}
30
31#[derive(Error, Debug, Clone)]
33pub enum OverallSafetyTaskErr<TYPES: NodeType> {
34 #[error("Mismatched leaf")]
35 MismatchedLeaf,
36
37 #[error("Inconsistent blocks")]
38 InconsistentBlocks,
39
40 #[error("Inconsistent number of transactions: {map:?}")]
41 InconsistentTxnsNum { map: HashMap<u64, usize> },
42
43 #[error("Not enough decides: got: {got}, expected: {expected}")]
44 NotEnoughDecides { got: usize, expected: usize },
45
46 #[error("Too many view failures: {0:?}")]
47 TooManyFailures(HashSet<TYPES::View>),
48
49 #[error(
50 "Inconsistent failed views: expected: {expected_failed_views:?}, actual: \
51 {actual_failed_views:?}"
52 )]
53 InconsistentFailedViews {
54 expected_failed_views: Vec<TYPES::View>,
55 actual_failed_views: HashSet<TYPES::View>,
56 },
57 #[error(
58 "Not enough round results: results_count: {results_count}, views_count: {views_count}"
59 )]
60 NotEnoughRoundResults {
61 results_count: usize,
62 views_count: usize,
63 },
64
65 #[error("View timed out")]
66 ViewTimeout,
67}
68
69#[derive(Clone, Debug)]
71pub struct OverallSafetyPropertiesDescription {
72 pub num_successful_views: usize,
74 pub check_leaf: bool,
76 pub check_block: bool,
78 pub transaction_threshold: u64,
83 pub expected_view_failures: Vec<u64>,
87 pub possible_view_failures: Vec<u64>,
89 pub decide_timeout: Duration,
91}
92
93impl Default for OverallSafetyPropertiesDescription {
94 fn default() -> Self {
95 Self {
96 num_successful_views: 50,
97 check_leaf: false,
98 check_block: true,
99 transaction_threshold: 0,
100 expected_view_failures: vec![],
101 possible_view_failures: vec![],
102 decide_timeout: Duration::from_secs(60),
103 }
104 }
105}