frame_benchmarking_cli/machine/
hardware.rs1use sc_sysinfo::Requirements;
21use std::sync::LazyLock;
22
23pub static SUBSTRATE_REFERENCE_HARDWARE: LazyLock<Requirements> = LazyLock::new(|| {
28 let raw = include_bytes!("reference_hardware.json").as_slice();
29 serde_json::from_slice(raw).expect("Hardcoded data is known good; qed")
30});
31
32#[cfg(test)]
33mod tests {
34 use super::*;
35 use sc_sysinfo::{Metric, Requirement, Requirements, Throughput};
36
37 #[test]
39 fn json_static_data() {
40 let raw = serde_json::to_string(&*SUBSTRATE_REFERENCE_HARDWARE).unwrap();
41 let decoded: Requirements = serde_json::from_str(&raw).unwrap();
42
43 assert_eq!(decoded, SUBSTRATE_REFERENCE_HARDWARE.clone());
44 }
45
46 #[test]
48 fn json_static_data_is_correct() {
49 assert_eq!(
50 *SUBSTRATE_REFERENCE_HARDWARE,
51 Requirements(vec![
52 Requirement {
53 metric: Metric::Blake2256,
54 minimum: Throughput::from_mibs(1000.00),
55 validator_only: false
56 },
57 Requirement {
58 metric: Metric::Blake2256Parallel { num_cores: 8 },
59 minimum: Throughput::from_mibs(1000.00),
60 validator_only: true,
61 },
62 Requirement {
63 metric: Metric::Sr25519Verify,
64 minimum: Throughput::from_kibs(637.619999744),
65 validator_only: false
66 },
67 Requirement {
68 metric: Metric::MemCopy,
69 minimum: Throughput::from_gibs(11.4925205078125003),
70 validator_only: false,
71 },
72 Requirement {
73 metric: Metric::DiskSeqWrite,
74 minimum: Throughput::from_mibs(950.0),
75 validator_only: false,
76 },
77 Requirement {
78 metric: Metric::DiskRndWrite,
79 minimum: Throughput::from_mibs(420.0),
80 validator_only: false
81 },
82 ])
83 );
84 }
85}