use super::*;
async fn reqwest_send_error(url: &str) -> anyhow::Error {
let err = reqwest::Client::new()
.get(url)
.send()
.await
.expect_err("test url must fail to send");
anyhow::Error::from(err).context(format!("GET {url} failed"))
}
#[tokio::test]
async fn recognises_builder_error_as_permanent() {
let err = reqwest_send_error("not a url").await;
assert!(
is_permanent_scrape_error(&err),
"URL parse error must be classed as permanent: {err:#}"
);
}
#[tokio::test]
async fn does_not_class_connection_refused_as_permanent() {
let err = reqwest_send_error("http://127.0.0.1:1/metrics").await;
assert!(
!is_permanent_scrape_error(&err),
"connection refused must NOT be classed as permanent: {err:#}"
);
}
#[test]
fn recognises_permanent_status_tag_in_chain() {
let err = anyhow::anyhow!("GET http://h:9090/metrics returned HTTP 404 Not Found")
.context(PERMANENT_STATUS_TAG);
assert!(
is_permanent_scrape_error(&err),
"PERMANENT_STATUS_TAG must be recognised: {err:#}"
);
}
#[test]
fn does_not_class_unrelated_anyhow_as_permanent() {
let err = anyhow::anyhow!("something else went wrong");
assert!(
!is_permanent_scrape_error(&err),
"unrelated error must NOT be classed as permanent: {err:#}"
);
}