mirror of
https://github.com/gitui-org/gitui
synced 2026-05-23 17:08:21 +00:00
make async test even more resilient
This commit is contained in:
parent
2a2751bf2a
commit
e5688e3b8b
1 changed files with 13 additions and 10 deletions
|
|
@ -145,11 +145,9 @@ mod test {
|
|||
|
||||
impl AsyncJob for TestJob {
|
||||
fn run(&mut self) {
|
||||
self.finish.store(false, Ordering::Relaxed);
|
||||
|
||||
println!("[job] wait");
|
||||
|
||||
while self.finish.load(Ordering::Relaxed) {
|
||||
while !self.finish.load(Ordering::SeqCst) {
|
||||
std::thread::yield_now();
|
||||
}
|
||||
|
||||
|
|
@ -159,7 +157,10 @@ mod test {
|
|||
|
||||
println!("[job] done sleeping");
|
||||
|
||||
self.v.fetch_add(self.value_to_add, Ordering::Relaxed);
|
||||
let res =
|
||||
self.v.fetch_add(self.value_to_add, Ordering::SeqCst);
|
||||
|
||||
println!("[job] value: {}", res);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -179,6 +180,7 @@ mod test {
|
|||
};
|
||||
|
||||
assert!(job.spawn(task.clone()));
|
||||
task.finish.store(true, Ordering::SeqCst);
|
||||
thread::sleep(Duration::from_millis(10));
|
||||
|
||||
for _ in 0..5 {
|
||||
|
|
@ -186,14 +188,13 @@ mod test {
|
|||
assert!(!job.spawn(task.clone()));
|
||||
}
|
||||
|
||||
task.finish.store(true, Ordering::Relaxed);
|
||||
|
||||
println!("recv");
|
||||
let _foo = receiver.recv().unwrap();
|
||||
let _foo = receiver.recv().unwrap();
|
||||
assert!(receiver.is_empty());
|
||||
|
||||
assert_eq!(
|
||||
task.v.load(std::sync::atomic::Ordering::Relaxed),
|
||||
task.v.load(std::sync::atomic::Ordering::SeqCst),
|
||||
3
|
||||
);
|
||||
}
|
||||
|
|
@ -218,7 +219,7 @@ mod test {
|
|||
};
|
||||
|
||||
assert!(job.spawn(task.clone()));
|
||||
task.finish.store(true, Ordering::Relaxed);
|
||||
task.finish.store(true, Ordering::SeqCst);
|
||||
thread::sleep(Duration::from_millis(10));
|
||||
|
||||
for _ in 0..5 {
|
||||
|
|
@ -229,14 +230,16 @@ mod test {
|
|||
println!("cancel");
|
||||
assert!(job.cancel());
|
||||
|
||||
task.finish.store(true, Ordering::Relaxed);
|
||||
task.finish.store(true, Ordering::SeqCst);
|
||||
|
||||
wait_for_job(&job);
|
||||
|
||||
println!("recv");
|
||||
let _foo = receiver.recv().unwrap();
|
||||
println!("received");
|
||||
|
||||
assert_eq!(
|
||||
task.v.load(std::sync::atomic::Ordering::Relaxed),
|
||||
task.v.load(std::sync::atomic::Ordering::SeqCst),
|
||||
2
|
||||
);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue