Skip to content

Commit bf17086

Browse files
bors[bot]alygin
andauthored
Merge #843
843: Fix miri tests r=taiki-e a=alygin There were several changes in Miri recently, including [breaking ones](rust-lang/miri#2105) and affecting its speed. They caused CI builds failures. This fix makes the most expensive Miri tests less intensive, so they have decent execution time again. Co-authored-by: Andrew Lygin <[email protected]>
2 parents 78b7ac3 + 48063d3 commit bf17086

File tree

11 files changed

+76
-54
lines changed

11 files changed

+76
-54
lines changed

ci/miri.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ MIRIFLAGS="-Zmiri-check-number-validity -Zmiri-symbolic-alignment-check -Zmiri-d
2424

2525
# -Zmiri-ignore-leaks is needed for https://github.com/crossbeam-rs/crossbeam/issues/579
2626
# -Zmiri-disable-stacked-borrows is needed for https://github.com/crossbeam-rs/crossbeam/issues/545
27-
MIRIFLAGS="-Zmiri-check-number-validity -Zmiri-symbolic-alignment-check -Zmiri-disable-stacked-borrows -Zmiri-ignore-leaks -Zmiri-compare-exchange-weak-failure-rate=1.0" \
27+
MIRIFLAGS="-Zmiri-check-number-validity -Zmiri-symbolic-alignment-check -Zmiri-disable-stacked-borrows -Zmiri-ignore-leaks -Zmiri-compare-exchange-weak-failure-rate=0.0" \
2828
cargo miri test \
2929
-p crossbeam-deque
3030

crossbeam-channel/tests/array.rs

+5-5
Original file line numberDiff line numberDiff line change
@@ -253,11 +253,11 @@ fn recv_after_disconnect() {
253253
#[test]
254254
fn len() {
255255
#[cfg(miri)]
256-
const COUNT: usize = 250;
256+
const COUNT: usize = 50;
257257
#[cfg(not(miri))]
258258
const COUNT: usize = 25_000;
259259
#[cfg(miri)]
260-
const CAP: usize = 100;
260+
const CAP: usize = 50;
261261
#[cfg(not(miri))]
262262
const CAP: usize = 1000;
263263

@@ -500,11 +500,11 @@ fn stress_timeout_two_threads() {
500500
#[test]
501501
fn drops() {
502502
#[cfg(miri)]
503-
const RUNS: usize = 20;
503+
const RUNS: usize = 10;
504504
#[cfg(not(miri))]
505505
const RUNS: usize = 100;
506506
#[cfg(miri)]
507-
const STEPS: usize = 500;
507+
const STEPS: usize = 100;
508508
#[cfg(not(miri))]
509509
const STEPS: usize = 10_000;
510510

@@ -561,7 +561,7 @@ fn drops() {
561561
#[test]
562562
fn linearizable() {
563563
#[cfg(miri)]
564-
const COUNT: usize = 100;
564+
const COUNT: usize = 50;
565565
#[cfg(not(miri))]
566566
const COUNT: usize = 25_000;
567567
const THREADS: usize = 4;

crossbeam-channel/tests/golang.rs

+16-10
Original file line numberDiff line numberDiff line change
@@ -728,7 +728,7 @@ mod select2 {
728728
use super::*;
729729

730730
#[cfg(miri)]
731-
const N: i32 = 1000;
731+
const N: i32 = 200;
732732
#[cfg(not(miri))]
733733
const N: i32 = 100000;
734734

@@ -923,6 +923,9 @@ mod sieve1 {
923923
2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83,
924924
89, 97,
925925
];
926+
#[cfg(miri)]
927+
let a = &a[..10];
928+
926929
for item in a.iter() {
927930
let x = primes.recv().unwrap();
928931
if x != *item {
@@ -960,6 +963,11 @@ mod chan_test {
960963
#[cfg(not(miri))]
961964
const N: i32 = 200;
962965

966+
#[cfg(miri)]
967+
const MESSAGES_COUNT: i32 = 20;
968+
#[cfg(not(miri))]
969+
const MESSAGES_COUNT: i32 = 100;
970+
963971
for cap in 0..N {
964972
{
965973
// Ensure that receive from empty chan blocks.
@@ -1066,27 +1074,27 @@ mod chan_test {
10661074
}
10671075

10681076
{
1069-
// Send 100 integers,
1077+
// Send many integers,
10701078
// ensure that we receive them non-corrupted in FIFO order.
10711079
let c = make::<i32>(cap as usize);
10721080
go!(c, {
1073-
for i in 0..100 {
1081+
for i in 0..MESSAGES_COUNT {
10741082
c.send(i);
10751083
}
10761084
});
1077-
for i in 0..100 {
1085+
for i in 0..MESSAGES_COUNT {
10781086
if c.recv() != Some(i) {
10791087
panic!();
10801088
}
10811089
}
10821090

10831091
// Same, but using recv2.
10841092
go!(c, {
1085-
for i in 0..100 {
1093+
for i in 0..MESSAGES_COUNT {
10861094
c.send(i);
10871095
}
10881096
});
1089-
for i in 0..100 {
1097+
for i in 0..MESSAGES_COUNT {
10901098
if c.recv() != Some(i) {
10911099
panic!();
10921100
}
@@ -1572,14 +1580,12 @@ mod race_chan_test {
15721580
}
15731581

15741582
// https://github.com/golang/go/blob/master/test/ken/chan.go
1583+
#[cfg(not(miri))] // Miri is too slow
15751584
mod chan {
15761585

15771586
use super::*;
15781587

1579-
#[cfg(not(miri))]
15801588
const MESSAGES_PER_CHANEL: u32 = 76;
1581-
#[cfg(miri)]
1582-
const MESSAGES_PER_CHANEL: u32 = 2; // Miri is too slow on these tests
15831589
const MESSAGES_RANGE_LEN: u32 = 100;
15841590
const END: i32 = 10000;
15851591

@@ -2080,7 +2086,7 @@ mod chan1 {
20802086

20812087
// sent messages
20822088
#[cfg(miri)]
2083-
const N: usize = 100;
2089+
const N: usize = 20;
20842090
#[cfg(not(miri))]
20852091
const N: usize = 1000;
20862092
// receiving "goroutines"

crossbeam-channel/tests/list.rs

+20-5
Original file line numberDiff line numberDiff line change
@@ -132,8 +132,13 @@ fn recv_timeout() {
132132

133133
#[test]
134134
fn try_send() {
135+
#[cfg(miri)]
136+
const COUNT: usize = 50;
137+
#[cfg(not(miri))]
138+
const COUNT: usize = 1000;
139+
135140
let (s, r) = unbounded();
136-
for i in 0..1000 {
141+
for i in 0..COUNT {
137142
assert_eq!(s.try_send(i), Ok(()));
138143
}
139144

@@ -143,8 +148,13 @@ fn try_send() {
143148

144149
#[test]
145150
fn send() {
151+
#[cfg(miri)]
152+
const COUNT: usize = 50;
153+
#[cfg(not(miri))]
154+
const COUNT: usize = 1000;
155+
146156
let (s, r) = unbounded();
147-
for i in 0..1000 {
157+
for i in 0..COUNT {
148158
assert_eq!(s.send(i), Ok(()));
149159
}
150160

@@ -154,8 +164,13 @@ fn send() {
154164

155165
#[test]
156166
fn send_timeout() {
167+
#[cfg(miri)]
168+
const COUNT: usize = 50;
169+
#[cfg(not(miri))]
170+
const COUNT: usize = 1000;
171+
157172
let (s, r) = unbounded();
158-
for i in 0..1000 {
173+
for i in 0..COUNT {
159174
assert_eq!(s.send_timeout(i, ms(i as u64)), Ok(()));
160175
}
161176

@@ -390,7 +405,7 @@ fn drops() {
390405
#[cfg(not(miri))]
391406
const RUNS: usize = 100;
392407
#[cfg(miri)]
393-
const STEPS: usize = 500;
408+
const STEPS: usize = 100;
394409
#[cfg(not(miri))]
395410
const STEPS: usize = 10_000;
396411

@@ -409,7 +424,7 @@ fn drops() {
409424

410425
for _ in 0..RUNS {
411426
let steps = rng.gen_range(0..STEPS);
412-
let additional = rng.gen_range(0..1000);
427+
let additional = rng.gen_range(0..STEPS / 10);
413428

414429
DROPS.store(0, Ordering::SeqCst);
415430
let (s, r) = unbounded::<DropCounter>();

crossbeam-channel/tests/mpsc.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -321,7 +321,7 @@ mod channel_tests {
321321
#[test]
322322
fn stress() {
323323
#[cfg(miri)]
324-
const COUNT: usize = 500;
324+
const COUNT: usize = 100;
325325
#[cfg(not(miri))]
326326
const COUNT: usize = 10000;
327327

@@ -340,7 +340,7 @@ mod channel_tests {
340340
#[test]
341341
fn stress_shared() {
342342
#[cfg(miri)]
343-
const AMT: u32 = 500;
343+
const AMT: u32 = 100;
344344
#[cfg(not(miri))]
345345
const AMT: u32 = 10000;
346346
const NTHREADS: u32 = 8;
@@ -747,7 +747,7 @@ mod channel_tests {
747747
#[test]
748748
fn recv_a_lot() {
749749
#[cfg(miri)]
750-
const N: usize = 100;
750+
const N: usize = 50;
751751
#[cfg(not(miri))]
752752
const N: usize = 10000;
753753

crossbeam-channel/tests/select.rs

+8-8
Original file line numberDiff line numberDiff line change
@@ -694,7 +694,7 @@ fn nesting() {
694694
#[test]
695695
fn stress_recv() {
696696
#[cfg(miri)]
697-
const COUNT: usize = 100;
697+
const COUNT: usize = 50;
698698
#[cfg(not(miri))]
699699
const COUNT: usize = 10_000;
700700

@@ -735,7 +735,7 @@ fn stress_recv() {
735735
#[test]
736736
fn stress_send() {
737737
#[cfg(miri)]
738-
const COUNT: usize = 100;
738+
const COUNT: usize = 50;
739739
#[cfg(not(miri))]
740740
const COUNT: usize = 10_000;
741741

@@ -953,7 +953,7 @@ fn matching_with_leftover() {
953953
#[test]
954954
fn channel_through_channel() {
955955
#[cfg(miri)]
956-
const COUNT: usize = 100;
956+
const COUNT: usize = 50;
957957
#[cfg(not(miri))]
958958
const COUNT: usize = 1000;
959959

@@ -1014,7 +1014,7 @@ fn channel_through_channel() {
10141014
#[test]
10151015
fn linearizable_try() {
10161016
#[cfg(miri)]
1017-
const COUNT: usize = 100;
1017+
const COUNT: usize = 50;
10181018
#[cfg(not(miri))]
10191019
const COUNT: usize = 100_000;
10201020

@@ -1069,7 +1069,7 @@ fn linearizable_try() {
10691069
#[test]
10701070
fn linearizable_timeout() {
10711071
#[cfg(miri)]
1072-
const COUNT: usize = 100;
1072+
const COUNT: usize = 50;
10731073
#[cfg(not(miri))]
10741074
const COUNT: usize = 100_000;
10751075

@@ -1124,7 +1124,7 @@ fn linearizable_timeout() {
11241124
#[test]
11251125
fn fairness1() {
11261126
#[cfg(miri)]
1127-
const COUNT: usize = 100;
1127+
const COUNT: usize = 50;
11281128
#[cfg(not(miri))]
11291129
const COUNT: usize = 10_000;
11301130

@@ -1173,7 +1173,7 @@ fn fairness1() {
11731173
#[test]
11741174
fn fairness2() {
11751175
#[cfg(miri)]
1176-
const COUNT: usize = 100;
1176+
const COUNT: usize = 50;
11771177
#[cfg(not(miri))]
11781178
const COUNT: usize = 10_000;
11791179

@@ -1292,7 +1292,7 @@ fn send_and_clone() {
12921292
#[test]
12931293
fn reuse() {
12941294
#[cfg(miri)]
1295-
const COUNT: usize = 100;
1295+
const COUNT: usize = 50;
12961296
#[cfg(not(miri))]
12971297
const COUNT: usize = 10_000;
12981298

crossbeam-channel/tests/select_macro.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -488,7 +488,7 @@ fn panic_receiver() {
488488
#[test]
489489
fn stress_recv() {
490490
#[cfg(miri)]
491-
const COUNT: usize = 100;
491+
const COUNT: usize = 50;
492492
#[cfg(not(miri))]
493493
const COUNT: usize = 10_000;
494494

crossbeam-channel/tests/zero.rs

+7-7
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ fn send_timeout() {
188188
#[test]
189189
fn len() {
190190
#[cfg(miri)]
191-
const COUNT: usize = 100;
191+
const COUNT: usize = 50;
192192
#[cfg(not(miri))]
193193
const COUNT: usize = 25_000;
194194

@@ -253,7 +253,7 @@ fn disconnect_wakes_receiver() {
253253
#[test]
254254
fn spsc() {
255255
#[cfg(miri)]
256-
const COUNT: usize = 100;
256+
const COUNT: usize = 50;
257257
#[cfg(not(miri))]
258258
const COUNT: usize = 100_000;
259259

@@ -278,7 +278,7 @@ fn spsc() {
278278
#[test]
279279
fn mpmc() {
280280
#[cfg(miri)]
281-
const COUNT: usize = 100;
281+
const COUNT: usize = 50;
282282
#[cfg(not(miri))]
283283
const COUNT: usize = 25_000;
284284
const THREADS: usize = 4;
@@ -313,7 +313,7 @@ fn mpmc() {
313313
#[test]
314314
fn stress_oneshot() {
315315
#[cfg(miri)]
316-
const COUNT: usize = 100;
316+
const COUNT: usize = 50;
317317
#[cfg(not(miri))]
318318
const COUNT: usize = 10_000;
319319

@@ -451,7 +451,7 @@ fn drops() {
451451
#[test]
452452
fn fairness() {
453453
#[cfg(miri)]
454-
const COUNT: usize = 100;
454+
const COUNT: usize = 50;
455455
#[cfg(not(miri))]
456456
const COUNT: usize = 10_000;
457457

@@ -485,7 +485,7 @@ fn fairness() {
485485
#[test]
486486
fn fairness_duplicates() {
487487
#[cfg(miri)]
488-
const COUNT: usize = 100;
488+
const COUNT: usize = 50;
489489
#[cfg(not(miri))]
490490
const COUNT: usize = 10_000;
491491

@@ -546,7 +546,7 @@ fn recv_in_send() {
546546
#[test]
547547
fn channel_through_channel() {
548548
#[cfg(miri)]
549-
const COUNT: usize = 100;
549+
const COUNT: usize = 50;
550550
#[cfg(not(miri))]
551551
const COUNT: usize = 1000;
552552

0 commit comments

Comments
 (0)