Skip to content

Commit 9170aca

Browse files
authored
Turbopack: improve var names, add some unit tests (#81412)
### What? * improve variables names * add unit tests
1 parent a9c3206 commit 9170aca

File tree

3 files changed

+206
-18
lines changed

3 files changed

+206
-18
lines changed

turbopack/crates/turbo-tasks-backend/src/backend/mod.rs

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -528,15 +528,15 @@ impl<B: BackingStorage> TurboTasksBackendInner<B> {
528528
.unwrap_or_default()
529529
.get(self.session_id);
530530
if dirty_tasks > 0 || is_dirty {
531-
let root = get_mut!(task, Activeness);
531+
let activeness = get_mut!(task, Activeness);
532532
let mut task_ids_to_schedule: Vec<_> = Vec::new();
533533
// When there are dirty task, subscribe to the all_clean_event
534-
let root = if let Some(root) = root {
534+
let activeness = if let Some(activeness) = activeness {
535535
// This makes sure all tasks stay active and this task won't stale.
536536
// active_until_clean is automatically removed when this
537537
// task is clean.
538-
root.set_active_until_clean();
539-
root
538+
activeness.set_active_until_clean();
539+
activeness
540540
} else {
541541
// If we don't have a root state, add one. This also makes sure all tasks stay
542542
// active and this task won't stale. active_until_clean
@@ -557,7 +557,7 @@ impl<B: BackingStorage> TurboTasksBackendInner<B> {
557557
}
558558
get!(task, Activeness).unwrap()
559559
};
560-
let listener = root.all_clean_event.listen_with_note(move || {
560+
let listener = activeness.all_clean_event.listen_with_note(move || {
561561
format!("try_read_task_output (strongly consistent) from {reader:?}")
562562
});
563563
drop(task);
@@ -1951,11 +1951,11 @@ impl<B: BackingStorage> TurboTasksBackendInner<B> {
19511951
};
19521952
if !aggregated_update.is_zero() {
19531953
if aggregated_update.get(self.session_id) < 0
1954-
&& let Some(root_state) = get_mut!(task, Activeness)
1954+
&& let Some(activeness_state) = get_mut!(task, Activeness)
19551955
{
1956-
root_state.all_clean_event.notify(usize::MAX);
1957-
root_state.unset_active_until_clean();
1958-
if root_state.is_empty() {
1956+
activeness_state.all_clean_event.notify(usize::MAX);
1957+
activeness_state.unset_active_until_clean();
1958+
if activeness_state.is_empty() {
19591959
task.remove(&CachedDataItemKey::Activeness {});
19601960
}
19611961
}
@@ -2384,15 +2384,15 @@ impl<B: BackingStorage> TurboTasksBackendInner<B> {
23842384
dirty_containers.get(self.session_id) > 0
23852385
});
23862386
if is_dirty || has_dirty_containers {
2387-
if let Some(root_state) = get_mut!(task, Activeness) {
2387+
if let Some(activeness_state) = get_mut!(task, Activeness) {
23882388
// We will finish the task, but it would be removed after the task is done
2389-
root_state.unset_root_type();
2390-
root_state.set_active_until_clean();
2389+
activeness_state.unset_root_type();
2390+
activeness_state.set_active_until_clean();
23912391
};
2392-
} else if let Some(root_state) = remove!(task, Activeness) {
2392+
} else if let Some(activeness_state) = remove!(task, Activeness) {
23932393
// Technically nobody should be listening to this event, but just in case
23942394
// we notify it anyway
2395-
root_state.all_clean_event.notify(usize::MAX);
2395+
activeness_state.all_clean_event.notify(usize::MAX);
23962396
}
23972397
}
23982398

turbopack/crates/turbo-tasks-backend/src/backend/operation/aggregation_update.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -346,10 +346,10 @@ impl AggregatedDataUpdate {
346346
{
347347
// When the current task is no longer dirty, we need to fire the
348348
// aggregate root events and do some cleanup
349-
if let Some(root_state) = get_mut!(task, Activeness) {
350-
root_state.all_clean_event.notify(usize::MAX);
351-
root_state.unset_active_until_clean();
352-
if root_state.is_empty() {
349+
if let Some(activeness_state) = get_mut!(task, Activeness) {
350+
activeness_state.all_clean_event.notify(usize::MAX);
351+
activeness_state.unset_active_until_clean();
352+
if activeness_state.is_empty() {
353353
task.remove(&CachedDataItemKey::Activeness {});
354354
}
355355
}

turbopack/crates/turbo-tasks-backend/src/data.rs

Lines changed: 188 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -294,6 +294,194 @@ impl DirtyContainerCount {
294294
}
295295
}
296296

297+
#[cfg(test)]
298+
mod dirty_container_count_tests {
299+
use turbo_tasks::SessionId;
300+
301+
use super::*;
302+
303+
const SESSION_1: SessionId = unsafe { SessionId::new_unchecked(1) };
304+
const SESSION_2: SessionId = unsafe { SessionId::new_unchecked(2) };
305+
const SESSION_3: SessionId = unsafe { SessionId::new_unchecked(3) };
306+
307+
#[test]
308+
fn test_update() {
309+
let mut count = DirtyContainerCount::default();
310+
assert!(count.is_zero());
311+
312+
let diff = count.update(1);
313+
assert!(!count.is_zero());
314+
assert_eq!(count.get(SESSION_1), 1);
315+
assert_eq!(diff.get(SESSION_1), 1);
316+
assert_eq!(count.get(SESSION_2), 1);
317+
assert_eq!(diff.get(SESSION_2), 1);
318+
319+
let diff = count.update(-1);
320+
assert!(count.is_zero());
321+
assert_eq!(count.get(SESSION_1), 0);
322+
assert_eq!(diff.get(SESSION_1), -1);
323+
assert_eq!(count.get(SESSION_2), 0);
324+
assert_eq!(diff.get(SESSION_2), -1);
325+
326+
let diff = count.update(2);
327+
assert!(!count.is_zero());
328+
assert_eq!(count.get(SESSION_1), 2);
329+
assert_eq!(diff.get(SESSION_1), 1);
330+
assert_eq!(count.get(SESSION_2), 2);
331+
assert_eq!(diff.get(SESSION_2), 1);
332+
333+
let diff = count.update(-1);
334+
assert!(!count.is_zero());
335+
assert_eq!(count.get(SESSION_1), 1);
336+
assert_eq!(diff.get(SESSION_1), 0);
337+
assert_eq!(count.get(SESSION_2), 1);
338+
assert_eq!(diff.get(SESSION_2), 0);
339+
340+
let diff = count.update(-1);
341+
assert!(count.is_zero());
342+
assert_eq!(count.get(SESSION_1), 0);
343+
assert_eq!(diff.get(SESSION_1), -1);
344+
assert_eq!(count.get(SESSION_2), 0);
345+
assert_eq!(diff.get(SESSION_2), -1);
346+
347+
let diff = count.update(-1);
348+
assert!(!count.is_zero());
349+
assert_eq!(count.get(SESSION_1), -1);
350+
assert_eq!(diff.get(SESSION_1), 0);
351+
assert_eq!(count.get(SESSION_2), -1);
352+
assert_eq!(diff.get(SESSION_2), 0);
353+
354+
let diff = count.update(2);
355+
assert!(!count.is_zero());
356+
assert_eq!(count.get(SESSION_1), 1);
357+
assert_eq!(diff.get(SESSION_1), 1);
358+
assert_eq!(count.get(SESSION_2), 1);
359+
assert_eq!(diff.get(SESSION_2), 1);
360+
361+
let diff = count.update(-2);
362+
assert!(!count.is_zero());
363+
assert_eq!(count.get(SESSION_1), -1);
364+
assert_eq!(diff.get(SESSION_1), -1);
365+
assert_eq!(count.get(SESSION_2), -1);
366+
assert_eq!(diff.get(SESSION_2), -1);
367+
368+
let diff = count.update(1);
369+
assert!(count.is_zero());
370+
assert_eq!(count.get(SESSION_1), 0);
371+
assert_eq!(diff.get(SESSION_1), 0);
372+
assert_eq!(count.get(SESSION_2), 0);
373+
assert_eq!(diff.get(SESSION_2), 0);
374+
}
375+
376+
#[test]
377+
fn test_session_dependent() {
378+
let mut count = DirtyContainerCount::default();
379+
assert!(count.is_zero());
380+
381+
let diff = count.update_session_dependent(SESSION_1, 1);
382+
assert!(!count.is_zero());
383+
assert_eq!(count.get(SESSION_1), 0);
384+
assert_eq!(diff.get(SESSION_1), 0);
385+
assert_eq!(count.get(SESSION_2), 1);
386+
assert_eq!(diff.get(SESSION_2), 1);
387+
388+
let diff = count.update_session_dependent(SESSION_1, -1);
389+
assert!(count.is_zero());
390+
assert_eq!(count.get(SESSION_1), 0);
391+
assert_eq!(diff.get(SESSION_1), 0);
392+
assert_eq!(count.get(SESSION_2), 0);
393+
assert_eq!(diff.get(SESSION_2), -1);
394+
395+
let diff = count.update_session_dependent(SESSION_1, 2);
396+
assert!(!count.is_zero());
397+
assert_eq!(count.get(SESSION_1), 0);
398+
assert_eq!(diff.get(SESSION_1), 0);
399+
assert_eq!(count.get(SESSION_2), 2);
400+
assert_eq!(diff.get(SESSION_2), 1);
401+
402+
let diff = count.update_session_dependent(SESSION_2, -2);
403+
assert!(!count.is_zero());
404+
assert_eq!(count.get(SESSION_1), 0);
405+
assert_eq!(diff.get(SESSION_1), -1);
406+
assert_eq!(count.get(SESSION_2), 2);
407+
assert_eq!(diff.get(SESSION_2), 0);
408+
assert_eq!(count.get(SESSION_3), 0);
409+
assert_eq!(diff.get(SESSION_3), -1);
410+
}
411+
412+
#[test]
413+
fn test_update_with_dirty_state() {
414+
let mut count = DirtyContainerCount::default();
415+
let dirty = DirtyState {
416+
clean_in_session: None,
417+
};
418+
let diff = count.update_with_dirty_state(&dirty);
419+
assert!(!count.is_zero());
420+
assert_eq!(count.get(SESSION_1), 1);
421+
assert_eq!(diff.get(SESSION_1), 1);
422+
assert_eq!(count.get(SESSION_2), 1);
423+
assert_eq!(diff.get(SESSION_2), 1);
424+
425+
let diff = count.undo_update_with_dirty_state(&dirty);
426+
assert!(count.is_zero());
427+
assert_eq!(count.get(SESSION_1), 0);
428+
assert_eq!(diff.get(SESSION_1), -1);
429+
assert_eq!(count.get(SESSION_2), 0);
430+
assert_eq!(diff.get(SESSION_2), -1);
431+
432+
let mut count = DirtyContainerCount::default();
433+
let dirty = DirtyState {
434+
clean_in_session: Some(SESSION_1),
435+
};
436+
let diff = count.update_with_dirty_state(&dirty);
437+
assert!(!count.is_zero());
438+
assert_eq!(count.get(SESSION_1), 0);
439+
assert_eq!(diff.get(SESSION_1), 0);
440+
assert_eq!(count.get(SESSION_2), 1);
441+
assert_eq!(diff.get(SESSION_2), 1);
442+
443+
let diff = count.undo_update_with_dirty_state(&dirty);
444+
assert!(count.is_zero());
445+
assert_eq!(count.get(SESSION_1), 0);
446+
assert_eq!(diff.get(SESSION_1), 0);
447+
assert_eq!(count.get(SESSION_2), 0);
448+
assert_eq!(diff.get(SESSION_2), -1);
449+
}
450+
451+
#[test]
452+
fn test_replace_dirty_state() {
453+
let mut count = DirtyContainerCount::default();
454+
let old = DirtyState {
455+
clean_in_session: None,
456+
};
457+
let new = DirtyState {
458+
clean_in_session: Some(SESSION_1),
459+
};
460+
count.update_with_dirty_state(&old);
461+
let diff = count.replace_dirty_state(&old, &new);
462+
assert!(!count.is_zero());
463+
assert_eq!(count.get(SESSION_1), 0);
464+
assert_eq!(diff.get(SESSION_1), -1);
465+
assert_eq!(count.get(SESSION_2), 1);
466+
assert_eq!(diff.get(SESSION_2), 0);
467+
468+
let mut count = DirtyContainerCount::default();
469+
let old = DirtyState {
470+
clean_in_session: Some(SESSION_1),
471+
};
472+
let new = DirtyState {
473+
clean_in_session: None,
474+
};
475+
count.update_with_dirty_state(&old);
476+
let diff = count.replace_dirty_state(&old, &new);
477+
assert!(!count.is_zero());
478+
assert_eq!(count.get(SESSION_1), 1);
479+
assert_eq!(diff.get(SESSION_1), 1);
480+
assert_eq!(count.get(SESSION_2), 1);
481+
assert_eq!(diff.get(SESSION_2), 0);
482+
}
483+
}
484+
297485
#[derive(Debug, Clone, Copy)]
298486
pub enum RootType {
299487
RootTask,

0 commit comments

Comments
 (0)