summaryrefslogtreecommitdiff
path: root/src/main.rs
blob: 114d218ef3351669f22fbf648cd984bcc505ca6b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
use clap::Parser;

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    let args = Args::parse();
    let mut i = 0;
    let mut handles = vec![];
    while i < args.n {
        let url = args.url.clone();
        let x = tokio::spawn(async move { get(&url).await });
        handles.push(x);
        i += 1;
    }
    println!("{} handles", handles.len());
    for h in handles {
        let r = h.await?;
        if !r.status().is_success() {
            println!("{:?} {}", args.url, r.status());
        }
    }
    println!("OK");
    Ok(())
}

#[derive(Parser)]
struct Args {
    #[clap()]
    n: usize,

    #[clap()]
    url: String,
}

async fn get(url: &str) -> reqwest::Response {
    loop {
        if let Ok(r) = reqwest::get(url).await {
            return r;
        }
    }
}