use serde::{Deserialize, Serialize};
use std::collections::HashMap;
use std::time::{Duration, SystemTime};
use super::analyzers::*;
use super::benchmarks::*;
use super::collectors::*;
use super::metrics::*;
pub enum ExportFormat {
JSON,
CSV,
Binary,
HTML,
PDF,
}
#[derive(Debug, Clone)]
pub struct RealtimeMetrics {
pub current_metrics: Vec<PerformanceMetric>,
pub gate_performance: HashMap<String, GateProfile>,
pub memory_usage: Option<MemorySnapshot>,
pub resource_utilization: ResourceUtilization,
pub timestamp: SystemTime,
}
#[derive(Debug, Clone)]
pub struct ResourceUtilization {
pub cpu: f64,
pub memory: f64,
pub gpu: Option<f64>,
pub io: f64,
pub network: f64,
}
#[derive(Debug, Clone)]
pub struct ProfilingReport {
pub session_id: String,
pub start_time: SystemTime,
pub end_time: SystemTime,
pub total_duration: Duration,
pub performance_summary: PerformanceSummary,
pub detailed_analysis: DetailedAnalysis,
pub metadata: HashMap<String, String>,
}
#[derive(Debug, Clone)]
pub struct PerformanceSummary {
pub overall_score: f64,
pub gate_performance: HashMap<String, f64>,
pub memory_efficiency: f64,
pub resource_utilization: f64,
pub bottlenecks: Vec<String>,
pub recommendations: Vec<String>,
}
#[derive(Debug, Clone)]
pub struct DetailedAnalysis {
pub gate_analysis: HashMap<String, GateAnalysisReport>,
pub memory_analysis: MemoryAnalysisReport,
pub resource_analysis: ResourceAnalysisReport,
pub anomaly_detection: AnomalyDetectionReport,
pub regression_analysis: RegressionReport,
}
#[derive(Debug, Clone)]
pub struct GateAnalysisReport {
pub performance_metrics: HashMap<String, f64>,
pub timing_analysis: TimingAnalysisReport,
pub resource_analysis: GateResourceAnalysis,
pub error_analysis: GateErrorAnalysis,
}
#[derive(Debug, Clone)]
pub struct TimingAnalysisReport {
pub avg_execution_time: Duration,
pub timing_variance: f64,
pub timing_trends: TrendDirection,
pub timing_anomalies: Vec<String>,
}
#[derive(Debug, Clone)]
pub struct GateResourceAnalysis {
pub cpu_patterns: HashMap<String, f64>,
pub memory_patterns: HashMap<String, f64>,
pub io_patterns: HashMap<String, f64>,
}
#[derive(Debug, Clone)]
pub struct GateErrorAnalysis {
pub error_rates: HashMap<String, f64>,
pub error_patterns: Vec<String>,
pub error_correlations: HashMap<String, f64>,
}
#[derive(Debug, Clone)]
pub struct MemoryAnalysisReport {
pub peak_usage: usize,
pub average_usage: f64,
pub efficiency_score: f64,
pub leak_detection: Vec<String>,
pub optimization_opportunities: Vec<String>,
}
#[derive(Debug, Clone)]
pub struct ResourceAnalysisReport {
pub cpu_analysis: CpuAnalysisReport,
pub memory_analysis: MemoryResourceAnalysis,
pub io_analysis: IoAnalysisReport,
pub network_analysis: NetworkAnalysisReport,
}
#[derive(Debug, Clone)]
pub struct CpuAnalysisReport {
pub average_utilization: f64,
pub peak_utilization: f64,
pub cache_efficiency: f64,
pub optimization_opportunities: Vec<String>,
}
#[derive(Debug, Clone)]
pub struct MemoryResourceAnalysis {
pub utilization_patterns: HashMap<String, f64>,
pub allocation_efficiency: f64,
pub fragmentation_analysis: f64,
}
#[derive(Debug, Clone)]
pub struct IoAnalysisReport {
pub throughput_analysis: ThroughputAnalysisReport,
pub latency_analysis: LatencyAnalysisReport,
}
#[derive(Debug, Clone)]
pub struct ThroughputAnalysisReport {
pub read_throughput: f64,
pub write_throughput: f64,
pub throughput_efficiency: f64,
}
#[derive(Debug, Clone)]
pub struct LatencyAnalysisReport {
pub average_latency: Duration,
pub latency_distribution: HashMap<String, f64>,
pub latency_trends: TrendDirection,
}
#[derive(Debug, Clone)]
pub struct NetworkAnalysisReport {
pub bandwidth_efficiency: f64,
pub connection_analysis: ConnectionAnalysisReport,
pub latency_characteristics: Duration,
}
#[derive(Debug, Clone)]
pub struct ConnectionAnalysisReport {
pub connection_reliability: f64,
pub connection_efficiency: f64,
}
#[derive(Debug, Clone)]
pub struct AnomalyDetectionReport {
pub detected_anomalies: Vec<PerformanceAnomaly>,
pub anomaly_patterns: Vec<String>,
pub severity_distribution: HashMap<AnomySeverity, usize>,
}
#[derive(Debug, Clone)]
pub struct RegressionReport {
pub detected_regressions: Vec<PerformanceRegression>,
pub regression_trends: HashMap<String, TrendDirection>,
pub impact_assessment: HashMap<String, f64>,
}
#[derive(Debug, Clone)]
pub struct PerformanceData {
pub metrics: HashMap<String, f64>,
pub system_state: SystemState,
pub environment: EnvironmentInfo,
}
#[derive(Debug, Clone)]
pub struct PerformanceAnalysisReport {
pub analysis_timestamp: SystemTime,
pub overall_performance_score: f64,
pub performance_trends: HashMap<String, TrendDirection>,
pub bottleneck_analysis: BottleneckAnalysisReport,
pub optimization_recommendations: Vec<String>,
pub predictive_analysis: PredictiveAnalysisReport,
pub statistical_analysis: StatisticalAnalysisReport,
}
#[derive(Debug, Clone)]
pub struct BottleneckAnalysisReport {
pub identified_bottlenecks: Vec<ResourceBottleneck>,
pub bottleneck_impact: HashMap<String, f64>,
pub mitigation_strategies: Vec<String>,
}
#[derive(Debug, Clone)]
pub struct PredictiveAnalysisReport {
pub performance_forecasts: HashMap<String, PredictionResult>,
pub capacity_planning: CapacityPlanningReport,
pub risk_assessment: RiskAssessmentReport,
}
#[derive(Debug, Clone)]
pub struct CapacityPlanningReport {
pub current_capacity: f64,
pub projected_capacity_needs: HashMap<String, f64>,
pub scaling_recommendations: Vec<String>,
}
#[derive(Debug, Clone)]
pub struct RiskAssessmentReport {
pub performance_risks: Vec<String>,
pub risk_mitigation: Vec<String>,
}
#[derive(Debug, Clone)]
pub struct StatisticalAnalysisReport {
pub descriptive_statistics: HashMap<String, f64>,
pub correlation_analysis: HashMap<String, f64>,
pub hypothesis_tests: HashMap<String, f64>,
}