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:
Carl Lerche
2023-06-01 17:15:48 -07:00
committed by GitHub
parent a8b6353535
commit 1e14ef0093
2 changed files with 10 additions and 17 deletions
+1 -1
View File
@@ -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
+9 -16
View File
@@ -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);