1use histogram::SparseHistogram;
4use serde::{Deserialize, Serialize};
5
6#[derive(Default, Deserialize, Serialize)]
7#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
8#[cfg_attr(feature = "utoipa", schema(as = rpcperf_dataspec::Connections))]
9pub struct Connections {
10 pub current: i64,
12 pub total: u64,
14 pub opened: u64,
16 pub error: u64,
18 pub timeout: u64,
20}
21
22#[derive(Default, Deserialize, Serialize)]
23#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
24#[cfg_attr(feature = "utoipa", schema(as = rpcperf_dataspec::Requests))]
25pub struct Requests {
26 pub total: u64,
27 pub ok: u64,
28 pub reconnect: u64,
29 pub unsupported: u64,
30}
31
32#[derive(Default, Deserialize, Serialize)]
33#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
34#[cfg_attr(feature = "utoipa", schema(as = rpcperf_dataspec::Responses))]
35pub struct Responses {
36 pub total: u64,
38 pub ok: u64,
40 pub error: u64,
42 pub timeout: u64,
44 pub hit: u64,
46 pub miss: u64,
48}
49
50#[derive(Default, Deserialize, Serialize)]
51#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
52#[cfg_attr(feature = "utoipa", schema(as = rpcperf_dataspec::ClientStats))]
53pub struct ClientStats {
54 pub connections: Connections,
55 pub requests: Requests,
56 pub responses: Responses,
57 #[serde(skip_serializing_if = "Option::is_none")]
58 pub response_latency: Option<SparseHistogram>,
59}
60
61#[derive(Default, Deserialize, Serialize)]
62#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
63#[cfg_attr(feature = "utoipa", schema(as = rpcperf_dataspec::PubsubStats))]
64pub struct PubsubStats {
65 pub publishers: Publishers,
66 pub subscribers: Subscribers,
67}
68
69#[derive(Default, Deserialize, Serialize)]
70#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
71#[cfg_attr(feature = "utoipa", schema(as = rpcperf_dataspec::Publishers))]
72pub struct Publishers {
73 pub current: i64,
75}
76
77#[derive(Default, Deserialize, Serialize)]
78#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
79#[cfg_attr(feature = "utoipa", schema(as = rpcperf_dataspec::Subscribers))]
80pub struct Subscribers {
81 pub current: i64,
83}
84
85#[derive(Default, Deserialize, Serialize)]
86#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
87#[cfg_attr(feature = "utoipa", schema(as = rpcperf_dataspec::JsonSnapshot))]
88pub struct JsonSnapshot {
89 pub window: u64,
90 pub elapsed: f64,
91 #[serde(skip_serializing_if = "Option::is_none")]
92 pub target_qps: Option<f64>,
93 pub client: ClientStats,
94 pub pubsub: PubsubStats,
95}