test(tvix/castore): use tokio-retry for exp backoff

Rather than using this loop, use exponential backoff while waiting for
the socket path to be created.

Change-Id: I18706a64ce06f8916a07892dfbcd409ac5b3bff1
Reviewed-on: https://cl.tvl.fyi/c/depot/+/9568
Autosubmit: flokli <flokli@flokli.de>
Reviewed-by: Connor Brewster <cbrewster@hey.com>
Tested-by: BuildkiteCI
This commit is contained in:
Florian Klink 2023-10-08 13:33:43 +02:00 committed by clbot
parent c0376995c9
commit b6bf3a87f1
4 changed files with 63 additions and 16 deletions

View file

@ -34,7 +34,8 @@ tonic-build = "0.10.2"
[dev-dependencies]
test-case = "2.2.2"
tempfile = "3.3.0"
tokio-retry = "0.3.0"
[features]
default = []
tonic-reflection = ["dep:tonic-reflection"]
tonic-reflection = ["dep:tonic-reflection"]

View file

@ -281,10 +281,12 @@ impl<W: tokio::io::AsyncWrite + Unpin> tokio::io::AsyncWrite for GRPCBlobWriter<
#[cfg(test)]
mod tests {
use std::sync::Arc;
use std::time::Duration;
use tempfile::TempDir;
use tokio::net::UnixListener;
use tokio::time;
use tokio_retry::strategy::ExponentialBackoff;
use tokio_retry::Retry;
use tokio_stream::wrappers::UnixListenerStream;
use crate::blobservice::MemoryBlobService;
@ -374,22 +376,18 @@ mod tests {
});
// wait for the socket to be created
{
let mut socket_created = false;
// TODO: exponential backoff urgently
for _try in 1..20 {
Retry::spawn(
ExponentialBackoff::from_millis(20).max_delay(Duration::from_secs(10)),
|| async {
if socket_path.exists() {
socket_created = true;
break;
Ok(())
} else {
Err(())
}
tokio::time::sleep(time::Duration::from_millis(20)).await;
}
assert!(
socket_created,
"expected socket path to eventually get created, but never happened"
);
}
},
)
.await
.expect("failed to wait for socket");
// prepare a client
let grpc_client = {