Files
ember-tune-rs/tests/orchestrator_e2e_test.rs

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);
}