Skip to main content

do_memory_core/learning/
stats.rs

1//! # Queue Statistics
2//!
3//! Statistics tracking for pattern extraction queue operations.
4
5/// Statistics about queue operations
6#[derive(Debug, Clone, Default)]
7pub struct QueueStats {
8    /// Total episodes enqueued
9    pub total_enqueued: u64,
10    /// Total episodes processed successfully
11    pub total_processed: u64,
12    /// Total episodes that failed processing
13    pub total_failed: u64,
14    /// Current queue size
15    pub current_queue_size: usize,
16    /// Number of active workers
17    pub active_workers: usize,
18}
19
20#[cfg(test)]
21mod tests {
22    use super::*;
23
24    #[test]
25    fn test_default_stats() {
26        let stats = QueueStats::default();
27        assert_eq!(stats.total_enqueued, 0);
28        assert_eq!(stats.total_processed, 0);
29        assert_eq!(stats.total_failed, 0);
30        assert_eq!(stats.current_queue_size, 0);
31        assert_eq!(stats.active_workers, 0);
32    }
33
34    #[test]
35    fn test_stats_clone() {
36        let stats = QueueStats {
37            total_enqueued: 10,
38            total_processed: 8,
39            total_failed: 2,
40            current_queue_size: 5,
41            active_workers: 4,
42        };
43
44        let cloned = stats.clone();
45        assert_eq!(cloned.total_enqueued, 10);
46        assert_eq!(cloned.total_processed, 8);
47        assert_eq!(cloned.total_failed, 2);
48        assert_eq!(cloned.current_queue_size, 5);
49        assert_eq!(cloned.active_workers, 4);
50    }
51}