mirror of
https://github.com/rustfs/rustfs.git
synced 2026-01-17 01:30:33 +00:00
117 lines
3.9 KiB
Rust
117 lines
3.9 KiB
Rust
use crate::ObservabilityConfig;
|
|
|
|
/// RustFs configuration
|
|
pub struct RustFsConfig {
|
|
pub observability: ObservabilityConfig,
|
|
}
|
|
|
|
impl RustFsConfig {
|
|
pub fn new() -> Self {
|
|
Self {
|
|
observability: ObservabilityConfig::new(),
|
|
}
|
|
}
|
|
}
|
|
|
|
impl Default for RustFsConfig {
|
|
fn default() -> Self {
|
|
Self::new()
|
|
}
|
|
}
|
|
|
|
#[cfg(test)]
|
|
mod tests {
|
|
use super::*;
|
|
|
|
#[test]
|
|
fn test_rustfs_config_new() {
|
|
let config = RustFsConfig::new();
|
|
|
|
// Verify that observability config is properly initialized
|
|
assert!(!config.observability.sinks.is_empty(), "Observability sinks should not be empty");
|
|
assert!(config.observability.logger.is_some(), "Logger config should be present");
|
|
}
|
|
|
|
#[test]
|
|
fn test_rustfs_config_default() {
|
|
let config = RustFsConfig::default();
|
|
|
|
// Default should be equivalent to new()
|
|
let new_config = RustFsConfig::new();
|
|
|
|
// Compare observability config
|
|
assert_eq!(config.observability.sinks.len(), new_config.observability.sinks.len());
|
|
assert_eq!(config.observability.logger.is_some(), new_config.observability.logger.is_some());
|
|
}
|
|
|
|
#[test]
|
|
fn test_rustfs_config_components_independence() {
|
|
let mut config = RustFsConfig::new();
|
|
|
|
// Modify observability config
|
|
config.observability.sinks.clear();
|
|
|
|
// Create new config to verify independence
|
|
let new_config = RustFsConfig::new();
|
|
assert!(!new_config.observability.sinks.is_empty(), "New config should have default sinks");
|
|
}
|
|
|
|
#[test]
|
|
fn test_rustfs_config_observability_integration() {
|
|
let config = RustFsConfig::new();
|
|
|
|
// Test observability config properties
|
|
assert!(config.observability.otel.endpoint.is_empty() || !config.observability.otel.endpoint.is_empty());
|
|
assert!(config.observability.otel.use_stdout.is_some());
|
|
assert!(config.observability.otel.sample_ratio.is_some());
|
|
assert!(config.observability.otel.meter_interval.is_some());
|
|
assert!(config.observability.otel.service_name.is_some());
|
|
assert!(config.observability.otel.service_version.is_some());
|
|
assert!(config.observability.otel.environment.is_some());
|
|
assert!(config.observability.otel.logger_level.is_some());
|
|
}
|
|
|
|
#[test]
|
|
fn test_rustfs_config_memory_usage() {
|
|
// Test that config doesn't use excessive memory
|
|
let config = RustFsConfig::new();
|
|
|
|
// Basic memory usage checks
|
|
assert!(std::mem::size_of_val(&config) < 10000, "Config should not use excessive memory");
|
|
|
|
// Test that collections are reasonably sized
|
|
assert!(config.observability.sinks.len() < 100, "Sinks collection should be reasonably sized");
|
|
}
|
|
|
|
#[test]
|
|
fn test_rustfs_config_serialization_compatibility() {
|
|
let config = RustFsConfig::new();
|
|
|
|
// Test that observability config can be serialized (it has Serialize trait)
|
|
let observability_json = serde_json::to_string(&config.observability);
|
|
assert!(observability_json.is_ok(), "Observability config should be serializable");
|
|
}
|
|
|
|
#[test]
|
|
fn test_rustfs_config_debug_format() {
|
|
let config = RustFsConfig::new();
|
|
|
|
// Test that observability config has Debug trait
|
|
let observability_debug = format!("{:?}", config.observability);
|
|
assert!(!observability_debug.is_empty(), "Observability config should have debug output");
|
|
assert!(
|
|
observability_debug.contains("ObservabilityConfig"),
|
|
"Debug output should contain type name"
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn test_rustfs_config_clone_behavior() {
|
|
let config = RustFsConfig::new();
|
|
|
|
// Test that observability config can be cloned
|
|
let observability_clone = config.observability.clone();
|
|
assert_eq!(observability_clone.sinks.len(), config.observability.sinks.len());
|
|
}
|
|
}
|