use super::super::super::super::*;
#[test]
fn test_f234_inference_phase() {
assert!(!format!("{:?}", InferencePhase::Prefill).is_empty());
assert!(!format!("{:?}", InferencePhase::Decode).is_empty());
assert_eq!(InferencePhase::Prefill, InferencePhase::Prefill);
assert_ne!(InferencePhase::Prefill, InferencePhase::Decode);
let phase = InferencePhase::Prefill;
let cloned = phase;
assert_eq!(phase, cloned);
let phase = InferencePhase::default();
assert_eq!(phase, InferencePhase::Prefill);
}
#[test]
fn test_f235_circuit_breaker_comprehensive() {
use std::time::Duration;
let mut breaker = CircuitBreaker::new(2, Duration::from_millis(50));
assert_eq!(breaker.state(), CircuitState::Closed);
assert!(breaker.allow_request());
breaker.record_failure();
assert_eq!(breaker.state(), CircuitState::Closed);
breaker.record_failure();
assert_eq!(breaker.state(), CircuitState::Open);
assert!(!breaker.allow_request());
std::thread::sleep(Duration::from_millis(60));
assert!(breaker.allow_request()); assert_eq!(breaker.state(), CircuitState::HalfOpen);
breaker.record_success();
assert_eq!(breaker.state(), CircuitState::Closed);
breaker.record_failure();
breaker.record_failure();
breaker.reset();
assert_eq!(breaker.state(), CircuitState::Closed);
let breaker = CircuitBreaker::default();
assert_eq!(breaker.state(), CircuitState::Closed);
}
#[test]
fn test_f236_managed_connection() {
use std::time::Duration;
let mut conn = ManagedConnection::new("test", Duration::from_secs(60), Duration::from_secs(30));
assert!(conn.is_valid());
assert!(!conn.is_expired());
assert!(!conn.is_idle());
assert_eq!(*conn.inner(), "test");
*conn.inner_mut() = "modified";
assert_eq!(*conn.inner(), "modified");
conn.touch();
conn.record_health_failure();
conn.reset_health();
let _age = conn.age();
let _idle = conn.idle_time();
let inner = conn.into_inner();
assert_eq!(inner, "modified");
}
#[test]
fn test_f237_bounded_queue_comprehensive() {
let mut queue: BoundedQueue<i32> = BoundedQueue::new(3);
assert!(queue.is_empty());
assert!(!queue.is_full());
assert_eq!(queue.capacity(), 3);
assert_eq!(queue.remaining(), 3);
assert!(queue.try_push(1).is_ok());
assert!(queue.try_push(2).is_ok());
assert_eq!(queue.len(), 2);
assert_eq!(queue.remaining(), 1);
assert_eq!(queue.peek(), Some(&1));
assert!(queue.try_push(3).is_ok());
assert!(queue.is_full());
assert_eq!(queue.try_push(4), Err(4));
assert_eq!(queue.pop(), Some(1));
assert!(!queue.is_full());
queue.clear();
assert!(queue.is_empty());
let queue: BoundedQueue<i32> = BoundedQueue::default();
assert!(queue.is_empty());
}
#[test]
fn test_f238_strategic_buffer() {
let mut buffer = StrategicBuffer::new(ReserveStrategy::Double);
buffer.write(&[1, 2, 3]);
assert_eq!(buffer.len(), 3);
assert!(!buffer.is_empty());
assert_eq!(buffer.as_slice(), &[1, 2, 3]);
assert!(buffer.capacity() >= 3);
buffer.reserve(100);
assert!(buffer.capacity() >= 103);
buffer.clear();
assert!(buffer.is_empty());
let buffer = StrategicBuffer::with_capacity(100, ReserveStrategy::Grow50);
assert!(buffer.capacity() >= 100);
let buffer = StrategicBuffer::default();
assert!(buffer.is_empty());
let _buffer = StrategicBuffer::new(ReserveStrategy::Exact);
let _buffer = StrategicBuffer::new(ReserveStrategy::PowerOfTwo);
}
#[test]
fn test_f239_graph_reuse_counter() {
let mut counter = GraphReuseCounter::new(5);
assert!(!counter.is_hot());
assert!(!counter.should_cache());
assert_eq!(counter.count(), 0);
counter.record_use();
counter.record_use();
counter.record_use();
assert!(!counter.is_hot());
assert_eq!(counter.count(), 3);
counter.record_use();
counter.record_use();
assert!(counter.is_hot());
assert!(counter.should_cache());
counter.reset();
assert!(!counter.is_hot());
assert_eq!(counter.count(), 0);
}
#[test]
fn test_f240_kv_cache() {
let mut mgr = KvCacheManager::new(3);
assert_eq!(mgr.capacity(), 3);
assert_eq!(mgr.valid_count(), 0);
let idx0 = mgr.allocate(0, 100, 0, 0).unwrap();
let idx1 = mgr.allocate(1, 101, 0, 0).unwrap();
assert_eq!(mgr.valid_count(), 2);
let slot = mgr.access(idx0).unwrap();
assert_eq!(slot.token_id, 100);
mgr.step();
let _evicted = mgr.evict_lru();
assert!(mgr.access(idx1).is_some());
}
#[test]
fn test_f241_sequential_batch_orderer() {
let mut orderer = SequentialBatchOrderer::new(3);
assert!(!orderer.is_done());
assert_eq!(orderer.remaining(), 3);
assert_eq!(orderer.next_batch(), Some(0));
assert_eq!(orderer.next_batch(), Some(1));
assert_eq!(orderer.next_batch(), Some(2));
assert_eq!(orderer.next_batch(), None);
assert!(orderer.is_done());
orderer.reset();
assert!(!orderer.is_done());
assert_eq!(orderer.remaining(), 3);
let mut orderer = SequentialBatchOrderer::reversed(3);
assert_eq!(orderer.next_batch(), Some(2));
assert_eq!(orderer.next_batch(), Some(1));
assert_eq!(orderer.next_batch(), Some(0));
let mut orderer = SequentialBatchOrderer::interleaved(4);
let batches: Vec<_> = orderer.by_ref().collect();
assert_eq!(batches.len(), 4);
let orderer = SequentialBatchOrderer::new(3);
let batches: Vec<_> = orderer.collect();
assert_eq!(batches, vec![0, 1, 2]);
}
#[test]
fn test_f242_reserve_capacity() {
assert_eq!(reserve_capacity(10, ReserveStrategy::Exact), 10);
let cap = reserve_capacity(10, ReserveStrategy::Grow50);
assert!(cap >= 15);
let cap = reserve_capacity(10, ReserveStrategy::Double);
assert_eq!(cap, 20);
let cap = reserve_capacity(10, ReserveStrategy::PowerOfTwo);
assert_eq!(cap, 16); }
#[test]
fn test_f243_serve_limits() {
let limits = ServeLimits::default();
assert!(limits.max_request_size > 0);
assert!(limits.max_headers > 0);
assert!(limits.max_header_size > 0);
assert!(limits.max_pipelined > 0);
assert!(limits.max_connections > 0);
let limits = ServeLimits {
max_request_size: 1024,
max_headers: 10,
max_header_size: 4096,
keep_alive_timeout: std::time::Duration::from_secs(30),
client_timeout: std::time::Duration::from_secs(60),
max_pipelined: 5,
max_connections: 100,
};
assert_eq!(limits.max_request_size, 1024);
}
#[test]
fn test_f244_limit_error_display() {
let err = LimitError::BodyTooLarge { size: 2000, max: 1000 };
let msg = format!("{}", err);
assert!(msg.contains("2000"));
let err = LimitError::TooManyHeaders { count: 50, max: 10 };
let msg = format!("{}", err);
assert!(msg.contains("50"));
let err = LimitError::ConnectionLimitReached { current: 200, max: 100 };
let msg = format!("{}", err);
assert!(msg.contains("200"));
let err = LimitError::HeaderTooLarge { size: 5000, max: 1000 };
let msg = format!("{}", err);
assert!(msg.contains("5000"));
let err = LimitError::TooManyPipelined { count: 20, max: 10 };
let msg = format!("{}", err);
assert!(msg.contains("20"));
}
#[test]
fn test_f245_graceful_shutdown() {
use std::time::Duration;
let shutdown = GracefulShutdown::new(Duration::from_millis(100));
assert!(!shutdown.is_shutdown_requested());
assert_eq!(shutdown.active_count(), 0);
let guard = shutdown.register();
assert!(guard.is_some());
assert_eq!(shutdown.active_count(), 1);
drop(guard);
assert_eq!(shutdown.active_count(), 0);
let result = shutdown.shutdown();
assert!(matches!(result, ShutdownResult::Clean));
assert!(shutdown.is_shutdown_requested());
let guard = shutdown.register();
assert!(guard.is_none());
shutdown.reset();
assert!(!shutdown.is_shutdown_requested());
let shutdown = GracefulShutdown::default();
assert!(!shutdown.is_shutdown_requested());
}
#[test]
fn test_f246_resource_pool() {
let pool: ResourcePool<i32> = ResourcePool::new(3, || 42);
assert_eq!(pool.max_resources(), 3);
assert_eq!(pool.available(), 3);
let resource = pool.try_acquire();
assert!(resource.is_some());
assert_eq!(pool.available(), 2);
let mut resource = resource.unwrap();
assert_eq!(*resource, 42);
*resource = 100;
assert_eq!(*resource, 100);
drop(resource);
assert_eq!(pool.available(), 3);
let pool: ResourcePool<i32> = ResourcePool::new(2, || 0);
let debug = format!("{:?}", pool);
assert!(debug.contains("ResourcePool"));
}