Improve smoke-test.rs

This commit is contained in:
Jacob Hoffman-Andrews
2020-12-01 23:09:59 -08:00
committed by Martin Algesten
parent 814b10ceaf
commit 5a55f94101

View File

@@ -47,28 +47,23 @@ fn get_and_write(agent: &ureq::Agent, url: &str) {
} }
} }
use ureq::Error::{Status, Transport};
fn get_response(agent: &ureq::Agent, url: &str) -> result::Result<Response, ureq::Error> { fn get_response(agent: &ureq::Agent, url: &str) -> result::Result<Response, ureq::Error> {
let fetch = || agent.get(url).call(); let fetch = || agent.get(url).call();
let mut result = fetch();
for _ in 1..4 { for _ in 1..4 {
let err = match result { match fetch() {
Ok(r) => return Ok(r), Err(Status(429, r)) => {
Err(e) => e,
};
match err {
ureq::Error::Status(429, r) => {
let retry: Option<u64> = r.header("retry-after").and_then(|h| h.parse().ok()); let retry: Option<u64> = r.header("retry-after").and_then(|h| h.parse().ok());
eprintln!("429 for {}, retrying in {}", r.status(), r.get_url()); eprintln!("429 for {}, retrying in {}", r.status(), r.get_url());
thread::sleep(Duration::from_secs(retry.unwrap_or(5))); thread::sleep(Duration::from_secs(retry.unwrap_or(5)));
eprintln!("error status {} body {}", r.status(), r.into_string()?); eprintln!("error status {} body {}", r.status(), r.into_string()?);
} }
ureq::Error::Status(_, r) => return Err(r.into()), result => return result,
ureq::Error::Transport(e) => return Err(e.into()),
}; };
result = fetch();
} }
println!("Failed after 5 tries: {:?}", &result); // Last try, return success or failure regardless of status code.
result fetch()
} }
fn get_many(urls: Vec<String>, simultaneous_fetches: usize) -> Result<(), Oops> { fn get_many(urls: Vec<String>, simultaneous_fetches: usize) -> Result<(), Oops> {