diff --git a/Cargo.lock b/Cargo.lock index a7f756d49d8448c51d8f976879efa844c921b9b6..bdb42799dcb33c483d9a2eda2231fd259ce43134 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -28,9 +28,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.77" +version = "1.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9d19de80eff169429ac1e9f48fffb163916b448a44e8e046186232046d9e1f9" +checksum = "080e9890a082662b09c1ad45f567faeeb47f22b5fb23895fbe1e651e718e25ca" [[package]] name = "autocfg" @@ -182,20 +182,14 @@ dependencies = [ [[package]] name = "deranged" -version = "0.3.10" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eb30d70a07a3b04884d2677f06bec33509dc67ca60d92949e5535352d3191dc" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" dependencies = [ "powerfmt", "serde", ] -[[package]] -name = "dotenv" -version = "0.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77c90badedccf4105eca100756a0b1289e191f6fcbdadd3cee1d2f614f97da8f" - [[package]] name = "either" version = "1.9.0" @@ -220,7 +214,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.46", ] [[package]] @@ -240,7 +234,7 @@ checksum = "eecf8589574ce9b895052fa12d69af7a233f99e6107f5cb8dd1044f2a17bfdcb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.46", ] [[package]] @@ -651,7 +645,6 @@ dependencies = [ name = "mquery" version = "0.6.0" dependencies = [ - "dotenv", "enum-as-inner", "mquery-macros", "prometheus-http-query", @@ -746,7 +739,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.46", ] [[package]] @@ -833,18 +826,18 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.71" +version = "1.0.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75cb1540fadbd5b8fbccc4dddad2734eba435053f725621c070711a14bb5f4b8" +checksum = "2de98502f212cfcea8d0bb305bd0f49d7ebdd75b64ba0a68f937d888f4e0d6db" dependencies = [ "unicode-ident", ] [[package]] name = "prometheus-http-query" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5064f9bd466079eb96e7e8a920506c26053a040ee0a388c8f8e9280a50f5599a" +checksum = "e0de773a6ba25c9164ed9d86d653a92fac759a6f0e683fd141d56bb96e80fd8b" dependencies = [ "enum-as-inner", "mime", @@ -869,9 +862,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.33" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" dependencies = [ "proc-macro2", ] @@ -1052,29 +1045,29 @@ checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" [[package]] name = "serde" -version = "1.0.193" +version = "1.0.194" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89" +checksum = "0b114498256798c94a0689e1a15fec6005dee8ac1f41de56404b67afc2a4b773" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.193" +version = "1.0.194" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" +checksum = "a3385e45322e8f9931410f01b3031ec534c3947d0e94c18049af4d9f9907d4e0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.46", ] [[package]] name = "serde_json" -version = "1.0.108" +version = "1.0.110" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b" +checksum = "6fbd975230bada99c8bb618e0c365c2eefa219158d5c6c29610fd09ff1833257" dependencies = [ "itoa", "ryu", @@ -1143,9 +1136,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.43" +version = "2.0.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee659fb5f3d355364e1f3e5bc10fb82068efbf824a1e9d1c9504244a6469ad53" +checksum = "89456b690ff72fddcecf231caedbe615c59480c93358a93dfae7fc29e3ebbf0e" dependencies = [ "proc-macro2", "quote", @@ -1188,22 +1181,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.52" +version = "1.0.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83a48fd946b02c0a526b2e9481c8e2a17755e47039164a86c4070446e3a4614d" +checksum = "d54378c645627613241d077a3a79db965db602882668f9136ac42af9ecb730ad" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.52" +version = "1.0.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7fbe9b594d6568a6a1443250a7e67d80b74e1e96f6d1715e1e21cc1888291d3" +checksum = "fa0faa943b50f3db30a20aa7e265dbc66076993efed8463e8de414e5d06d3471" dependencies = [ "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.46", ] [[package]] @@ -1275,7 +1268,7 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.46", ] [[package]] @@ -1455,7 +1448,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.46", "wasm-bindgen-shared", ] @@ -1489,7 +1482,7 @@ checksum = "f0eb82fcb7930ae6219a7ecfd55b217f5f0893484b7a13022ebb2b2bf20b5283" dependencies = [ "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.46", "wasm-bindgen-backend", "wasm-bindgen-shared", ] diff --git a/Cargo.toml b/Cargo.toml index f217bab2f0dbbb6ee30719435c903e4ee886a485..6dc49db85c3d22580ac5c876009fa23e899258cb 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -24,5 +24,4 @@ macros = ["dep:mquery-macros"] multi = ["dep:tokio"] [dev-dependencies] -tokio = { version = "1.34.0", default-features = false, features = ["rt", "rt-multi-thread", "macros"]} -dotenv = "*" +tokio = { version = "1.34.0", default-features = false, features = ["macros", "rt-multi-thread"]} diff --git a/JustFile b/JustFile new file mode 100644 index 0000000000000000000000000000000000000000..72d06ce83892a2f4c7e7bc4347c24c38af52cb53 --- /dev/null +++ b/JustFile @@ -0,0 +1,7 @@ +# Run all tests (integration + unit) +test: + victoriametrics 2> /dev/null & + cargo test --all-features + pkill victoriametrics + sleep 1 + rm -rf ./victoria-metrics-data diff --git a/README.md b/README.md index f2e4e5833ebcef0f1995e619f42ba02814134479..d85d1880a341f0e98c80c95f97fc38954f9121fb 100644 --- a/README.md +++ b/README.md @@ -15,12 +15,14 @@ The library internally uses `prometheus-http-query` crate. As the name suggests, ## Usage Example ```rust use mquery::{ - macros::promql, query::{fns::aggregate::sum, Metric}, result::Error, Auth, Method, QueryManager, }; +#[cfg(feature = "macros")] +use mquery::macros::promql; + const TOKEN: &str = ""; #[tokio::main] @@ -34,14 +36,14 @@ async fn main() -> Result<(), Error> { .method(Method::Post); // Default is `GET` // Compile time checked queries + #[cfg(feature = "macros")] let checked_qry = promql!(sum(metric_name{label="value",label2!="value2"})); - let _response = manager.query(checked_qry).await?; // Query builder API let typed_query = sum(Metric::new("metric_name") .label_eq("label", "value") .label_ne("label2", "value2")); - let _response = manager.query(typed_query).await?; + let _response = manager.query(typed_query).await; Ok(()) } diff --git a/tests/api.rs b/tests/api.rs index a11d85360b4433952fc62e643779796773a7e066..db6f2bc3998ef85215aa167025f807b9776847c0 100644 --- a/tests/api.rs +++ b/tests/api.rs @@ -1,26 +1,15 @@ use mquery::{ query::{self, Metric}, - Auth, QueryManager, + QueryManager, }; -use tokio::runtime::Runtime; mod utils; -// TODO: Create proper tests with local server -#[test] -fn deserialize_response() { - let (url, token) = get_url_token(); - let rt = Runtime::new().unwrap(); - let query = format!( - "sum(M40c82231{{uuid=\"{}\"}}[10d])", - "1bed9384-5d24-11e3-abe4-2d513ee73a00" - ); - let _ = rt - .block_on( - QueryManager::new(url.parse().unwrap()) - .auth(Auth::Bearer(token)) - .query(query), - ) +#[tokio::test] +async fn deserialize_response() { + let _resp = QueryManager::new(utils::URL.parse().unwrap()) + .query("metric") + .await .unwrap(); } @@ -48,11 +37,3 @@ async fn raw_response() { .await .unwrap(); } - -fn get_url_token() -> (String, String) { - dotenv::dotenv().expect("No .env file found in working dir"); - ( - std::env::var("VM_URL").expect("VM URL not found in env"), - std::env::var("VM_TOKEN").expect("VM URL not found in env"), - ) -} diff --git a/tests/fns.rs b/tests/fns.rs index da305a8e3378014535d110d64e87c27a7e7f35fe..f63681a056bca6f17ebfaf0c1728b07992d38e4d 100644 --- a/tests/fns.rs +++ b/tests/fns.rs @@ -1,9 +1,12 @@ mod utils; use mquery::query::{ - fns::{aggregate, label, rollup, transform}, + fns::{self, aggregate, rollup, transform}, Duration, Metric, Unit, }; +#[cfg(feature = "metricsql")] +use fns::label; + macro_rules! rollup_tests { ($($fn_name:ident),+) => { $(#[tokio::test] @@ -24,6 +27,7 @@ macro_rules! aggr_tests { }; } +#[cfg(feature = "metricsql")] macro_rules! label_tests { ($($fn_name: tt),+) => { $(#[tokio::test] @@ -91,6 +95,7 @@ async fn quantile_over_time() { utils::send_query(query).await.unwrap(); } +#[cfg(feature = "metricsql")] #[tokio::test] async fn mql_label_map() { let query = label::mql_label_map( @@ -101,6 +106,7 @@ async fn mql_label_map() { utils::send_query(query).await.unwrap(); } +#[cfg(feature = "metricsql")] label_tests!( mql_sort_by_label, mql_sort_by_label_desc, @@ -110,12 +116,14 @@ label_tests!( transform_tests!(abs, absent, ceil, changes, delta, exp, floor, sort, sort_desc, sqrt); +#[cfg(feature = "metricsql")] #[tokio::test] async fn trans_limit_offset() { let query = transform::mql_limit_offset(1, 2, Metric::new("metric")).to_string(); utils::send_query(query).await.unwrap(); } +#[cfg(feature = "metricsql")] #[tokio::test] async fn trans_union() { let query = transform::mql_union(&[Metric::new("metric"), Metric::new("metric2")]).to_string(); diff --git a/tests/utils.rs b/tests/utils.rs index e686901e0bdb3f6f0d62e35b4217f3b5dd01760c..367cbd18ea21515f5b09f4fd0343fce788b37e31 100644 --- a/tests/utils.rs +++ b/tests/utils.rs @@ -3,6 +3,7 @@ use mquery::{query::IntoQuery, result::QryResult, QueryManager}; // local victoria metrics server pub static URL: &str = "http://localhost:8428"; +#[allow(unused)] pub async fn send_query(query: impl IntoQuery) -> QryResult { QueryManager::new(URL.parse().unwrap()).query(query).await }