mirror of
https://github.com/andwati/telecom-platform.git
synced 2026-11-12 06:55:15 +00:00
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:
@@ -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() {
|
||||||
|
|||||||
Reference in New Issue
Block a user