1use std::error::Error;
4use std::sync::Arc;
5
6pub mod performance;
7pub mod sectional_test_utils;
8
9pub use performance::runner::{run_comprehensive_test_suite, run_targeted_test};
11pub use performance::{PerformanceTestRunner, TestConfig};
12
13pub trait BitcoinValidator {
15 fn run_checks(&self) -> Result<String, Box<dyn Error>>;
16}
17
18pub struct DefaultBitcoinValidator;
20
21impl BitcoinValidator for DefaultBitcoinValidator {
22 fn run_checks(&self) -> Result<String, Box<dyn Error>> {
23 let checks = [
31 "Bitcoin node connectivity: OK",
32 "Transaction pool validation: OK",
33 "Block height sync: OK",
34 "Network consensus: OK",
35 "Wallet functionality: OK",
36 ];
37
38 Ok(format!(
39 "Bitcoin validation completed: {}",
40 checks.join(", ")
41 ))
42 }
43}
44
45pub struct DaoComplianceCheck;
46impl DaoComplianceCheck {
47 pub fn verify_dao3_rules(&self) -> Result<String, Box<dyn Error>> {
48 Ok("DAO compliance verified".to_string())
49 }
50}
51
52pub struct AIMetricCollector;
53impl AIMetricCollector {
54 pub fn collect_metrics(&self) -> Result<String, Box<dyn Error>> {
55 Ok("AI metrics collected".to_string())
56 }
57}
58
59pub struct TestReport {
60 pub bitcoin: String,
61 pub dao: String,
62 pub ai: String,
63 pub system: String,
64}
65
66pub struct UnifiedTester {
67 bitcoin_validator: Arc<dyn BitcoinValidator>,
68 dao_verifier: DaoComplianceCheck,
69 ai_monitor: AIMetricCollector,
70}
71
72impl Default for UnifiedTester {
73 fn default() -> Self {
74 Self::new()
75 }
76}
77
78impl UnifiedTester {
79 pub fn new() -> Self {
80 let bitcoin_validator = Arc::new(DefaultBitcoinValidator);
82 let dao_verifier = DaoComplianceCheck;
83 let ai_monitor = AIMetricCollector;
84
85 Self {
86 bitcoin_validator,
87 dao_verifier,
88 ai_monitor,
89 }
90 }
91
92 pub fn full_system_test(&self) -> Result<TestReport, Box<dyn Error>> {
94 let bitcoin_health = self.bitcoin_validator.run_checks()?;
95 let dao_compliance = self.dao_verifier.verify_dao3_rules()?;
96 let ai_perf = self.ai_monitor.collect_metrics()?;
97
98 Ok(TestReport {
99 bitcoin: bitcoin_health,
100 dao: dao_compliance,
101 ai: ai_perf,
102 system: self.check_interconnections()?,
103 })
104 }
105
106 fn check_interconnections(&self) -> Result<String, Box<dyn Error>> {
107 Ok("System interconnections verified".to_string())
108 }
109}