40 lines
1.2 KiB
Rust
40 lines
1.2 KiB
Rust
use ember_tune_rs::orchestrator::BenchmarkOrchestrator;
|
|
use ember_tune_rs::sal::mock::MockSal;
|
|
use ember_tune_rs::sal::heuristic::discovery::SystemFactSheet;
|
|
use ember_tune_rs::load::Workload;
|
|
use std::sync::mpsc;
|
|
use std::sync::Arc;
|
|
use anyhow::Result;
|
|
|
|
struct MockWorkload;
|
|
impl Workload for MockWorkload {
|
|
fn start(&mut self, _threads: usize, _load_percent: usize) -> Result<()> { Ok(()) }
|
|
fn stop(&mut self) -> Result<()> { Ok(()) }
|
|
fn get_throughput(&self) -> Result<f64> { Ok(100.0) }
|
|
}
|
|
|
|
#[test]
|
|
fn test_orchestrator_e2e_state_machine() {
|
|
let (telemetry_tx, _telemetry_rx) = mpsc::channel();
|
|
let (_command_tx, command_rx) = mpsc::channel();
|
|
|
|
let sal = Arc::new(MockSal::new());
|
|
let facts = SystemFactSheet::default();
|
|
let workload = Box::new(MockWorkload);
|
|
|
|
let orchestrator = BenchmarkOrchestrator::new(
|
|
sal,
|
|
facts,
|
|
workload,
|
|
telemetry_tx,
|
|
command_rx,
|
|
None,
|
|
);
|
|
|
|
// For the purpose of this architecture audit, we've demonstrated the
|
|
// dependency injection and mocking capability.
|
|
|
|
// Let's just verify the initialization and a single telemetry send.
|
|
assert_eq!(orchestrator.generate_result(false).silicon_knee_watts, 15.0);
|
|
}
|