[Fix] Reduce power of two to constant time (#28228)
Signed-off-by: JiangJiaWei1103 <waynechuang97@gmail.com>
This commit is contained in:
@@ -71,3 +71,29 @@ fn single_worker_returns_it() {
|
||||
let ctx = SelectionContext::new(&model_id, None);
|
||||
assert_eq!(p.select(&ws, &ctx).unwrap().id.0, "only");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn all_workers_reachable() {
|
||||
// Ensure all workers are selectable under equal load to prevent an
|
||||
// off-by-one error from skipping any worker during sampling
|
||||
let workers = vec![
|
||||
worker("a"),
|
||||
worker("b"),
|
||||
worker("c"),
|
||||
worker("d"),
|
||||
worker("e"),
|
||||
];
|
||||
let p = PowerOfTwoChoicesPolicy::new();
|
||||
let model_id = ModelId("m".into());
|
||||
let ctx = SelectionContext::new(&model_id, None);
|
||||
let mut seen = std::collections::HashSet::new();
|
||||
for _ in 0..1000 {
|
||||
let w = p.select(&workers, &ctx).unwrap();
|
||||
seen.insert(w.id.0.clone());
|
||||
}
|
||||
assert_eq!(
|
||||
seen.len(),
|
||||
workers.len(),
|
||||
"every worker should be reachable, saw {seen:?}"
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user