use crate::openai::ModelInfo;
fn advertised(max_seq_len: usize) -> serde_json::Value {
serde_json::to_value(ModelInfo::advertise("test-model".to_string(), max_seq_len))
.expect("ModelInfo serializes")
}
fn unknown_ceiling() -> serde_json::Value {
serde_json::to_value(ModelInfo {
id: "test-model".to_string(),
object: "model".to_string(),
created: 0,
owned_by: "metrale".to_string(),
max_model_len: None,
})
.expect("ModelInfo serializes")
}
#[test]
fn advertised_ceiling_is_the_served_max_seq_len() {
let served_max_seq_len = 32768usize;
let v = advertised(served_max_seq_len);
assert_eq!(
v.get("max_model_len").and_then(|x| x.as_u64()),
Some(served_max_seq_len as u64),
"the advertised ceiling must equal the value admission enforces \
(AppState::max_seq_len); a hardcoded literal here silently diverges \
from the scheduler the first time someone changes --max-seq-len"
);
}
#[test]
fn no_model_loaded_omits_the_field_rather_than_reporting_zero() {
let v = unknown_ceiling();
assert!(
v.get("max_model_len").is_none(),
"unknown must be ABSENT, not 0: {v}"
);
assert_eq!(v.get("id").and_then(|x| x.as_str()), Some("test-model"));
assert_eq!(v.get("object").and_then(|x| x.as_str()), Some("model"));
}
#[test]
fn the_field_name_is_the_one_clients_probe() {
let v = advertised(4096);
let obj = v.as_object().expect("object");
assert!(obj.contains_key("max_model_len"), "keys: {:?}", obj.keys());
for wrong in [
"max_seq_len",
"context_length",
"max_tokens",
"context_window",
] {
assert!(
!obj.contains_key(wrong),
"{wrong} is not the field clients read; keys: {:?}",
obj.keys()
);
}
}