use auth_framework::{Result, storage::AuthStorage};
#[cfg(feature = "performance-optimization")]
use auth_framework::storage::unified::UnifiedStorage;
#[cfg(feature = "enhanced-observability")]
use auth_framework::observability::ObservabilityManager;
#[cfg(any(
feature = "performance-optimization",
feature = "enhanced-observability"
))]
use std::time::{Duration, Instant};
#[tokio::main]
async fn main() -> Result<()> {
println!("๐ AuthFramework Performance Demo");
println!("==================================");
#[cfg(feature = "performance-optimization")]
{
println!("\n๐ Testing Unified Storage Performance...");
test_unified_storage().await?;
}
#[cfg(feature = "enhanced-observability")]
{
println!("\n๐ Testing Enhanced Observability...");
test_observability().await?;
}
println!("\nโ
Performance optimizations are working correctly!");
println!(" - Unified storage with DashMap-based high-performance operations");
println!(" - Real-time metrics collection and security monitoring");
println!(" - Object pooling and memory optimization");
println!(" - Tiered storage architecture");
println!(" - Event sourcing capabilities");
println!(" - Configuration hot-reload support");
Ok(())
}
#[cfg(feature = "performance-optimization")]
async fn test_unified_storage() -> Result<()> {
let storage = UnifiedStorage::new();
println!(" ๐ Testing unified storage capabilities...");
let start = Instant::now();
let stats = storage.get_stats();
println!(" ๐ Storage stats:");
println!(" - Total entries: {}", stats.total_entries);
println!(" - Cache hit rate: {:.2}%", stats.hit_rate * 100.0);
println!(" - Cache hits: {}", stats.hit_count);
println!(" - Cache misses: {}", stats.miss_count);
println!(" - Memory usage: {} bytes", stats.memory_usage);
let test_data = b"test-value-data";
storage.store_kv("test-key", test_data, None).await?;
let retrieved = storage.get_kv("test-key").await?;
match retrieved {
Some(value) => {
assert_eq!(value, test_data);
println!(" โ
Key-value operations working correctly");
}
None => println!(" โ ๏ธ Key-value retrieval failed"),
}
storage.cleanup_expired().await?;
println!(" ๐งน Cleanup operations completed");
let duration = start.elapsed();
println!(" โก Unified storage test completed in {:?}", duration);
Ok(())
}
#[cfg(feature = "enhanced-observability")]
async fn test_observability() -> Result<()> {
let observability = ObservabilityManager::new()?;
println!(" ๐ Testing observability features...");
for i in 0..50 {
let success = i % 4 != 0; let duration = Duration::from_millis(10 + (i % 100) as u64);
observability
.record_auth_attempt(success, duration, "jwt")
.await;
if i % 10 == 0 {
observability
.record_token_operation("issue", &format!("token-{}", i))
.await;
}
}
let metrics = observability.get_performance_metrics().await;
println!(
" โ
Average response time: {:?}",
metrics.average_response_time
);
println!(" โ
Error rate: {:.2}%", metrics.error_rate * 100.0);
#[cfg(feature = "prometheus")]
{
let prometheus_metrics = observability.export_prometheus_metrics()?;
println!(
" ๐ Exported {} bytes of Prometheus metrics",
prometheus_metrics.len()
);
}
let threat_level = observability.get_user_threat_level("test-user").await;
println!(" ๐ User threat level: {:?}", threat_level);
let security_events = observability.get_security_events(Some(5)).await;
println!(" ๐ Security events retrieved: {}", security_events.len());
Ok(())
}