Skip to content

Commit 6f5fd8c

Browse files
committed
Tests refactoring: explcit worker ids removed
1 parent d7b55fa commit 6f5fd8c

8 files changed

Lines changed: 385 additions & 576 deletions

File tree

crates/tako/src/internal/server/core.rs

Lines changed: 15 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -632,66 +632,60 @@ mod tests {
632632
self.single_node_ready_to_assign.retain(|&id| id != task_id);
633633
}
634634

635-
pub fn assert_task_condition<T: Copy + Into<TaskId>, F: Fn(&Task) -> bool>(
636-
&self,
637-
task_ids: &[T],
638-
op: F,
639-
) {
635+
pub fn assert_task_condition<F: Fn(&Task) -> bool>(&self, task_ids: &[TaskId], op: F) {
640636
for task_id in task_ids {
641-
let task_id: TaskId = (*task_id).into();
642-
if !op(self.get_task(task_id)) {
637+
if !op(self.get_task(*task_id)) {
643638
panic!("Task {task_id} does not satisfy the condition");
644639
}
645640
}
646641
}
647642

648-
pub fn assert_worker_condition<W: Copy + Into<WorkerId>, F: Fn(&Worker) -> bool>(
643+
pub fn assert_worker_condition<F: Fn(&Worker) -> bool>(
649644
&self,
650-
worker_ids: &[W],
645+
worker_ids: &[WorkerId],
651646
op: F,
652647
) {
653648
for worker_id in worker_ids {
654-
let worker_id: WorkerId = (*worker_id).into();
655-
if !op(self.get_worker_by_id_or_panic(worker_id)) {
649+
if !op(self.get_worker_by_id_or_panic(*worker_id)) {
656650
panic!("Worker {worker_id} does not satisfy the condition");
657651
}
658652
}
659653
}
660654

661-
pub fn assert_waiting<T: Copy + Into<TaskId>>(&self, task_ids: &[T]) {
655+
pub fn assert_waiting(&self, task_ids: &[TaskId]) {
662656
self.assert_task_condition(task_ids, |t| t.is_waiting());
663657
}
664658

665-
pub fn assert_ready<T: Copy + Into<TaskId>>(&self, task_ids: &[T]) {
659+
pub fn assert_ready(&self, task_ids: &[TaskId]) {
666660
self.assert_task_condition(task_ids, |t| t.is_ready());
667661
}
668662

669-
pub fn assert_assigned<T: Copy + Into<TaskId>>(&self, task_ids: &[T]) {
663+
pub fn assert_assigned(&self, task_ids: &[TaskId]) {
670664
self.assert_task_condition(task_ids, |t| t.is_assigned());
671665
}
672666

673-
pub fn assert_fresh<T: Copy + Into<TaskId>>(&self, task_ids: &[T]) {
667+
pub fn assert_fresh(&self, task_ids: &[TaskId]) {
674668
self.assert_task_condition(task_ids, |t| t.is_fresh());
675669
}
676670

677-
pub fn assert_not_fresh<T: Copy + Into<TaskId>>(&self, task_ids: &[T]) {
671+
pub fn assert_not_fresh(&self, task_ids: &[TaskId]) {
678672
self.assert_task_condition(task_ids, |t| !t.is_fresh());
679673
}
680674

681-
pub fn assert_running<T: Copy + Into<TaskId>>(&self, task_ids: &[T]) {
675+
pub fn assert_running(&self, task_ids: &[TaskId]) {
682676
self.assert_task_condition(task_ids, |t| t.is_sn_running());
683677
}
684678

685-
pub fn assert_underloaded<W: Copy + Into<WorkerId>>(&self, worker_ids: &[W]) {
679+
pub fn assert_underloaded(&self, worker_ids: &[WorkerId]) {
686680
self.assert_worker_condition(worker_ids, |w| w.is_underloaded());
687681
}
688682

689-
pub fn assert_not_underloaded<W: Copy + Into<WorkerId>>(&self, worker_ids: &[W]) {
683+
pub fn assert_not_underloaded(&self, worker_ids: &[WorkerId]) {
690684
self.assert_worker_condition(worker_ids, |w| !w.is_underloaded());
691685
}
692686

693-
pub fn task<T: Into<TaskId>>(&self, id: T) -> &Task {
694-
self.tasks.get_task(id.into())
687+
pub fn task(&self, id: TaskId) -> &Task {
688+
self.tasks.get_task(id)
695689
}
696690
}
697691

crates/tako/src/internal/server/explain.rs

Lines changed: 21 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -160,24 +160,23 @@ mod tests {
160160
fn explain_single_node() {
161161
let mut rt = TestEnv::new();
162162
rt.new_named_resource("gpus");
163-
rt.new_worker_with_id(1, &WorkerBuilder::new(4));
164-
rt.new_worker_with_id(
165-
2,
163+
let w1 = rt.new_worker(&WorkerBuilder::new(4));
164+
let w2 = rt.new_worker(
166165
&WorkerBuilder::empty()
167166
.res_range("cpus", 1, 10)
168167
.res_range("gpus", 1, 4)
169168
.time_limit(Duration::from_secs(40_000)),
170169
);
171170

172171
let resource_map = rt.core().create_resource_map();
173-
let explain = |rt: &mut TestEnv, task: TaskId, worker, now| {
172+
let explain = |rt: &mut TestEnv, task: TaskId, worker: WorkerId, now| {
174173
let group = WorkerGroup::new(Set::new());
175174
let (task_map, worker_map, rqs) = rt.core().split_tasks_workers_requests_mut();
176175
task_explain_for_worker(
177176
&resource_map,
178177
rqs,
179178
task_map.get_task(task),
180-
worker_map.get_worker(WorkerId::new(worker)),
179+
worker_map.get_worker(worker),
181180
&group,
182181
now,
183182
)
@@ -187,29 +186,29 @@ mod tests {
187186
let now = Instant::now();
188187
let t1 = rt.new_task(&TaskBuilder::new());
189188
let (_task_map, _worker_map, _rqs) = rt.core().split_tasks_workers_requests_mut();
190-
let r = explain(&mut rt, t1, 1, now);
189+
let r = explain(&mut rt, t1, w1, now);
191190
assert_eq!(r.variants.len(), 1);
192191
assert_eq!(r.variants[0].len(), 1);
193192
assert_eq!(r.n_enabled_variants(), 1);
194193

195194
let t2 = rt.new_task(&TaskBuilder::new().time_request(20_000));
196-
let r = explain(&mut rt, t2, 1, now);
195+
let r = explain(&mut rt, t2, w1, now);
197196
assert_eq!(r.variants.len(), 1);
198197
assert_eq!(r.variants[0].len(), 2);
199198
assert_eq!(r.n_enabled_variants(), 1);
200199

201-
let r = explain(&mut rt, t2, 2, now);
200+
let r = explain(&mut rt, t2, w2, now);
202201
assert_eq!(r.variants.len(), 1);
203202
assert_eq!(r.variants[0].len(), 2);
204203
assert_eq!(r.n_enabled_variants(), 1);
205204

206205
let now2 = now + Duration::from_secs(21_000);
207-
let r = explain(&mut rt, t2, 1, now2);
206+
let r = explain(&mut rt, t2, w1, now2);
208207
assert_eq!(r.variants.len(), 1);
209208
assert_eq!(r.variants[0].len(), 2);
210209
assert_eq!(r.n_enabled_variants(), 1);
211210

212-
let r = explain(&mut rt, t2, 2, now2);
211+
let r = explain(&mut rt, t2, w2, now2);
213212
assert_eq!(r.variants.len(), 1);
214213
assert_eq!(r.variants[0].len(), 2);
215214
assert!(matches!(
@@ -227,7 +226,7 @@ mod tests {
227226
.cpus(30)
228227
.add_resource(1, 3),
229228
);
230-
let r = explain(&mut rt, t3, 2, now);
229+
let r = explain(&mut rt, t3, w2, now);
231230
assert_eq!(r.variants.len(), 1);
232231
assert_eq!(r.variants[0].len(), 3);
233232
assert!(matches!(
@@ -247,7 +246,7 @@ mod tests {
247246
.cpus(2)
248247
.add_resource(1, 32),
249248
);
250-
let r = explain(&mut rt, t4, 2, now2);
249+
let r = explain(&mut rt, t4, w2, now2);
251250
assert_eq!(r.variants.len(), 2);
252251
assert_eq!(r.variants[0].len(), 3);
253252
assert_eq!(r.variants[1].len(), 2);
@@ -283,22 +282,22 @@ mod tests {
283282
let now = Instant::now();
284283
let mut rt = TestEnv::new();
285284

286-
rt.new_worker_with_id(1, &WorkerBuilder::new(4));
287-
285+
let w1 = rt.new_worker(&WorkerBuilder::new(4));
288286
let t1 = rt.new_task(&TaskBuilder::new().n_nodes(4));
287+
289288
let mut wset = Set::new();
290-
wset.insert(WorkerId::new(1));
291-
wset.insert(WorkerId::new(2));
292-
wset.insert(WorkerId::new(3));
293-
wset.insert(WorkerId::new(132));
289+
wset.insert(w1);
290+
wset.insert(WorkerId::new(1002));
291+
wset.insert(WorkerId::new(1003));
292+
wset.insert(WorkerId::new(1004));
294293
let group = WorkerGroup::new(wset);
295294
let resource_map = rt.core().create_resource_map();
296295
let (task_map, worker_map, rqs) = rt.core().split_tasks_workers_requests_mut();
297296
let r = task_explain_for_worker(
298297
&resource_map,
299298
rqs,
300299
task_map.get_task(t1),
301-
worker_map.get_worker(WorkerId::new(1)),
300+
worker_map.get_worker(w1),
302301
&group,
303302
now,
304303
);
@@ -307,14 +306,14 @@ mod tests {
307306
assert_eq!(r.n_enabled_variants(), 1);
308307

309308
let mut wset = Set::new();
310-
wset.insert(WorkerId::new(1));
311-
wset.insert(WorkerId::new(132));
309+
wset.insert(w1);
310+
wset.insert(WorkerId::new(1032));
312311
let group = WorkerGroup::new(wset);
313312
let r = task_explain_for_worker(
314313
&resource_map,
315314
rqs,
316315
task_map.get_task(t1),
317-
worker_map.get_worker(WorkerId::new(1)),
316+
worker_map.get_worker(w1),
318317
&group,
319318
now,
320319
);

crates/tako/src/internal/tests/test_query.rs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
use crate::TaskId;
21
use crate::control::WorkerTypeQuery;
32
use crate::internal::scheduler::query::compute_new_worker_query;
43
use crate::internal::server::core::Core;
@@ -92,10 +91,10 @@ fn test_query_no_enough_workers1() {
9291
fn test_query_enough_workers2() {
9392
let mut rt = TestEnv::new();
9493

95-
rt.new_workers_cpus(&[2]);
94+
let w1 = rt.new_worker_cpus(2);
9695

97-
rt.new_task_running(&TaskBuilder::new(), 100);
98-
rt.new_task_assigned(&TaskBuilder::new(), 100);
96+
rt.new_task_running(&TaskBuilder::new(), w1);
97+
rt.new_task_assigned(&TaskBuilder::new(), w1);
9998
rt.schedule();
10099

101100
let r = compute_new_worker_query(
@@ -736,7 +735,7 @@ fn test_query_unknown_do_not_add_extra() {
736735
fn test_query_after_task_cancel() {
737736
let mut rt = TestEnv::new();
738737
let t1 = rt.new_task_cpus(10);
739-
rt.new_worker_with_id(102, &WorkerBuilder::new(1));
738+
rt.new_worker(&WorkerBuilder::new(1));
740739
rt.schedule();
741740
let mut comm = create_test_comm();
742741
on_cancel_tasks(rt.core(), &mut comm, &[t1]);

0 commit comments

Comments
 (0)