use spiresql::sql::distributed::{DistributedConfig, DistributedError};
#[test]
fn test_distributed_config_defaults() {
let config = DistributedConfig::default();
assert!(config.max_parallel_shards > 0);
assert_eq!(config.max_parallel_shards, 16);
}
#[test]
fn test_distributed_config_custom() {
let config = DistributedConfig {
max_parallel_shards: 32,
};
assert_eq!(config.max_parallel_shards, 32);
}
#[test]
fn test_distributed_config_clone() {
let config = DistributedConfig {
max_parallel_shards: 8,
};
let cloned = config.clone();
assert_eq!(config.max_parallel_shards, cloned.max_parallel_shards);
}
#[test]
fn test_distributed_config_debug() {
let config = DistributedConfig::default();
let debug_str = format!("{:?}", config);
assert!(debug_str.contains("max_parallel_shards"));
}
#[test]
fn test_distributed_error_routing() {
let error = DistributedError::Routing(tonic::Status::not_found("Region not found"));
match error {
DistributedError::Routing(status) => {
assert_eq!(status.code(), tonic::Code::NotFound);
}
_ => panic!("Expected Routing error"),
}
}
#[test]
fn test_distributed_error_grpc() {
let error = DistributedError::Grpc(tonic::Status::unavailable("Service down"));
match error {
DistributedError::Grpc(status) => {
assert_eq!(status.code(), tonic::Code::Unavailable);
}
_ => panic!("Expected Grpc error"),
}
}
#[test]
fn test_distributed_error_no_regions() {
let error = DistributedError::NoRegions;
match error {
DistributedError::NoRegions => {}
_ => panic!("Expected NoRegions error"),
}
}
#[test]
fn test_distributed_error_display() {
let error = DistributedError::Routing(tonic::Status::not_found("Test error"));
let display_str = format!("{}", error);
assert!(display_str.contains("Routing"));
}
#[test]
fn test_distributed_error_connection() {
let boxed_err: Box<dyn std::error::Error + Send + Sync> = Box::new(std::io::Error::new(
std::io::ErrorKind::ConnectionRefused,
"refused",
));
let error = DistributedError::Connection(boxed_err);
match error {
DistributedError::Connection(_) => {}
_ => panic!("Expected Connection error"),
}
}