feat: wire bucket identities through driver outputs
This commit is contained in:
@@ -296,7 +296,69 @@ fn ablation_parallel_matches_serial() {
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn bucketed_configs_are_rejected_by_legacy_runtime_paths() {
|
||||
fn strict_bucket_run_emits_bucket_fields_in_outputs() {
|
||||
let tmp = std::env::temp_dir().join("kvcache_sim_bucket_outputs");
|
||||
let _ = std::fs::remove_dir_all(&tmp);
|
||||
std::fs::create_dir_all(&tmp).unwrap();
|
||||
let trace_path = tmp.join("trace.jsonl");
|
||||
|
||||
let mut f = std::fs::File::create(&trace_path).unwrap();
|
||||
writeln!(
|
||||
f,
|
||||
"{}",
|
||||
serde_json::json!({
|
||||
"chat_id": 1,
|
||||
"parent_chat_id": -1,
|
||||
"timestamp": 0.0,
|
||||
"input_length": 32,
|
||||
"output_length": 16,
|
||||
"type": "text",
|
||||
"turn": 0,
|
||||
"hash_ids": [1, 2]
|
||||
})
|
||||
)
|
||||
.unwrap();
|
||||
writeln!(
|
||||
f,
|
||||
"{}",
|
||||
serde_json::json!({
|
||||
"chat_id": 2,
|
||||
"parent_chat_id": -1,
|
||||
"timestamp": 0.1,
|
||||
"input_length": 80,
|
||||
"output_length": 16,
|
||||
"type": "text",
|
||||
"turn": 0,
|
||||
"hash_ids": [3, 4, 5, 6, 7]
|
||||
})
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
let mut cfg = bucketed_config(
|
||||
trace_path.to_str().unwrap(),
|
||||
tmp.to_str().unwrap(),
|
||||
RouterMode::LeastLoaded,
|
||||
);
|
||||
cfg.cluster.global_router.mode = GlobalRouterMode::StrictInputLength;
|
||||
cfg.sim.sample_interval_s = 0.05;
|
||||
|
||||
let _ = driver::run(&cfg, Some("strict_bucket")).expect("bucketed run");
|
||||
|
||||
let per_request = std::fs::read_to_string(tmp.join("strict_bucket/per_request.csv")).unwrap();
|
||||
assert!(per_request.contains("bucket"));
|
||||
assert!(per_request.contains("length_bucket_match"));
|
||||
|
||||
let instances = std::fs::read_to_string(tmp.join("strict_bucket/instances.csv")).unwrap();
|
||||
assert!(instances.contains("bucket"));
|
||||
|
||||
let routing_log = std::fs::read_to_string(tmp.join("strict_bucket/routing_log.jsonl")).unwrap();
|
||||
assert!(routing_log.contains("\"chosen_bucket\""));
|
||||
assert!(routing_log.contains("\"bucket_candidates\""));
|
||||
assert!(routing_log.contains("\"global_reason\""));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn bucketed_configs_are_rejected_by_legacy_fixed_placement_paths() {
|
||||
let tmp = std::env::temp_dir().join("kvcache_sim_bucketed_reject");
|
||||
let _ = std::fs::remove_dir_all(&tmp);
|
||||
std::fs::create_dir_all(&tmp).unwrap();
|
||||
@@ -309,13 +371,9 @@ fn bucketed_configs_are_rejected_by_legacy_runtime_paths() {
|
||||
RouterMode::Random,
|
||||
);
|
||||
|
||||
let result = driver::run(&cfg, Some("bucketed_guard"));
|
||||
assert!(result.is_err(), "bucketed run should fail");
|
||||
let err = result.err().unwrap();
|
||||
assert!(err.to_string().contains("cluster.buckets"));
|
||||
|
||||
let err = driver::ablate_fixed_placement(&cfg, &[RouterMode::Random], &[ReplayEvictPolicy::Lru])
|
||||
.expect_err("bucketed ablation should fail");
|
||||
let err =
|
||||
driver::ablate_fixed_placement(&cfg, &[RouterMode::Random], &[ReplayEvictPolicy::Lru])
|
||||
.expect_err("bucketed ablation should fail");
|
||||
assert!(err.to_string().contains("cluster.buckets"));
|
||||
|
||||
let err = replay::replay_fixed_placement(
|
||||
|
||||
Reference in New Issue
Block a user