From 8eb0a1091ad7c9293504f3e927c031fc157ba6ff Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Thu, 20 Jan 2022 23:22:48 +0000 Subject: [PATCH] system-monitor-service: support percentages from bigger numbers (#22597) (cherry picked from commit cca3dbc76d60d1bace70163d6219552e52e659b9) Co-authored-by: Trent Nelson --- core/src/system_monitor_service.rs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/core/src/system_monitor_service.rs b/core/src/system_monitor_service.rs index 8ce5028139..688292ecbc 100644 --- a/core/src/system_monitor_service.rs +++ b/core/src/system_monitor_service.rs @@ -175,11 +175,11 @@ impl SystemMonitorService { ); } - fn calc_percent(numerator: u64, denom: u64) -> f32 { + fn calc_percent(numerator: u64, denom: u64) -> f64 { if denom == 0 { 0.0 } else { - (numerator as f32 / denom as f32) * 100.0 + (numerator as f64 / denom as f64) * 100.0 } } @@ -273,4 +273,11 @@ UdpLite: 0 0 0 0 0 0 0 0" as &[u8]; let stats = parse_udp_stats(&mut mock_snmp); assert!(stats.is_err()); } + + #[test] + fn test_calc_percent() { + assert!(SystemMonitorService::calc_percent(99, 100) < 100.0); + let one_tb_as_kb = (1u64 << 40) >> 10; + assert!(SystemMonitorService::calc_percent(one_tb_as_kb - 1, one_tb_as_kb) < 100.0); + } }