1use scx_stats::prelude::*;
2use scx_stats_derive::Stats;
3use serde::{Deserialize, Serialize};
4use std::collections::BTreeMap;
5use std::env::args;
6
7include!("stats_defs.rs.h");
9
10fn main() {
11 simple_logger::SimpleLogger::new()
12 .with_level(log::LevelFilter::Info)
13 .env()
14 .init()
15 .unwrap();
16
17 std::assert_eq!(args().len(), 2, "Usage: client UNIX_SOCKET_PATH");
18 let path = args().nth(1).unwrap();
19
20 let mut client = StatsClient::new().set_path(path).connect().unwrap();
21
22 println!("===== Requesting \"stats_meta\":");
23 let resp = client.request::<BTreeMap<String, StatsMeta>>("stats_meta", vec![]);
24 println!("{:#?}", &resp);
25
26 println!("\n===== Requesting \"stats\" without arguments:");
27 let resp = client.request::<ClusterStats>("stats", vec![]);
28 println!("{:#?}", &resp);
29
30 println!("\n===== Requesting \"stats\" with \"target\"=\"non-existent\":");
31 let resp =
32 client.request::<ClusterStats>("stats", vec![("target".into(), "non-existent".into())]);
33 println!("{:#?}", &resp);
34
35 println!("\n===== Requesting \"stats\" with \"target\"=\"all\":");
36 let resp = client.request::<ClusterStats>("stats", vec![("target".into(), "top".into())]);
37 println!("{:#?}", &resp);
38
39 println!("\n===== Requesting \"stats\" but receiving with serde_json::Value:");
40 let resp = client.request::<serde_json::Value>("stats", vec![("target".into(), "top".into())]);
41 println!("{:#?}", &resp);
42
43 println!("\n===== Requesting \"stats_meta\" but receiving with serde_json::Value:");
44 let resp = client
45 .request::<serde_json::Value>("stats_meta", vec![])
46 .unwrap();
47 println!("{}", serde_json::to_string_pretty(&resp).unwrap());
48}