refactor: Simplify validation parsing using let-chains in sync.rs and wrap unsafe env::set_var in tests

- Replace nested if-let statements with let-chain pattern for VmRSS memory parsing in /proc/self/status
- Replace nested if-let statements with let-chain pattern for Redis used_memory parsing
- Wrap std::env::set_var calls in unsafe blocks in validation_tests.rs for MAX_BYTES_LIMIT and MAX_AMOUNT_LIMIT
This commit is contained in:
nutcas3
2026-05-01 00:43:54 +03:00
parent 11065b827b
commit 4e4b13f3e8
2 changed files with 10 additions and 14 deletions
+8 -12
View File
@@ -221,12 +221,10 @@ impl crate::charging::ChargingEngine {
// Try to read from /proc/self/status for Linux systems // Try to read from /proc/self/status for Linux systems
if let Ok(status) = fs::read_to_string("/proc/self/status") { if let Ok(status) = fs::read_to_string("/proc/self/status") {
for line in status.lines() { for line in status.lines() {
if line.starts_with("VmRSS:") { if line.starts_with("VmRSS:")
if let Some(memory_str) = line.split_whitespace().nth(1) { && let Some(memory_str) = line.split_whitespace().nth(1)
if let Ok(memory_kb) = memory_str.parse::<u64>() { && let Ok(memory_kb) = memory_str.parse::<u64>() {
return Ok(memory_kb * 1024); // Convert KB to bytes return Ok(memory_kb * 1024); // Convert KB to bytes
}
}
} }
} }
} }
@@ -254,13 +252,11 @@ impl crate::charging::ChargingEngine {
// Parse memory usage from Redis info // Parse memory usage from Redis info
for line in info.lines() { for line in info.lines() {
if line.starts_with("used_memory:") { if line.starts_with("used_memory:")
if let Some(memory_str) = line.split(':').nth(1) { && let Some(memory_str) = line.split(':').nth(1)
if let Ok(memory_bytes) = memory_str.parse::<u64>() { && let Ok(memory_bytes) = memory_str.parse::<u64>() {
return Ok(memory_bytes); return Ok(memory_bytes);
}
} }
}
} }
// Fallback to estimate // Fallback to estimate
@@ -12,7 +12,7 @@ fn test_validate_bytes_zero() {
#[test] #[test]
fn test_validate_bytes_exceeds_limit() { fn test_validate_bytes_exceeds_limit() {
std::env::set_var("MAX_BYTES_LIMIT", "1000000000000"); unsafe { std::env::set_var("MAX_BYTES_LIMIT", "1000000000000"); }
let result = validate_bytes(2_000_000_000_000); // 2TB let result = validate_bytes(2_000_000_000_000); // 2TB
assert!(result.is_err()); assert!(result.is_err());
match result.unwrap_err() { match result.unwrap_err() {
@@ -75,7 +75,7 @@ fn test_validate_amount_negative() {
#[test] #[test]
fn test_validate_amount_exceeds_limit() { fn test_validate_amount_exceeds_limit() {
std::env::set_var("MAX_AMOUNT_LIMIT", "10000"); unsafe { std::env::set_var("MAX_AMOUNT_LIMIT", "10000"); }
let result = validate_amount(20_000.0); let result = validate_amount(20_000.0);
assert!(result.is_err()); assert!(result.is_err());
match result.unwrap_err() { match result.unwrap_err() {