1#[cfg(test)]
4mod tests {
5 use crate::rta_aggregators::ExportFormat;
6 use crate::rta_engine::{AlertSeverity, AlertType, AnalyticsConfig, VectorAnalyticsEngine};
7 use std::time::Duration;
8
9 #[test]
10 fn test_analytics_engine_creation() {
11 let config = AnalyticsConfig::default();
12 let engine = VectorAnalyticsEngine::new(config);
13
14 assert!(engine.config.enable_real_time);
15 assert_eq!(engine.config.collection_interval, 1);
16 }
17
18 #[test]
19 fn test_query_recording() {
20 let config = AnalyticsConfig::default();
21 let engine = VectorAnalyticsEngine::new(config);
22
23 let result = engine.record_query_execution(
24 "test_query_1".to_string(),
25 "similarity_search".to_string(),
26 Duration::from_millis(50),
27 10,
28 true,
29 );
30
31 assert!(result.is_ok());
32
33 let metrics = engine.metrics_collector.query_metrics.read();
34 assert_eq!(metrics.total_queries, 1);
35 assert_eq!(metrics.successful_queries, 1);
36 }
37
38 #[test]
39 fn test_alert_creation() {
40 let config = AnalyticsConfig::default();
41 let engine = VectorAnalyticsEngine::new(config);
42
43 let result = engine.create_alert(
44 AlertType::HighLatency,
45 AlertSeverity::Warning,
46 "Test alert message".to_string(),
47 );
48
49 assert!(result.is_ok());
50
51 let current_alerts = engine.performance_monitor.current_alerts.read();
52 assert_eq!(current_alerts.len(), 1);
53 }
54
55 #[test]
56 fn test_metrics_export() {
57 let config = AnalyticsConfig::default();
58 let engine = VectorAnalyticsEngine::new(config);
59
60 let _ = engine.record_query_execution(
62 "test".to_string(),
63 "search".to_string(),
64 Duration::from_millis(25),
65 5,
66 true,
67 );
68
69 let dir = tempfile::tempdir().expect("tempdir");
71 let temp_file = dir.path().join("test_metrics.json");
72 let temp_file = temp_file.display().to_string();
73 let result = engine.export_metrics(ExportFormat::Json, &temp_file);
74 assert!(result.is_ok());
75 }
77}