mirror of
https://github.com/telemt/telemt.git
synced 2026-04-21 20:44:10 +03:00
118 lines
3.2 KiB
Rust
118 lines
3.2 KiB
Rust
use super::*;
|
|
use std::fs;
|
|
use std::path::PathBuf;
|
|
use std::time::{SystemTime, UNIX_EPOCH};
|
|
|
|
fn write_temp_config(contents: &str) -> PathBuf {
|
|
let nonce = SystemTime::now()
|
|
.duration_since(UNIX_EPOCH)
|
|
.expect("system time must be after unix epoch")
|
|
.as_nanos();
|
|
let path = std::env::temp_dir().join(format!("telemt-load-memory-envelope-{nonce}.toml"));
|
|
fs::write(&path, contents).expect("temp config write must succeed");
|
|
path
|
|
}
|
|
|
|
fn remove_temp_config(path: &PathBuf) {
|
|
let _ = fs::remove_file(path);
|
|
}
|
|
|
|
#[test]
|
|
fn load_rejects_writer_cmd_capacity_above_upper_bound() {
|
|
let path = write_temp_config(
|
|
r#"
|
|
[general]
|
|
me_writer_cmd_channel_capacity = 16385
|
|
"#,
|
|
);
|
|
|
|
let err =
|
|
ProxyConfig::load(&path).expect_err("writer command capacity above hard cap must fail");
|
|
let msg = err.to_string();
|
|
assert!(
|
|
msg.contains("general.me_writer_cmd_channel_capacity must be within [1, 16384]"),
|
|
"error must explain writer command capacity hard cap, got: {msg}"
|
|
);
|
|
|
|
remove_temp_config(&path);
|
|
}
|
|
|
|
#[test]
|
|
fn load_rejects_route_channel_capacity_above_upper_bound() {
|
|
let path = write_temp_config(
|
|
r#"
|
|
[general]
|
|
me_route_channel_capacity = 8193
|
|
"#,
|
|
);
|
|
|
|
let err =
|
|
ProxyConfig::load(&path).expect_err("route channel capacity above hard cap must fail");
|
|
let msg = err.to_string();
|
|
assert!(
|
|
msg.contains("general.me_route_channel_capacity must be within [1, 8192]"),
|
|
"error must explain route channel hard cap, got: {msg}"
|
|
);
|
|
|
|
remove_temp_config(&path);
|
|
}
|
|
|
|
#[test]
|
|
fn load_rejects_c2me_channel_capacity_above_upper_bound() {
|
|
let path = write_temp_config(
|
|
r#"
|
|
[general]
|
|
me_c2me_channel_capacity = 8193
|
|
"#,
|
|
);
|
|
|
|
let err = ProxyConfig::load(&path).expect_err("c2me channel capacity above hard cap must fail");
|
|
let msg = err.to_string();
|
|
assert!(
|
|
msg.contains("general.me_c2me_channel_capacity must be within [1, 8192]"),
|
|
"error must explain c2me channel hard cap, got: {msg}"
|
|
);
|
|
|
|
remove_temp_config(&path);
|
|
}
|
|
|
|
#[test]
|
|
fn load_rejects_max_client_frame_above_upper_bound() {
|
|
let path = write_temp_config(
|
|
r#"
|
|
[general]
|
|
max_client_frame = 16777217
|
|
"#,
|
|
);
|
|
|
|
let err = ProxyConfig::load(&path).expect_err("max_client_frame above hard cap must fail");
|
|
let msg = err.to_string();
|
|
assert!(
|
|
msg.contains("general.max_client_frame must be within [4096, 16777216]"),
|
|
"error must explain max_client_frame hard cap, got: {msg}"
|
|
);
|
|
|
|
remove_temp_config(&path);
|
|
}
|
|
|
|
#[test]
|
|
fn load_accepts_memory_limits_at_hard_upper_bounds() {
|
|
let path = write_temp_config(
|
|
r#"
|
|
[general]
|
|
me_writer_cmd_channel_capacity = 16384
|
|
me_route_channel_capacity = 8192
|
|
me_c2me_channel_capacity = 8192
|
|
max_client_frame = 16777216
|
|
"#,
|
|
);
|
|
|
|
let cfg = ProxyConfig::load(&path).expect("hard upper bound values must be accepted");
|
|
assert_eq!(cfg.general.me_writer_cmd_channel_capacity, 16384);
|
|
assert_eq!(cfg.general.me_route_channel_capacity, 8192);
|
|
assert_eq!(cfg.general.me_c2me_channel_capacity, 8192);
|
|
assert_eq!(cfg.general.max_client_frame, 16 * 1024 * 1024);
|
|
|
|
remove_temp_config(&path);
|
|
}
|