prometheus_exporter 0.8.5

Helper libary to export prometheus metrics using tiny-http.
Documentation
use crate::prometheus::register_counter;

#[test]
fn wait_request() {
    let binding_raw = "127.0.0.1:9185";
    let metric_name = "test_wait_request";

    let barrier = std::sync::Arc::new(std::sync::Barrier::new(2));

    {
        let barrier = barrier.clone();

        std::thread::spawn(move || {
            println!("client barrier");
            barrier.wait();

            reqwest::blocking::get(&format!("http://{}", binding_raw))
                .expect("can not make request");
        });
    }

    let binding = binding_raw.parse().expect("can not parse binding");
    let exporter = crate::start(binding).expect("can not start exporter");

    let counter = register_counter!(metric_name, "help").unwrap();

    barrier.wait();

    let guard = exporter.wait_request();
    counter.inc();
    drop(guard);

    let body = reqwest::blocking::get(&format!("http://{}", binding_raw))
        .expect("can not make request")
        .text()
        .expect("can not extract body");

    println!("body:\n{}", body);

    assert!(body.contains(&format!("{} 1", metric_name)));
}

#[test]
fn wait_duration() {
    let binding_raw = "127.0.0.1:9186";
    let metric_name = "test_wait_duration_counter";

    let binding = binding_raw.parse().expect("can not parse binding");
    let exporter = crate::start(binding).expect("can not start exporter");

    let counter = register_counter!(metric_name, "help").unwrap();

    let guard = exporter.wait_duration(std::time::Duration::from_millis(100));
    counter.inc();
    drop(guard);

    let body = reqwest::blocking::get(&format!("http://{}", binding_raw))
        .expect("can not make request")
        .text()
        .expect("can not extract body");

    println!("body:\n{}", body);

    assert!(body.contains(&format!("{} 1", metric_name)));
}