Skip to content

Commit e5688e3

Browse files
author
Stephan Dilly
committed
make async test even more resilient
1 parent 2a2751b commit e5688e3

File tree

1 file changed

+13
-10
lines changed

1 file changed

+13
-10
lines changed

asyncgit/src/asyncjob/mod.rs

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -145,11 +145,9 @@ mod test {
145145

146146
impl AsyncJob for TestJob {
147147
fn run(&mut self) {
148-
self.finish.store(false, Ordering::Relaxed);
149-
150148
println!("[job] wait");
151149

152-
while self.finish.load(Ordering::Relaxed) {
150+
while !self.finish.load(Ordering::SeqCst) {
153151
std::thread::yield_now();
154152
}
155153

@@ -159,7 +157,10 @@ mod test {
159157

160158
println!("[job] done sleeping");
161159

162-
self.v.fetch_add(self.value_to_add, Ordering::Relaxed);
160+
let res =
161+
self.v.fetch_add(self.value_to_add, Ordering::SeqCst);
162+
163+
println!("[job] value: {}", res);
163164
}
164165
}
165166

@@ -179,21 +180,21 @@ mod test {
179180
};
180181

181182
assert!(job.spawn(task.clone()));
183+
task.finish.store(true, Ordering::SeqCst);
182184
thread::sleep(Duration::from_millis(10));
183185

184186
for _ in 0..5 {
185187
println!("spawn");
186188
assert!(!job.spawn(task.clone()));
187189
}
188190

189-
task.finish.store(true, Ordering::Relaxed);
190-
191+
println!("recv");
191192
let _foo = receiver.recv().unwrap();
192193
let _foo = receiver.recv().unwrap();
193194
assert!(receiver.is_empty());
194195

195196
assert_eq!(
196-
task.v.load(std::sync::atomic::Ordering::Relaxed),
197+
task.v.load(std::sync::atomic::Ordering::SeqCst),
197198
3
198199
);
199200
}
@@ -218,7 +219,7 @@ mod test {
218219
};
219220

220221
assert!(job.spawn(task.clone()));
221-
task.finish.store(true, Ordering::Relaxed);
222+
task.finish.store(true, Ordering::SeqCst);
222223
thread::sleep(Duration::from_millis(10));
223224

224225
for _ in 0..5 {
@@ -229,14 +230,16 @@ mod test {
229230
println!("cancel");
230231
assert!(job.cancel());
231232

232-
task.finish.store(true, Ordering::Relaxed);
233+
task.finish.store(true, Ordering::SeqCst);
233234

234235
wait_for_job(&job);
235236

237+
println!("recv");
236238
let _foo = receiver.recv().unwrap();
239+
println!("received");
237240

238241
assert_eq!(
239-
task.v.load(std::sync::atomic::Ordering::Relaxed),
242+
task.v.load(std::sync::atomic::Ordering::SeqCst),
240243
2
241244
);
242245
}

0 commit comments

Comments
 (0)