mirror of
https://github.com/tokio-rs/tokio.git
synced 2026-08-22 00:00:11 +02:00
ci: fix spurious CI failure (#5752)
PR #5720 introduced runtime self-tuning. It included a test that attempts to verify self-tuning logic. The test is heavily reliant on timing details. This patch attempts to make the test a bit more reliable by not assuming tuning will converge within a set amount of time.
This commit is contained in:
@@ -294,7 +294,7 @@ jobs:
|
||||
toolchain: ${{ env.rust_nightly }}
|
||||
- uses: Swatinem/rust-cache@v2
|
||||
- name: asan
|
||||
run: cargo test --workspace --all-features --target x86_64-unknown-linux-gnu --tests -- --test-threads 1
|
||||
run: cargo test --workspace --all-features --target x86_64-unknown-linux-gnu --tests -- --test-threads 1 --nocapture
|
||||
env:
|
||||
RUSTFLAGS: -Z sanitizer=address
|
||||
# Ignore `trybuild` errors as they are irrelevant and flaky on nightly
|
||||
|
||||
@@ -627,7 +627,6 @@ fn test_tuning() {
|
||||
}
|
||||
|
||||
// Now, hammer the injection queue until the interval drops.
|
||||
let mut i = 0;
|
||||
let mut n = 0;
|
||||
loop {
|
||||
let curr = interval.load(Relaxed);
|
||||
@@ -645,18 +644,16 @@ fn test_tuning() {
|
||||
break;
|
||||
}
|
||||
|
||||
let counter = counter.clone();
|
||||
let interval = interval.clone();
|
||||
if Arc::strong_count(&interval) < 5_000 {
|
||||
let counter = counter.clone();
|
||||
let interval = interval.clone();
|
||||
|
||||
if i <= 5_000 {
|
||||
i += 1;
|
||||
rt.spawn(async move {
|
||||
let prev = counter.swap(0, Relaxed);
|
||||
interval.store(prev, Relaxed);
|
||||
});
|
||||
|
||||
std::thread::yield_now();
|
||||
} else {
|
||||
std::thread::sleep(Duration::from_micros(500));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -682,7 +679,6 @@ fn test_tuning() {
|
||||
}
|
||||
|
||||
// Now, hammer the injection queue until the interval reaches the expected range.
|
||||
let mut i = 0;
|
||||
let mut n = 0;
|
||||
loop {
|
||||
let curr = interval.load(Relaxed);
|
||||
@@ -697,20 +693,17 @@ fn test_tuning() {
|
||||
break;
|
||||
}
|
||||
|
||||
let counter = counter.clone();
|
||||
let interval = interval.clone();
|
||||
if Arc::strong_count(&interval) <= 5_000 {
|
||||
let counter = counter.clone();
|
||||
let interval = interval.clone();
|
||||
|
||||
if i <= 5_000 {
|
||||
i += 1;
|
||||
rt.spawn(async move {
|
||||
let prev = counter.swap(0, Relaxed);
|
||||
interval.store(prev, Relaxed);
|
||||
});
|
||||
|
||||
std::thread::yield_now();
|
||||
} else {
|
||||
std::thread::sleep(Duration::from_micros(500));
|
||||
}
|
||||
|
||||
std::thread::yield_now();
|
||||
}
|
||||
|
||||
flag.store(false, Relaxed);
|
||||
|
||||
Reference in New Issue
Block a user