web3-proxy/web3_proxy/tests/common/stats_accounting.rs
2023-08-01 12:09:24 -07:00

107 lines
3.0 KiB
Rust

use super::TestApp;
use serde_json::json;
use std::time::{SystemTime, UNIX_EPOCH};
use tracing::{info, trace};
use web3_proxy::frontend::users::authentication::LoginPostResponse;
/// Get the user stats accounting
/// Helper function to get the user's mysql (rpc_accounting_v2) stats
#[allow(unused)]
pub async fn user_get_mysql_stats(
x: &TestApp,
r: &reqwest::Client,
login_response: &LoginPostResponse,
) -> serde_json::Value {
let mysql_stats = format!("{}user/stats/accounting", x.proxy_provider.url());
let _stats_response = r
.get(mysql_stats)
.bearer_auth(login_response.bearer_token)
.send()
.await
.unwrap()
.error_for_status()
.unwrap();
trace!(
?_stats_response,
"get stats for user #{}",
login_response.user.id
);
assert_eq!(_stats_response.status(), 200);
let stats_response = _stats_response.json().await.unwrap();
info!("stats_response: {:#}", json!(&stats_response));
stats_response
}
/// Helper function to get the user's balance
#[allow(unused)]
pub async fn user_get_influx_stats_detailed(
x: &TestApp,
r: &reqwest::Client,
login_response: &LoginPostResponse,
) -> serde_json::Value {
let stats_detailed = format!("{}user/stats/detailed", x.proxy_provider.url());
let _stats_response = r
.get(stats_detailed)
.bearer_auth(login_response.bearer_token)
.send()
.await
.unwrap()
.error_for_status()
.unwrap();
info!(
?_stats_response,
"get stats for user #{}", login_response.user.id
);
assert_eq!(_stats_response.status(), 200);
let stats_response = _stats_response.json().await.unwrap();
info!("stats_response: {:#}", json!(&stats_response));
stats_response
}
#[allow(unused)]
pub async fn user_get_influx_stats_aggregated(
x: &TestApp,
r: &reqwest::Client,
login_response: &LoginPostResponse,
chain_id: u64,
) -> serde_json::Value {
let query_window_seconds = 300;
let chain_id = chain_id;
let start = SystemTime::now();
let query_start = start
.duration_since(UNIX_EPOCH)
.expect("Time went backwards")
.as_secs()
- 1200;
let stats_aggregated = format!(
"{}user/stats/aggregate?query_window_seconds={}&chain_id={}&query_start={}",
x.proxy_provider.url(),
query_window_seconds,
chain_id,
query_start
);
info!("Stats aggregated request is: {:?}", stats_aggregated);
info!("Sending queries to influx");
let _stats_response = r
.get(stats_aggregated)
.bearer_auth(login_response.bearer_token)
.send()
.await
.unwrap()
.error_for_status()
.unwrap();
info!(
?_stats_response,
"get stats for user #{}", login_response.user.id
);
assert_eq!(_stats_response.status(), 200);
let stats_response = _stats_response.json().await.unwrap();
info!("stats_response: {:#}", json!(&stats_response));
stats_response
}