use std::collections::HashMap;
const DEFAULT_TIMEOUT_MS: u64 = 120_000;
const MAX_TIMEOUT_MS: u64 = 600_000;
pub fn get_default_bash_timeout_ms(env: Option<&HashMap<String, String>>) -> u64 {
let env = env.unwrap_or(&HashMap::new());
if let Some(value) = env.get("BASH_DEFAULT_TIMEOUT_MS") {
if let Ok(parsed) = value.parse::<u64>() {
if parsed > 0 {
return parsed;
}
}
}
DEFAULT_TIMEOUT_MS
}
pub fn get_max_bash_timeout_ms(env: Option<&HashMap<String, String>>) -> u64 {
let env = env.unwrap_or(&HashMap::new());
if let Some(value) = env.get("BASH_MAX_TIMEOUT_MS") {
if let Ok(parsed) = value.parse::<u64>() {
if parsed > 0 {
return parsed.max(get_default_bash_timeout_ms(Some(env)));
}
}
}
MAX_TIMEOUT_MS.max(get_default_bash_timeout_ms(env))
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_default_timeout() {
assert_eq!(get_default_bash_timeout_ms(None), DEFAULT_TIMEOUT_MS);
}
#[test]
fn test_env_override() {
let mut env = HashMap::new();
env.insert("BASH_DEFAULT_TIMEOUT_MS".to_string(), "60000".to_string());
assert_eq!(get_default_bash_timeout_ms(Some(&env)), 60000);
}
}