Rollup merge of #71737 - RalfJung:miri-test-threads, r=shepmaster
Miri: run liballoc tests with threads Miri now supports threads, so we can run these tests. :)
This commit is contained in:
commit
2a1581c50c
@ -23,7 +23,7 @@ fn allocate_zeroed() {
|
||||
}
|
||||
|
||||
#[bench]
|
||||
#[cfg_attr(miri, ignore)] // Miri does not support benchmarks
|
||||
#[cfg_attr(miri, ignore)] // isolated Miri does not support benchmarks
|
||||
fn alloc_owned_small(b: &mut Bencher) {
|
||||
b.iter(|| {
|
||||
let _: Box<_> = box 10;
|
||||
|
@ -182,7 +182,6 @@ fn test_insert_prev() {
|
||||
|
||||
#[test]
|
||||
#[cfg_attr(target_os = "emscripten", ignore)]
|
||||
#[cfg_attr(miri, ignore)] // Miri does not support threads
|
||||
fn test_send() {
|
||||
let n = list_from(&[1, 2, 3]);
|
||||
thread::spawn(move || {
|
||||
|
@ -3,7 +3,7 @@ use super::*;
|
||||
use test;
|
||||
|
||||
#[bench]
|
||||
#[cfg_attr(miri, ignore)] // Miri does not support benchmarks
|
||||
#[cfg_attr(miri, ignore)] // isolated Miri does not support benchmarks
|
||||
fn bench_push_back_100(b: &mut test::Bencher) {
|
||||
let mut deq = VecDeque::with_capacity(101);
|
||||
b.iter(|| {
|
||||
@ -16,7 +16,7 @@ fn bench_push_back_100(b: &mut test::Bencher) {
|
||||
}
|
||||
|
||||
#[bench]
|
||||
#[cfg_attr(miri, ignore)] // Miri does not support benchmarks
|
||||
#[cfg_attr(miri, ignore)] // isolated Miri does not support benchmarks
|
||||
fn bench_push_front_100(b: &mut test::Bencher) {
|
||||
let mut deq = VecDeque::with_capacity(101);
|
||||
b.iter(|| {
|
||||
@ -29,7 +29,7 @@ fn bench_push_front_100(b: &mut test::Bencher) {
|
||||
}
|
||||
|
||||
#[bench]
|
||||
#[cfg_attr(miri, ignore)] // Miri does not support benchmarks
|
||||
#[cfg_attr(miri, ignore)] // isolated Miri does not support benchmarks
|
||||
fn bench_pop_back_100(b: &mut test::Bencher) {
|
||||
let mut deq = VecDeque::<i32>::with_capacity(101);
|
||||
|
||||
@ -43,7 +43,7 @@ fn bench_pop_back_100(b: &mut test::Bencher) {
|
||||
}
|
||||
|
||||
#[bench]
|
||||
#[cfg_attr(miri, ignore)] // Miri does not support benchmarks
|
||||
#[cfg_attr(miri, ignore)] // isolated Miri does not support benchmarks
|
||||
fn bench_pop_front_100(b: &mut test::Bencher) {
|
||||
let mut deq = VecDeque::<i32>::with_capacity(101);
|
||||
|
||||
|
@ -32,7 +32,6 @@ impl Drop for Canary {
|
||||
|
||||
#[test]
|
||||
#[cfg_attr(target_os = "emscripten", ignore)]
|
||||
#[cfg_attr(miri, ignore)] // Miri does not support threads
|
||||
fn manually_share_arc() {
|
||||
let v = vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
|
||||
let arc_v = Arc::new(v);
|
||||
@ -337,12 +336,13 @@ fn test_ptr_eq() {
|
||||
|
||||
#[test]
|
||||
#[cfg_attr(target_os = "emscripten", ignore)]
|
||||
#[cfg_attr(miri, ignore)] // Miri does not support threads
|
||||
fn test_weak_count_locked() {
|
||||
let mut a = Arc::new(atomic::AtomicBool::new(false));
|
||||
let a2 = a.clone();
|
||||
let t = thread::spawn(move || {
|
||||
for _i in 0..1000000 {
|
||||
// Miri is too slow
|
||||
let count = if cfg!(miri) { 1000 } else { 1000000 };
|
||||
for _i in 0..count {
|
||||
Arc::get_mut(&mut a);
|
||||
}
|
||||
a.store(true, SeqCst);
|
||||
@ -351,6 +351,8 @@ fn test_weak_count_locked() {
|
||||
while !a2.load(SeqCst) {
|
||||
let n = Arc::weak_count(&a2);
|
||||
assert!(n < 2, "bad weak count: {}", n);
|
||||
#[cfg(miri)] // Miri's scheduler does not guarantee liveness, and thus needs this hint.
|
||||
atomic::spin_loop_hint();
|
||||
}
|
||||
t.join().unwrap();
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user