use std::sync::Arc;
pub use crate::adapters::testing::TestAdapters;
pub use crate::clock::testing::{TestClock, YieldingClock};
pub use crate::control::fake::*;
pub use crate::entropy::testing::SequenceEntropy;
pub use crate::session::proxy::testing::CountingMinter;
pub use crate::session::testing::{HealthyDaemon, Recorder, Reply, health_body, session_with};
use crate::clock::Clock;
use crate::control::ControlPlane;
use crate::control::transport::Transport;
use crate::region::Region;
pub fn aarch64_daemon(payload: &[u8]) -> Vec<u8> {
elf_daemon(microvms_domain::provision::REQUIRED_ELF_MACHINE, payload)
}
pub fn elf_daemon(machine: u16, payload: &[u8]) -> Vec<u8> {
let mut bytes = vec![0_u8; 20];
bytes[..4].copy_from_slice(b"\x7fELF");
bytes[5] = 1;
bytes[18..20].copy_from_slice(&machine.to_le_bytes());
bytes.extend_from_slice(payload);
bytes
}
pub fn control_plane(
transport: Arc<dyn Transport>,
region: Region,
clock: Arc<dyn Clock>,
) -> ControlPlane {
ControlPlane::from_ports(
transport,
region,
clock,
Arc::new(SequenceEntropy::new()),
Arc::new(TestAdapters::new()),
)
}