sz-orm-observability 5.1.0

SZ-ORM 鍙娴嬫€фā鍧楋細Prometheus exporter (TcpListener) + SLO 鐕冪儳锟?+ Grafana 浠〃鐩樻ā鏉匡紱OTLP 瀵煎嚭璇蜂娇锟?sz-orm-tracing 锟?otlp feature
Documentation
use sz_orm_observability::*;

#[test]
fn test_metrics_registry_new() {
    let registry = MetricsRegistry::new();
    let _output = registry.render();
}

#[test]
fn test_counter_inc() {
    let registry = MetricsRegistry::new();
    let counter = registry.register_counter("test_counter", "A test counter");
    counter.inc();
    counter.inc();
    counter.inc();
    let output = registry.render();
    assert!(output.contains("test_counter"));
}

#[test]
fn test_gauge_set() {
    let registry = MetricsRegistry::new();
    let gauge = registry.register_gauge("test_gauge", "A test gauge");
    gauge.set(42.0);
    let output = registry.render();
    assert!(output.contains("test_gauge"));
}

#[test]
fn test_histogram_observe() {
    let registry = MetricsRegistry::new();
    let histogram =
        registry.register_histogram("test_histogram", "A test histogram", vec![0.1, 1.0, 10.0]);
    histogram.observe(0.5);
    histogram.observe(5.0);
    let output = registry.render();
    assert!(output.contains("test_histogram"));
}

#[test]
fn test_counter_inc_by() {
    let registry = MetricsRegistry::new();
    let counter = registry.register_counter("add_counter", "test");
    counter.inc_by(10.0);
    let output = registry.render();
    assert!(output.contains("add_counter"));
}

#[test]
fn test_gauge_inc_dec() {
    let registry = MetricsRegistry::new();
    let gauge = registry.register_gauge("inc_gauge", "test");
    gauge.inc();
    gauge.dec_by(1.0);
    let output = registry.render();
    assert!(output.contains("inc_gauge"));
}

#[test]
fn test_multiple_metrics() {
    let registry = MetricsRegistry::new();
    let c1 = registry.register_counter("counter1", "c1");
    let c2 = registry.register_counter("counter2", "c2");
    c1.inc();
    c2.inc();
    let output = registry.render();
    assert!(output.contains("counter1"));
    assert!(output.contains("counter2"));
}

#[test]
fn test_slo_config_default() {
    let config = SloConfig::default();
    let _monitor = SloMonitor::new(config);
}