Files
foxhunt/services/api_gateway/load_tests/src/config.rs
jgrusewski 030a15ee05 🔧 Emergency Fix: Resolve catastrophic _i32 suffix corruption (463→0 errors)
- Fixed systematic array indexing corruption: [0_i32] → [0]
- Fixed numeric literal suffixes across 835 files
- Fixed iterator patterns on RwLockReadGuard (.iter() required)
- Fixed float type annotations (365.25_f64 for sqrt)
- Fixed missing semicolons in position manager
- Fixed reference dereferencing in data loader

Root cause: Mass refactoring incorrectly added _i32 suffixes to array indices
Impact: Complete compilation failure (463 errors)
Resolution: Automated regex + targeted fixes
Result: 100% compilation success (0 errors)

Validated: cargo check --workspace passes
Ready for: Production deployment
2025-10-10 23:05:26 +02:00

101 lines
2.7 KiB
Rust

use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct LoadTestConfig {
pub gateway_url: String,
pub prometheus_url: Option<String>,
pub auth: AuthConfig,
pub scenarios: ScenariosConfig,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AuthConfig {
pub jwt_secret: String,
pub username: String,
pub user_id: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ScenariosConfig {
pub normal_load: NormalLoadConfig,
pub spike_load: SpikeLoadConfig,
pub sustained_load: SustainedLoadConfig,
pub stress_test: StressTestConfig,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct NormalLoadConfig {
pub num_clients: usize,
pub duration_secs: u64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SpikeLoadConfig {
pub target_clients: usize,
pub ramp_up_secs: u64,
pub sustain_secs: u64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SustainedLoadConfig {
pub num_clients: usize,
pub duration_secs: u64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct StressTestConfig {
pub initial_clients: usize,
pub increment: usize,
pub increment_interval_secs: u64,
pub max_p99_latency_ms: f64,
pub max_error_rate_pct: f64,
}
impl Default for LoadTestConfig {
fn default() -> Self {
Self {
gateway_url: "http://localhost:50050".to_string(),
prometheus_url: Some("http://localhost:9090".to_string()),
auth: AuthConfig::default(),
scenarios: ScenariosConfig::default(),
}
}
}
impl Default for AuthConfig {
fn default() -> Self {
Self {
jwt_secret: "test-secret-key-for-load-testing".to_string(),
username: "load-test-user".to_string(),
user_id: "load-test-user-id".to_string(),
}
}
}
impl Default for ScenariosConfig {
fn default() -> Self {
Self {
normal_load: NormalLoadConfig {
num_clients: 1000_usize,
duration_secs: 60_u64,
},
spike_load: SpikeLoadConfig {
target_clients: 10000_usize,
ramp_up_secs: 10_u64,
sustain_secs: 60_u64,
},
sustained_load: SustainedLoadConfig {
num_clients: 100_usize,
duration_secs: 86400_u64, // 24 hours
},
stress_test: StressTestConfig {
initial_clients: 100_usize,
increment: 100_usize,
increment_interval_secs: 60_u64,
max_p99_latency_ms: 50.0,
max_error_rate_pct: 5.0,
},
}
}
}