| 1231 | |
| 1232 | #[test] |
| 1233 | fn request_summary() { |
| 1234 | // Test empty request list |
| 1235 | let mut requests = Vec::new(); |
| 1236 | assert_snapshot!(RequestSummaries::new(&requests), @r" |
| 1237 | +-----------+--------+-----+-----+-----+-----+-------+ |
| 1238 | | Operation | Metric | min | max | avg | sum | count | |
| 1239 | +-----------+--------+-----+-----+-----+-----+-------+ |
| 1240 | +-----------+--------+-----+-----+-----+-----+-------+ |
| 1241 | "); |
| 1242 | |
| 1243 | requests.push(RequestDetails { |
| 1244 | op: Operation::Get, |
| 1245 | path: Path::from("test1"), |
| 1246 | timestamp: chrono::DateTime::from_timestamp(0, 0).unwrap(), |
| 1247 | duration_nanos: Arc::new(AtomicU64::new( |
| 1248 | Duration::from_secs(5).as_nanos() as u64 |
| 1249 | )), |
| 1250 | size: Some(100), |
| 1251 | range: None, |
| 1252 | extra_display: None, |
| 1253 | }); |
| 1254 | |
| 1255 | assert_snapshot!(RequestSummaries::new(&requests), @r" |
| 1256 | +-----------+----------+-----------+-----------+-----------+-----------+-------+ |
| 1257 | | Operation | Metric | min | max | avg | sum | count | |
| 1258 | +-----------+----------+-----------+-----------+-----------+-----------+-------+ |
| 1259 | | Get | duration | 5.000000s | 5.000000s | 5.000000s | 5.000000s | 1 | |
| 1260 | | Get | size | 100 B | 100 B | 100 B | 100 B | 1 | |
| 1261 | +-----------+----------+-----------+-----------+-----------+-----------+-------+ |
| 1262 | "); |
| 1263 | |
| 1264 | // Add more Get requests to test aggregation |
| 1265 | requests.push(RequestDetails { |
| 1266 | op: Operation::Get, |
| 1267 | path: Path::from("test2"), |
| 1268 | timestamp: chrono::DateTime::from_timestamp(1, 0).unwrap(), |
| 1269 | duration_nanos: Arc::new(AtomicU64::new( |
| 1270 | Duration::from_secs(8).as_nanos() as u64 |
| 1271 | )), |
| 1272 | size: Some(150), |
| 1273 | range: None, |
| 1274 | extra_display: None, |
| 1275 | }); |
| 1276 | requests.push(RequestDetails { |
| 1277 | op: Operation::Get, |
| 1278 | path: Path::from("test3"), |
| 1279 | timestamp: chrono::DateTime::from_timestamp(2, 0).unwrap(), |
| 1280 | duration_nanos: Arc::new(AtomicU64::new( |
| 1281 | Duration::from_secs(2).as_nanos() as u64 |
| 1282 | )), |
| 1283 | size: Some(50), |
| 1284 | range: None, |
| 1285 | extra_display: None, |
| 1286 | }); |
| 1287 | assert_snapshot!(RequestSummaries::new(&requests), @r" |
| 1288 | +-----------+----------+-----------+-----------+-----------+------------+-------+ |
| 1289 | | Operation | Metric | min | max | avg | sum | count | |
| 1290 | +-----------+----------+-----------+-----------+-----------+------------+-------+ |