use crate::engine_limits::EngineLimits;
use crate::error::{MemError, Result};
#[derive(Debug, Clone)]
pub struct GovernorConfig {
pub global_ceiling: usize,
pub engine_limits: EngineLimits,
}
impl GovernorConfig {
pub fn validate(&self) -> Result<()> {
let total = self.engine_limits.total();
if total > self.global_ceiling {
return Err(MemError::GlobalCeilingExceeded {
allocated: total,
ceiling: self.global_ceiling,
requested: 0,
});
}
Ok(())
}
}
#[cfg(test)]
mod tests {
use crate::governor::core::MemoryGovernor;
use crate::governor::test_support::test_config;
#[test]
fn invalid_config_rejected() {
let mut config = test_config();
config.global_ceiling = 100;
assert!(MemoryGovernor::new(config).is_err());
}
}